]> git.ipfire.org Git - thirdparty/unbound.git/commitdiff
Memory leak fix.
authorWouter Wijngaards <wouter@nlnetlabs.nl>
Wed, 16 Sep 2009 12:47:56 +0000 (12:47 +0000)
committerWouter Wijngaards <wouter@nlnetlabs.nl>
Wed, 16 Sep 2009 12:47:56 +0000 (12:47 +0000)
git-svn-id: file:///svn/unbound/trunk@1832 be551aaa-1e26-0410-a405-d3ace91eadb9

daemon/worker.c
doc/Changelog
libunbound/libworker.c

index 0d63ee2c6436ab539cd9f4abd73b11b5582a1be0..3785831bf718c22ce63e522c0a8fa4777b1a7181 100644 (file)
@@ -806,6 +806,7 @@ worker_handle_request(struct comm_point* c, void* arg, int error,
        }
        if(local_zones_answer(worker->daemon->local_zones, &qinfo, &edns, 
                c->buffer, worker->scratchpad)) {
+               regional_free_all(worker->scratchpad);
                if(ldns_buffer_limit(c->buffer) == 0) {
                        comm_point_drop_reply(repinfo);
                        return 0;
index 33d84010c9ff3c3f2fdeda3950d51aaa7e715389..e0069a9b6d965eea11a7159d87929188b006b911 100644 (file)
@@ -1,3 +1,6 @@
+16 September 2009: Wouter
+       - Fix memory leak reported by Tao Ma.
+
 15 September 2009: Wouter
        - iana portlist updated.
 
index be0c5b47e760fca7f88d67c81c539d79ab13cf55..dcc09337100f16e8c45e13c4588d10d579a5cd6c 100644 (file)
@@ -514,6 +514,7 @@ int libworker_fg(struct ub_ctx* ctx, struct ctx_query* q)
        ldns_buffer_write_u16_at(w->back->udp_buff, 2, qflags);
        if(local_zones_answer(ctx->local_zones, &qinfo, &edns, 
                w->back->udp_buff, w->env->scratch)) {
+               regional_free_all(w->env->scratch);
                libworker_fillup_fg(q, LDNS_RCODE_NOERROR, 
                        w->back->udp_buff, sec_status_insecure);
                libworker_delete(w);
@@ -630,6 +631,7 @@ handle_newq(struct libworker* w, uint8_t* buf, uint32_t len)
        ldns_buffer_write_u16_at(w->back->udp_buff, 2, qflags);
        if(local_zones_answer(w->ctx->local_zones, &qinfo, &edns, 
                w->back->udp_buff, w->env->scratch)) {
+               regional_free_all(w->env->scratch);
                q->msg_security = sec_status_insecure;
                add_bg_result(w, q, w->back->udp_buff, UB_NOERROR);
                free(qinfo.qname);