summaryrefslogtreecommitdiffstats
path: root/usr.bin/grep
diff options
context:
space:
mode:
authorkevans <kevans@FreeBSD.org>2017-08-16 13:06:26 +0000
committerkevans <kevans@FreeBSD.org>2017-08-16 13:06:26 +0000
commit3c5634d1b9ae20b0a99db710b23f5bc2c9fda9d4 (patch)
tree93b2bc3deb4714719513f43cbab7c6a9cf4be33f /usr.bin/grep
parentd3f829dcedd1db79b00b6840265a0c34bc0b75a3 (diff)
downloadFreeBSD-src-3c5634d1b9ae20b0a99db710b23f5bc2c9fda9d4.zip
FreeBSD-src-3c5634d1b9ae20b0a99db710b23f5bc2c9fda9d4.tar.gz
MFC r303444 (ed): Call basename() in a portable way.
Pull a copy of the filename string before calling basename(). Change the loop to not return on its own, so we can put a free() statement at the bottom. Approved by: emaste (mentor, blanket MFC)
Diffstat (limited to 'usr.bin/grep')
-rw-r--r--usr.bin/grep/util.c15
1 files changed, 10 insertions, 5 deletions
diff --git a/usr.bin/grep/util.c b/usr.bin/grep/util.c
index 37b48c4..285f883 100644
--- a/usr.bin/grep/util.c
+++ b/usr.bin/grep/util.c
@@ -61,21 +61,26 @@ static bool ctxover;
bool
file_matching(const char *fname)
{
- char *fname_base;
+ char *fname_base, *fname_buf;
bool ret;
ret = finclude ? false : true;
- fname_base = basename(fname);
+ fname_buf = strdup(fname);
+ if (fname_buf == NULL)
+ err(2, "strdup");
+ fname_base = basename(fname_buf);
for (unsigned int i = 0; i < fpatterns; ++i) {
if (fnmatch(fpattern[i].pat, fname, 0) == 0 ||
fnmatch(fpattern[i].pat, fname_base, 0) == 0) {
- if (fpattern[i].mode == EXCL_PAT)
- return (false);
- else
+ if (fpattern[i].mode == EXCL_PAT) {
+ ret = false;
+ break;
+ } else
ret = true;
}
}
+ free(fname_buf);
return (ret);
}
OpenPOWER on IntegriCloud