svn commit: r311227 - head/contrib/netbsd-tests/lib/libc/gen
Ngie Cooper
ngie at FreeBSD.org
Wed Jan 4 02:31:07 UTC 2017
Author: ngie
Date: Wed Jan 4 02:31:05 2017
New Revision: 311227
URL: https://svnweb.freebsd.org/changeset/base/311227
Log:
seekdir_basic: fix various Coverity issues
Address..
- .. resource leaks of file descriptors and memory
- .. unchecked return values from creat(2), mkdir(2), and telldir(3)
- .. potential NULL derefs after calling readdir(3)
MFC after: 1 week
Reported by: Coverity
CID: 975255, 975256, 976989, 978989, 978990
Modified:
head/contrib/netbsd-tests/lib/libc/gen/t_dir.c
Modified: head/contrib/netbsd-tests/lib/libc/gen/t_dir.c
==============================================================================
--- head/contrib/netbsd-tests/lib/libc/gen/t_dir.c Wed Jan 4 02:25:31 2017 (r311226)
+++ head/contrib/netbsd-tests/lib/libc/gen/t_dir.c Wed Jan 4 02:31:05 2017 (r311227)
@@ -39,6 +39,10 @@
#include <sys/stat.h>
+#ifdef __FreeBSD__
+#include <errno.h>
+#endif
+
ATF_TC(seekdir_basic);
ATF_TC_HEAD(seekdir_basic, tc)
{
@@ -54,10 +58,26 @@ ATF_TC_BODY(seekdir_basic, tc)
struct dirent *entry;
long here;
+#ifdef __FreeBSD__
+#define CREAT(x, m) do { \
+ int _creat_fd; \
+ ATF_REQUIRE_MSG((_creat_fd = creat((x), (m))), \
+ "creat(%s, %x) failed: %s", (x), (m), \
+ strerror(errno)); \
+ (void)close(_creat_fd); \
+ } while(0);
+
+ ATF_REQUIRE_MSG(mkdir("t", 0755) == 0,
+ "mkdir failed: %s", strerror(errno));
+ CREAT("t/a", 0600);
+ CREAT("t/b", 0600);
+ CREAT("t/c", 0600);
+#else
mkdir("t", 0755);
creat("t/a", 0600);
creat("t/b", 0600);
creat("t/c", 0600);
+#endif
dp = opendir("t");
if ( dp == NULL)
@@ -70,9 +90,17 @@ ATF_TC_BODY(seekdir_basic, tc)
/* get first entry */
entry = readdir(dp);
here = telldir(dp);
+#ifdef __FreeBSD__
+ ATF_REQUIRE_MSG(here != -1,
+ "telldir failed: %s", strerror(errno));
+#endif
/* get second entry */
entry = readdir(dp);
+#ifdef __FreeBSD__
+ ATF_REQUIRE_MSG(entry != NULL,
+ "readdir failed: %s", strerror(errno));
+#endif
wasname = strdup(entry->d_name);
if (wasname == NULL)
atf_tc_fail("cannot allocate memory");
@@ -109,6 +137,9 @@ ATF_TC_BODY(seekdir_basic, tc)
atf_tc_fail("3rd seekdir found wrong name");
closedir(dp);
+#ifdef __FreeBSD__
+ free(wasname);
+#endif
}
/* There is no sbrk on AArch64 and RISC-V */
More information about the svn-src-all
mailing list