]> granicus.if.org Git - strace/blobdiff - file.c
2005-05-31 Dmitry V. Levin <ldv@altlinux.org>
[strace] / file.c
diff --git a/file.c b/file.c
index 821d4a82b07a32075352d08d605f44caf70d9bbb..52c36312f30cd270728a198e356f2a3ddb63a55c 100644 (file)
--- a/file.c
+++ b/file.c
@@ -2347,10 +2347,11 @@ print_xattr_val(tcp, failed, arg, insize, size)
 struct tcb *tcp;
 int failed;
 unsigned long arg;
-long insize, size;
+unsigned long insize, size;
 {
     if (!failed) {
-       unsigned char *buf = malloc(4 * size + 1);
+       unsigned long capacity = 4 * size + 1;
+       unsigned char *buf = (capacity < size) ? NULL : malloc(capacity);
        if (buf == NULL || /* probably a bogus size argument */
            umoven(tcp, arg, size, (char *) &buf[3 * size]) < 0) {
            failed = 1;