diff options
author | Enji Cooper <ngie@FreeBSD.org> | 2017-01-04 04:50:03 +0000 |
---|---|---|
committer | Enji Cooper <ngie@FreeBSD.org> | 2017-01-04 04:50:03 +0000 |
commit | 83e8b13f15e954a3783befd0a322935ac6a1bd7b (patch) | |
tree | ae388a892bd7ac3396c698d5af09fc5dbd6b464d /contrib | |
parent | 5d37d9cc25207bfabc32aff78c5edbe6e3bf36ff (diff) | |
download | src-83e8b13f15e954a3783befd0a322935ac6a1bd7b.tar.gz src-83e8b13f15e954a3783befd0a322935ac6a1bd7b.zip |
{strchr,strlen}_basic: don't leak the dlopen'ed handle; close after use
MFC after: 3 days
Reported by: Coverity
CID: 978299, 978300
Notes
Notes:
svn path=/head/; revision=311249
Diffstat (limited to 'contrib')
-rw-r--r-- | contrib/netbsd-tests/lib/libc/string/t_strchr.c | 12 | ||||
-rw-r--r-- | contrib/netbsd-tests/lib/libc/string/t_strlen.c | 11 |
2 files changed, 22 insertions, 1 deletions
diff --git a/contrib/netbsd-tests/lib/libc/string/t_strchr.c b/contrib/netbsd-tests/lib/libc/string/t_strchr.c index 958b186e9ceb..4556b2c245ca 100644 --- a/contrib/netbsd-tests/lib/libc/string/t_strchr.c +++ b/contrib/netbsd-tests/lib/libc/string/t_strchr.c @@ -58,6 +58,9 @@ ATF_TC_HEAD(strchr_basic, tc) ATF_TC_BODY(strchr_basic, tc) { +#ifdef __FreeBSD__ + void *dl_handle; +#endif unsigned int t, a; char *off; char buf[32]; @@ -245,8 +248,12 @@ ATF_TC_BODY(strchr_basic, tc) "abcdefgh/abcdefgh/", }; - +#ifdef __FreeBSD__ + dl_handle = dlopen(NULL, RTLD_LAZY); + strchr_fn = dlsym(dl_handle, "test_strlen"); +#else strchr_fn = dlsym(dlopen(0, RTLD_LAZY), "test_strchr"); +#endif if (!strchr_fn) strchr_fn = strchr; @@ -281,6 +288,9 @@ ATF_TC_BODY(strchr_basic, tc) verify_strchr(buf + a, 0xff, t, a); } } +#ifdef __FreeBSD__ + (void)dlclose(dl_handle); +#endif } ATF_TP_ADD_TCS(tp) diff --git a/contrib/netbsd-tests/lib/libc/string/t_strlen.c b/contrib/netbsd-tests/lib/libc/string/t_strlen.c index 66158fd7113f..7483dc61f590 100644 --- a/contrib/netbsd-tests/lib/libc/string/t_strlen.c +++ b/contrib/netbsd-tests/lib/libc/string/t_strlen.c @@ -40,6 +40,9 @@ ATF_TC_HEAD(strlen_basic, tc) ATF_TC_BODY(strlen_basic, tc) { +#ifdef __FreeBSD__ + void *dl_handle; +#endif /* try to trick the compiler */ size_t (*strlen_fn)(const char *); @@ -107,7 +110,12 @@ ATF_TC_BODY(strlen_basic, tc) * During testing it is useful have the rest of the program * use a known good version! */ +#ifdef __FreeBSD__ + dl_handle = dlopen(NULL, RTLD_LAZY); + strlen_fn = dlsym(dl_handle, "test_strlen"); +#else strlen_fn = dlsym(dlopen(NULL, RTLD_LAZY), "test_strlen"); +#endif if (!strlen_fn) strlen_fn = strlen; @@ -134,6 +142,9 @@ ATF_TC_BODY(strlen_basic, tc) } } } +#ifdef __FreeBSD__ + (void)dlclose(dl_handle); +#endif } ATF_TC(strlen_huge); |