Some paranoia checks
authorVolker Lendecke <vl@sernet.de>
Wed, 19 Dec 2007 15:48:18 +0000 (16:48 +0100)
committerVolker Lendecke <vl@samba.org>
Wed, 19 Dec 2007 15:55:30 +0000 (16:55 +0100)
source/libsmb/unexpected.c

index 3ca0e89f99fe23f5b0b79e0e0879280721e1e504..0e4e03384ca2f1c0ee2aa354adaf0b335df03af1 100644 (file)
@@ -83,6 +83,10 @@ static int traverse_fn(TDB_CONTEXT *ttdb, TDB_DATA kbuf, TDB_DATA dbuf, void *st
 {
        struct unexpected_key key;
 
+       if (kbuf.dsize != sizeof(key)) {
+               tdb_delete(ttdb, kbuf);
+       }
+
        memcpy(&key, kbuf.dptr, sizeof(key));
 
        if (lastt - key.timestamp > NMBD_UNEXPECTED_TIMEOUT) {
@@ -122,6 +126,10 @@ static int traverse_match(TDB_CONTEXT *ttdb, TDB_DATA kbuf, TDB_DATA dbuf, void
        struct unexpected_key key;
        struct packet_struct *p;
 
+       if (kbuf.dsize != sizeof(key)) {
+               return 0;
+       }
+
        memcpy(&key, kbuf.dptr, sizeof(key));
 
        if (key.packet_type != match_type) return 0;