[geany/geany] 000bd8: Use g_str_has_prefix to prevent invalid memory reads in find_shebang()
Nick Treleaven
git-noreply at xxxxx
Wed Apr 25 14:47:49 UTC 2012
Branch: refs/heads/master
Author: Nick Treleaven <nick.treleaven at btinternet.com>
Committer: Nick Treleaven <nick.treleaven at btinternet.com>
Date: Wed, 25 Apr 2012 14:47:49
Commit: 000bd8547cb349afc50318fd3856df6cfafad4a8
https://github.com/geany/geany/commit/000bd8547cb349afc50318fd3856df6cfafad4a8
Log Message:
-----------
Use g_str_has_prefix to prevent invalid memory reads in find_shebang()
Modified Paths:
--------------
src/filetypes.c
Modified: src/filetypes.c
10 files changed, 4 insertions(+), 6 deletions(-)
===================================================================
@@ -914,7 +914,7 @@ static GeanyFiletype *find_shebang(const gchar *utf8_filename, const gchar *line
gchar *basename_interpreter = tmp;
guint i;
- if (strncmp(tmp, "env ", 4) == 0 && strlen(tmp) > 4)
+ if (g_str_has_prefix(tmp, "env "))
{ /* skip "env" and read the following interpreter */
basename_interpreter += 4;
}
@@ -924,11 +924,10 @@ static GeanyFiletype *find_shebang(const gchar *utf8_filename, const gchar *line
if (g_str_has_prefix(basename_interpreter, intepreter_map[i].name))
ft = filetypes[intepreter_map[i].filetype];
}
-
g_free(tmp);
}
/* detect HTML files */
- if (strncmp(line, "<!DOCTYPE html", 14) == 0 || strncmp(line, "<html", 5) == 0)
+ if (g_str_has_prefix(line, "<!DOCTYPE html") || g_str_has_prefix(line, "<html"))
{
/* PHP, Perl and Python files might also start with <html, so detect them based on filename
* extension and use the detected filetype, else assume HTML */
@@ -939,7 +938,7 @@ static GeanyFiletype *find_shebang(const gchar *utf8_filename, const gchar *line
}
}
/* detect XML files */
- else if (utf8_filename && strncmp(line, "<?xml", 5) == 0)
+ else if (utf8_filename && g_str_has_prefix(line, "<?xml"))
{
/* HTML and DocBook files might also start with <?xml, so detect them based on filename
* extension and use the detected filetype, else assume XML */
@@ -951,11 +950,10 @@ static GeanyFiletype *find_shebang(const gchar *utf8_filename, const gchar *line
ft = filetypes[GEANY_FILETYPES_XML];
}
}
- else if (strncmp(line, "<?php", 5) == 0)
+ else if (g_str_has_prefix(line, "<?php"))
{
ft = filetypes[GEANY_FILETYPES_PHP];
}
-
return ft;
}
@@ Diff output truncated at 100000 characters. @@
--------------
This E-Mail was brought to you by github_commit_mail.py (Source: TBD).
More information about the Commits
mailing list