summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Wielaard <mark@klomp.org>2022-10-16 18:02:46 +0200
committerMark Wielaard <mark@klomp.org>2022-10-16 18:02:46 +0200
commit72860bfdca5286399837080d53ba297bf72c56b3 (patch)
tree76fe6e7a3159d57f242a31d0c131a4d4ff5051a8
parent64ee2cb792e7b6ba6ad2a5759bff7ce8714e4668 (diff)
downloadelfutils-72860bfdca5286399837080d53ba297bf72c56b3.tar.gz
tests: Check lseek, read and malloc results with correct types in test.
When compiling dwfl-report-offline-memory.c on some systems (latest gcc/glibc and --enable-sanitize-undefined) we might get: In file included from /usr/include/features.h:490, from /usr/include/assert.h:35, from dwfl-report-offline-memory.c:18: In function ‘read’, inlined from ‘main’ at dwfl-report-offline-memory.c:68:23: /usr/include/bits/unistd.h:38:10: error: ‘__read_alias’ specified size 18446744073709551615 exceeds maximum object size 9223372036854775807 [-Werror=stringop-overflow=] 38 | return __glibc_fortify (read, __nbytes, sizeof (char), | ^~~~~~~~~~~~~~~ /usr/include/bits/unistd.h: In function ‘main’: /usr/include/bits/unistd.h:26:16: note: in a call to function ‘__read_alias’ declared with attribute ‘access (write_only, 2, 3)’ 26 | extern ssize_t __REDIRECT (__read_alias, (int __fd, void *__buf, | ^~~~~~~~~~ cc1: all warnings being treated as errors make[2]: *** [Makefile:2461: dwfl-report-offline-memory.o] Error 1 Fix by using the correct types and checking all return values. Signed-off-by: Mark Wielaard <mark@klomp.org>
-rw-r--r--tests/ChangeLog5
-rw-r--r--tests/dwfl-report-offline-memory.c8
2 files changed, 11 insertions, 2 deletions
diff --git a/tests/ChangeLog b/tests/ChangeLog
index 6ac2c1e8..d07a910e 100644
--- a/tests/ChangeLog
+++ b/tests/ChangeLog
@@ -1,3 +1,8 @@
+2022-10-16 Mark Wielaard <mark@klomp.org>
+
+ * dwfl-report-offline-memory.c (main): Check lseek, read and malloc
+ results with correct types.
+
2022-09-13 Aleksei Vetrov <vvvvvv@google.com>
* Makefile.am (check_PROGRAMS): Add dwfl-report-offline-memory.
diff --git a/tests/dwfl-report-offline-memory.c b/tests/dwfl-report-offline-memory.c
index 837aca5e..81fa136f 100644
--- a/tests/dwfl-report-offline-memory.c
+++ b/tests/dwfl-report-offline-memory.c
@@ -62,10 +62,14 @@ main (int argc, char **argv)
int fd = open (fname, O_RDONLY);
if (fd < 0)
error (-1, 0, "can't open file %s: %s", fname, strerror (errno));
- size_t size = lseek (fd, 0, SEEK_END);
+ off_t size = lseek (fd, 0, SEEK_END);
+ if (size < 0)
+ error (-1, 0, "can't lseek file %s: %s", fname, strerror (errno));
lseek (fd, 0, SEEK_SET);
char *data = malloc (size);
- size_t bytes_read = read (fd, data, size);
+ if (data == NULL)
+ error (-1, 0, "can't malloc: %s", strerror (errno));
+ ssize_t bytes_read = read (fd, data, size);
assert (bytes_read == size);
close (fd);