summaryrefslogtreecommitdiff
path: root/src/test/test-xattr-util.c
diff options
context:
space:
mode:
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2018-02-25 21:25:33 +0100
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2018-02-26 15:49:18 +0100
commite4de62591b41564acb3106d6cefd91934d524a9e (patch)
tree1b2f5909fde485ce38e8d9401267759caab43029 /src/test/test-xattr-util.c
parent3554ef51771b472145e4f7376943e7209e8a2864 (diff)
downloadsystemd-e4de62591b41564acb3106d6cefd91934d524a9e.tar.gz
basic/xattr-util: do not cast ssize_t to int
gcc warns about unitialized memory access because it notices that ssize_t which is < 0 could be cast to positive int value. We know that this can't really happen because only -1 can be returned, but OTOH, in principle a large *positive* value cannot be cast properly. This is unlikely too, since xattrs cannot be too large, but it seems cleaner to just use a size_t to return the value and avoid the cast altoghter. This makes the code simpler and gcc is happy too. The following warning goes away: [113/1502] Compiling C object 'src/basic/basic@sta/xattr-util.c.o'. In file included from ../src/basic/alloc-util.h:28:0, from ../src/basic/xattr-util.c:30: ../src/basic/xattr-util.c: In function ‘fd_getcrtime_at’: ../src/basic/macro.h:207:60: warning: ‘b’ may be used uninitialized in this function [-Wmaybe-uninitialized] UNIQ_T(A,aq) < UNIQ_T(B,bq) ? UNIQ_T(A,aq) : UNIQ_T(B,bq); \ ^ ../src/basic/xattr-util.c:155:19: note: ‘b’ was declared here usec_t a, b; ^
Diffstat (limited to 'src/test/test-xattr-util.c')
-rw-r--r--src/test/test-xattr-util.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/test/test-xattr-util.c b/src/test/test-xattr-util.c
index 17087a282d..36b6480219 100644
--- a/src/test/test-xattr-util.c
+++ b/src/test/test-xattr-util.c
@@ -36,8 +36,9 @@ static void test_fgetxattrat_fake(void) {
char t[] = "/var/tmp/xattrtestXXXXXX";
_cleanup_close_ int fd = -1;
const char *x;
- char v[3] = {};
+ char v[3];
int r;
+ size_t size;
assert_se(mkdtemp(t));
x = strjoina(t, "/test");
@@ -51,13 +52,14 @@ static void test_fgetxattrat_fake(void) {
fd = open(t, O_RDONLY|O_DIRECTORY|O_CLOEXEC|O_NOCTTY);
assert_se(fd >= 0);
- assert_se(fgetxattrat_fake(fd, "test", "user.foo", v, 3, 0) >= 0);
+ assert_se(fgetxattrat_fake(fd, "test", "user.foo", v, 3, 0, &size) >= 0);
+ assert_se(size == 3);
assert_se(memcmp(v, "bar", 3) == 0);
safe_close(fd);
fd = open("/", O_RDONLY|O_DIRECTORY|O_CLOEXEC|O_NOCTTY);
assert_se(fd >= 0);
- assert_se(fgetxattrat_fake(fd, "usr", "user.idontexist", v, 3, 0) == -ENODATA);
+ assert_se(fgetxattrat_fake(fd, "usr", "user.idontexist", v, 3, 0, &size) == -ENODATA);
cleanup:
assert_se(unlink(x) >= 0);