lib:ldb: Use correct integer types for sizes master
authorAndreas Schneider <asn@samba.org>
Tue, 30 Apr 2024 12:33:51 +0000 (14:33 +0200)
committerVolker Lendecke <vl@samba.org>
Tue, 30 Apr 2024 14:29:07 +0000 (16:29 +0200)
Error: INTEGER_OVERFLOW (CWE-190):
ldb-2.9.0/common/ldb_ldif.c:84: tainted_data_return: Called function "read(f, buf, size)", and a possible return value may be less than zero.
ldb-2.9.0/common/ldb_ldif.c:84: cast_overflow: An assign that casts to a different type, which might trigger an overflow.
ldb-2.9.0/common/ldb_ldif.c:92: overflow: The expression "size" is considered to have possibly overflowed.
ldb-2.9.0/common/ldb_ldif.c:84: overflow_sink: "size", which might be negative, is passed to "read(f, buf, size)". [Note: The source code implementation of the function has been overridden by a builtin model.]
    82|           buf = (char *)value->data;
    83|           while (count < statbuf.st_size) {
    84|->                 bytes = read(f, buf, size);
    85|                   if (bytes == -1) {
    86|                           talloc_free(value->data);

Signed-off-by: Andreas Schneider <asn@samba.org>
Reviewed-by: Volker Lendecke <vl@samba.org>
lib/ldb/common/ldb_ldif.c

index 96237dd0abf39e2be4a46b0fbd683f8168a19749..24a0bcdefa54c0bb1ea4bd2609d28608a884e0ac 100644 (file)
@@ -45,7 +45,8 @@ static int ldb_read_data_file(TALLOC_CTX *mem_ctx, struct ldb_val *value)
 {
        struct stat statbuf;
        char *buf;
-       int count, size, bytes;
+       size_t count, size;
+       ssize_t bytes;
        int ret;
        int f;
        const char *fname = (const char *)value->data;