diff options
author | truckman <truckman@FreeBSD.org> | 2016-05-16 04:39:16 +0000 |
---|---|---|
committer | truckman <truckman@FreeBSD.org> | 2016-05-16 04:39:16 +0000 |
commit | 178e19d132e1d8b19d806afcc31f5d904edafd98 (patch) | |
tree | 9b0332c6d1c1b20344e80f316b3b4d30e27b6fd0 | |
parent | 9a6b37a52effc5da8adb38a423c513e38eedd4b0 (diff) | |
download | FreeBSD-src-178e19d132e1d8b19d806afcc31f5d904edafd98.zip FreeBSD-src-178e19d132e1d8b19d806afcc31f5d904edafd98.tar.gz |
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) { |