diff options
author | truckman <truckman@FreeBSD.org> | 2016-05-23 04:47:24 +0000 |
---|---|---|
committer | truckman <truckman@FreeBSD.org> | 2016-05-23 04:47:24 +0000 |
commit | 4cff368a1f829764bd94370c7edf16a4b7528036 (patch) | |
tree | 46797a5e5f11c30fa5e89861eba909991aa6a98c | |
parent | 00696f008cdaeffee0ad27318ec3df1b9ded92b9 (diff) | |
download | FreeBSD-src-4cff368a1f829764bd94370c7edf16a4b7528036.zip FreeBSD-src-4cff368a1f829764bd94370c7edf16a4b7528036.tar.gz |
MFC r299893
Don't free fnamebuf before we calling cfgfile_add(). This changes a
use-after-free error into a minor memory leak.
Reported by: Coverity
CID: 1006084
-rw-r--r-- | usr.sbin/config/lang.l | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/usr.sbin/config/lang.l b/usr.sbin/config/lang.l index 14fa7da..a13d1eb 100644 --- a/usr.sbin/config/lang.l +++ b/usr.sbin/config/lang.l @@ -267,7 +267,8 @@ include(const char *fname, int ateof) asprintf(&fnamebuf, "../../conf/%s", fname); if (fnamebuf != NULL) { fp = fopen(fnamebuf, "r"); - free(fnamebuf); + if (fp == NULL) + free(fnamebuf); } } if (fp == NULL) { @@ -275,10 +276,10 @@ include(const char *fname, int ateof) asprintf(&fnamebuf, "%s/%s", ipath->path, fname); if (fnamebuf != NULL) { fp = fopen(fnamebuf, "r"); - free(fnamebuf); } if (fp != NULL) break; + free(fnamebuf); } } if (fp == NULL) { |