diff options
author | Jeremy Allison <jra@samba.org> | 2000-10-02 19:28:19 +0000 |
---|---|---|
committer | Jeremy Allison <jra@samba.org> | 2000-10-02 19:28:19 +0000 |
commit | 85c46bfcb9a1e11854400651cb39d6bc84635008 (patch) | |
tree | ef37e9bd6a2418960556afcf18ff5807a3de8786 | |
parent | 2b3c2f2e5dcdf64f92a1296881f4dc97d29c88a1 (diff) | |
download | samba-85c46bfcb9a1e11854400651cb39d6bc84635008.tar.gz samba-85c46bfcb9a1e11854400651cb39d6bc84635008.tar.xz samba-85c46bfcb9a1e11854400651cb39d6bc84635008.zip |
Added debug so if zero length messages get sent we successfully remove
them (this can happen if smbd processes are shut down at the wrong time).
Jeremy.
-rw-r--r-- | source/rpc_server/srv_spoolss_nt.c | 9 | ||||
-rw-r--r-- | source/tdb/tdb.c | 10 |
2 files changed, 16 insertions, 3 deletions
diff --git a/source/rpc_server/srv_spoolss_nt.c b/source/rpc_server/srv_spoolss_nt.c index 89963890391..6e222b23867 100644 --- a/source/rpc_server/srv_spoolss_nt.c +++ b/source/rpc_server/srv_spoolss_nt.c @@ -591,6 +591,13 @@ void srv_spoolss_receive_message(int msg_type, pid_t src, void *buf, size_t len) *printer = '\0'; fstrcpy(printer,buf); + if (len == 0) { + DEBUG(0,("srv_spoolss_receive_message: got null message !\n")); + return; + } + + DEBUG(10,("srv_spoolss_receive_message: Got message about printer %s\n", printer )); + find_printer = (Printer_entry *)ubi_dlFirst(&Printer_list); /* Iterate the printer list. */ @@ -631,6 +638,8 @@ static BOOL srv_spoolss_sendnotify(POLICY_HND *handle) fstrcpy(printer, ""); /*srv_spoolss_receive_message(printer);*/ + DEBUG(10,("srv_spoolss_sendnotify: Sending message about printer %s\n", printer )); + message_send_all(MSG_PRINTER_NOTIFY, printer, strlen(printer) + 1); /* Null terminate... */ return True; diff --git a/source/tdb/tdb.c b/source/tdb/tdb.c index c653c79d681..d9401d95d4c 100644 --- a/source/tdb/tdb.c +++ b/source/tdb/tdb.c @@ -696,9 +696,12 @@ TDB_DATA tdb_fetch(TDB_CONTEXT *tdb, TDB_DATA key) rec_ptr = tdb_find(tdb, key, hash, &rec); if (rec_ptr) { - ret.dptr = tdb_alloc_read(tdb, - rec_ptr + sizeof(rec) + rec.key_len, + if (rec.data_len) + ret.dptr = tdb_alloc_read(tdb, + rec_ptr + sizeof(rec) + rec.key_len, rec.data_len); + else + ret.dptr = NULL; ret.dsize = rec.data_len; } @@ -1106,7 +1109,8 @@ int tdb_store(TDB_CONTEXT *tdb, TDB_DATA key, TDB_DATA dbuf, int flag) memcpy(p, &rec, sizeof(rec)); memcpy(p+sizeof(rec), key.dptr, key.dsize); - memcpy(p+sizeof(rec)+key.dsize, dbuf.dptr, dbuf.dsize); + if (dbuf.dsize) + memcpy(p+sizeof(rec)+key.dsize, dbuf.dptr, dbuf.dsize); if (tdb_write(tdb, rec_ptr, p, sizeof(rec)+key.dsize+dbuf.dsize) == -1) goto fail; |