]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
lib tdb: memcmp ubsan warning
authorGary Lockyer <gary@catalyst.net.nz>
Thu, 6 Jun 2019 02:57:45 +0000 (14:57 +1200)
committerNoel Power <npower@samba.org>
Mon, 1 Jul 2019 14:50:53 +0000 (14:50 +0000)
Fix the ubsan warning

lib/tdb/common/tdb.c:184:9: runtime error: null pointer passed as
argument 2, which is declared to never be null"

memcmp call now guarded by a length check.

memcmp returns zero when called with a zero length parameter.

Signed-off-by: Gary Lockyer <gary@catalyst.net.nz>
Reviewed-by: Noel Power <npower@samba.org>
Autobuild-User(master): Noel Power <npower@samba.org>
Autobuild-Date(master): Mon Jul  1 14:50:54 UTC 2019 on sn-devel-184

lib/tdb/common/tdb.c

index 9c80a36e00a42eff4439949806c1099e3e781a24..c56b37be5caeeeec5e83e379e4ff3fbc49fbdea8 100644 (file)
@@ -180,12 +180,14 @@ static int tdb_update_hash_cmp(TDB_DATA key, TDB_DATA data, void *private_data)
 
        for (i=0; i<state->num_dbufs; i++) {
                TDB_DATA dbuf = state->dbufs[i];
-               int ret;
-               ret = memcmp(dptr, dbuf.dptr, dbuf.dsize);
-               if (ret != 0) {
-                       return -1;
+               if( dbuf.dsize > 0) {
+                       int ret;
+                       ret = memcmp(dptr, dbuf.dptr, dbuf.dsize);
+                       if (ret != 0) {
+                               return -1;
+                       }
+                       dptr += dbuf.dsize;
                }
-               dptr += dbuf.dsize;
        }
 
        return 0;