From: teor Date: Sat, 8 Nov 2014 09:03:21 +0000 (+1100) Subject: Stop crashing when a NULL filename is passed to file_status() X-Git-Tag: tor-0.2.6.3-alpha~165^2~4 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=ce7fd6e160e2e3acb824b29e29afe15cd5e7bf4f;p=thirdparty%2Ftor.git Stop crashing when a NULL filename is passed to file_status() Stop crashing when a NULL filename is passed to file_status(), instead, return FN_ERROR. Also return FN_ERROR when a zero-length filename is passed to file_status(). Fixed as part of bug 13111. --- diff --git a/changes/bug13111-generate-keys-on-empty-file b/changes/bug13111-generate-keys-on-empty-file new file mode 100644 index 0000000000..f6a56effbb --- /dev/null +++ b/changes/bug13111-generate-keys-on-empty-file @@ -0,0 +1,7 @@ + o Minor bugfixes + - Stop crashing when a NULL filename is passed to file_status(). + Fixed as part of bug 13111. + + o Minor enhancements: + - Return FN_ERROR when a zero-length filename is passed to file_status(). + Fixed as part of bug 13111. diff --git a/src/common/util.c b/src/common/util.c index 2371ad3649..e850b14a16 100644 --- a/src/common/util.c +++ b/src/common/util.c @@ -1888,7 +1888,8 @@ clean_name_for_stat(char *name) #endif } -/** Return FN_ERROR if filename can't be read, FN_NOENT if it doesn't +/** Return FN_ERROR if filename can't be read, or is NULL or zero-length, + * FN_NOENT if it doesn't * exist, FN_FILE if it is a regular file, or FN_DIR if it's a * directory. On FN_ERROR, sets errno. */ file_status_t @@ -1897,6 +1898,9 @@ file_status(const char *fname) struct stat st; char *f; int r; + if (!fname || strlen(fname) == 0) { + return FN_ERROR; + } f = tor_strdup(fname); clean_name_for_stat(f); log_debug(LD_FS, "stat()ing %s", f);