diff options
author | Jeremy Allison <jra@samba.org> | 2008-02-29 06:55:33 -0800 |
---|---|---|
committer | Karolin Seeger <kseeger@samba.org> | 2008-02-29 16:09:59 +0100 |
commit | 1c21e41cd9b4a1121a67b718512381bd8ca14dba (patch) | |
tree | 285f759d981bdb74706e8b64416153ac3db18a4a | |
parent | f22531b65d88d633e9b217cd4109d9e899c09d1e (diff) | |
download | samba-1c21e41cd9b4a1121a67b718512381bd8ca14dba.tar.gz samba-1c21e41cd9b4a1121a67b718512381bd8ca14dba.tar.bz2 samba-1c21e41cd9b4a1121a67b718512381bd8ca14dba.zip |
Patch to fix the "Invalid read of size 4" errors. Bug #3617.
Jeremy.
(cherry picked from commit fa12667ec284fdda45b79cbf6bf548ab0faae34f)
(This used to be commit 5f00c79ac22ecfa846eebd910e7c25d326595f8e)
-rw-r--r-- | source3/nmbd/nmbd_responserecordsdb.c | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/source3/nmbd/nmbd_responserecordsdb.c b/source3/nmbd/nmbd_responserecordsdb.c index 6498ce04cf..b042fb41ed 100644 --- a/source3/nmbd/nmbd_responserecordsdb.c +++ b/source3/nmbd/nmbd_responserecordsdb.c @@ -46,6 +46,24 @@ static void add_response_record(struct subnet_record *subrec, void remove_response_record(struct subnet_record *subrec, struct response_record *rrec) { + /* It is possible this can be called twice, + with a rrec pointer that has been freed. So + before we inderect into rrec, search for it + on the responselist first. Bug #3617. JRA. */ + + struct response_record *p = NULL; + + for (p = subrec->responselist; p; p = p->next) { + if (p == rrec) { + break; + } + } + + if (p == NULL) { + /* We didn't find rrec on the list. */ + return; + } + DLIST_REMOVE(subrec->responselist, rrec); if(rrec->userdata) { |