1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
--- a/tdlookup.c
+++ b/tdlookup.c
@@ -298,9 +298,17 @@ int respond(char *q,char qtype[2],char i
if (!r) r = cdb_find(&c,key,4);
if (!r) r = cdb_find(&c,key,3);
if (!r) r = cdb_find(&c,key,2);
- if (r == -1) return 0;
+ if (r == -1) {
+ cdb_free(&c);
+ close(fd);
+ return 0;
+ }
if (r && (cdb_datalen(&c) == 2))
- if (cdb_read(&c,clientloc,2,cdb_datapos(&c)) == -1) return 0;
+ if (cdb_read(&c,clientloc,2,cdb_datapos(&c)) == -1) {
+ cdb_free(&c);
+ close(fd);
+ return 0;
+ }
r = doit(q,qtype);
|