aboutsummaryrefslogtreecommitdiff
path: root/usr.bin
diff options
context:
space:
mode:
authorMax Khon <fjoe@FreeBSD.org>2005-11-30 20:38:03 +0000
committerMax Khon <fjoe@FreeBSD.org>2005-11-30 20:38:03 +0000
commit7d81571413ca100305b778a1e6c6a1992dfe7515 (patch)
treef75a312081b6cefd6f373cc2f083927e1093552d /usr.bin
parentf219c9d3d33babf9cb8d4ec26f284fa8155e3ac7 (diff)
downloadsrc-7d81571413ca100305b778a1e6c6a1992dfe7515.tar.gz
src-7d81571413ca100305b778a1e6c6a1992dfe7515.zip
- match_var: do not address memory at invalid address (`len' can be greater
than strlen(var) + 1) - ReadMakeFile: prevent `fname' memory leak - ReadMakeFile: prevent double free (caused by double fclose) -- ParsePopInput() closes input file Reviewed by: harti
Notes
Notes: svn path=/head/; revision=152969
Diffstat (limited to 'usr.bin')
-rw-r--r--usr.bin/make/main.c6
-rw-r--r--usr.bin/make/var.c2
2 files changed, 5 insertions, 3 deletions
diff --git a/usr.bin/make/main.c b/usr.bin/make/main.c
index 4ee3a8957655..706829cab937 100644
--- a/usr.bin/make/main.c
+++ b/usr.bin/make/main.c
@@ -298,8 +298,10 @@ ReadMakefile(const char p[])
name = Path_FindFile(fname, &parseIncPath);
if (!name)
name = Path_FindFile(fname, &sysIncPath);
- if (!name || !(stream = fopen(name, "r")))
+ if (!name || !(stream = fopen(name, "r"))) {
+ free(fname);
return (FALSE);
+ }
MAKEFILE = fname = name;
/*
* set the MAKEFILE variable desired by System V fans -- the
@@ -310,8 +312,8 @@ found:
if (setMAKEFILE)
Var_SetGlobal("MAKEFILE", MAKEFILE);
Parse_File(fname, stream);
- fclose(stream);
}
+ free(fname);
return (TRUE);
}
diff --git a/usr.bin/make/var.c b/usr.bin/make/var.c
index 9844e1650050..ff1bf094dd3d 100644
--- a/usr.bin/make/var.c
+++ b/usr.bin/make/var.c
@@ -2246,7 +2246,7 @@ match_var(const char str[], const char var[])
str[0] == CLOSE_BRACE) {
len = str - (start + 2);
- if (var[len] == '\0' && strncmp(var, start + 2, len) == 0) {
+ if (strncmp(var, start + 2, len) == 0 && var[len] == '\0') {
return (0); /* match */
} else {
/*