From: Wouter Wijngaards Date: Fri, 23 Mar 2007 08:25:43 +0000 (+0000) Subject: reviewed yesterdays commit. X-Git-Tag: release-0.2~36 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=fdfe51464bf0e90fbc0fd23be96da19539621e53;p=thirdparty%2Funbound.git reviewed yesterdays commit. git-svn-id: file:///svn/unbound/trunk@191 be551aaa-1e26-0410-a405-d3ace91eadb9 --- diff --git a/daemon/worker.c b/daemon/worker.c index dee1805b1..b7ddfe8e9 100644 --- a/daemon/worker.c +++ b/daemon/worker.c @@ -292,6 +292,7 @@ worker_handle_request(struct comm_point* c, void* arg, int error, /* id is still in the buffer, no need to touch it */ reply_info_answer((struct reply_info*)e->data, ldns_buffer_read_u16_at(c->buffer, 2), c->buffer); + lock_rw_unlock(&e->lock); return 1; } ldns_buffer_rewind(c->buffer); diff --git a/doc/Changelog b/doc/Changelog index 7f7050fc3..0e45e54ca 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +23 March 2007: Wouter + - review of yesterday's commits. + 22 March 2007: Wouter - AIX configure check. - lock-verify can handle references to locks that are created diff --git a/util/data/msgreply.c b/util/data/msgreply.c index bc3bb9a5b..53be329ec 100644 --- a/util/data/msgreply.c +++ b/util/data/msgreply.c @@ -88,8 +88,11 @@ int query_info_parse(struct query_info* m, ldns_buffer* query) } memmove(m->qname, q, m->qnamesize); - if(ldns_buffer_remaining(query) < 4) + if(ldns_buffer_remaining(query) < 4) { + free(m->qname); + m->qname = NULL; return 0; /* need qtype, qclass */ + } m->qtype = ldns_buffer_read_u16(query); m->qclass = ldns_buffer_read_u16(query); return 1; @@ -186,7 +189,9 @@ struct msgreply_entry* query_info_entrysetup(struct query_info* q, e->entry.key = e; e->entry.data = r; lock_rw_init(&e->entry.lock); - lock_protect(&e->entry.lock, e, sizeof(*e)); + lock_protect(&e->entry.lock, &e->key, sizeof(e->key)); + lock_protect(&e->entry.lock, &e->entry.hash, sizeof(e->entry.hash) + + sizeof(e->entry.key) + sizeof(e->entry.data)); lock_protect(&e->entry.lock, e->key.qname, e->key.qnamesize); q->qname = NULL; return e;