summaryrefslogtreecommitdiffstats
path: root/usr.bin
diff options
context:
space:
mode:
authorfjoe <fjoe@FreeBSD.org>2005-11-30 20:38:03 +0000
committerfjoe <fjoe@FreeBSD.org>2005-11-30 20:38:03 +0000
commitf243cd906e715a43fad19bdf09a9458e0b0b6509 (patch)
treef75a312081b6cefd6f373cc2f083927e1093552d /usr.bin
parentef3f2fcd849beabec9e9e9cbb5874f477998babc (diff)
downloadFreeBSD-src-f243cd906e715a43fad19bdf09a9458e0b0b6509.zip
FreeBSD-src-f243cd906e715a43fad19bdf09a9458e0b0b6509.tar.gz
- 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
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 4ee3a89..706829c 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 9844e16..ff1bf09 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 {
/*
OpenPOWER on IntegriCloud