overflow: fix false positive allocating a void pointer
authorDan Carpenter <dan.carpenter@oracle.com>
Mon, 4 Feb 2013 14:25:38 +0000 (4 17:25 +0300)
committerDan Carpenter <dan.carpenter@oracle.com>
Mon, 4 Feb 2013 14:25:38 +0000 (4 17:25 +0300)
For a void pointer the bytes is -1.  Also if it says we are allocating a
negative number of bytes that's probably bogus.  Treat it as a large
positive by using sval.uvalue instead of sval.value.

Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
check_overflow.c

index ee4ed31..a0de2e5 100644 (file)
@@ -320,9 +320,9 @@ static void db_returns_buf_size(struct expression *expr, int param, char *unused
        if (!type)
                return;
        bytes = bits_to_bytes(type->bit_size);
-       if (!bytes)
+       if (bytes <= 0)
                return;
-       if (sval.value >= bytes)
+       if (sval.uvalue >= bytes)
                return;
        sm_msg("error: not allocating enough data %d vs %s", bytes, sval_to_str(sval));
 }