... | ... |
@@ -1441,6 +1441,7 @@ int recvloop_th(int *socketds, unsigned nsockets, struct cl_engine *engine, unsi |
1441 | 1441 |
pthread_kill(fan_pid, SIGUSR1); |
1442 | 1442 |
pthread_mutex_unlock(&logg_mutex); |
1443 | 1443 |
pthread_join(fan_pid, NULL); |
1444 |
+ free(tharg); |
|
1444 | 1445 |
} |
1445 | 1446 |
#endif |
1446 | 1447 |
if(engine) { |
... | ... |
@@ -836,8 +836,10 @@ static int asn1_parse_mscat(fmap_t *map, size_t offset, unsigned int size, crtmg |
836 | 836 |
break; |
837 | 837 |
} |
838 | 838 |
} |
839 |
- if(dsize) |
|
840 |
- break; |
|
839 |
+ if(dsize) { |
|
840 |
+ crtmgr_free(&newcerts); |
|
841 |
+ break; |
|
842 |
+ } |
|
841 | 843 |
if(newcerts.crts) { |
842 | 844 |
x509 = newcerts.crts; |
843 | 845 |
cli_dbgmsg("asn1_parse_mscat: %u new certificates collected\n", newcerts.items); |
... | ... |
@@ -877,8 +879,10 @@ static int asn1_parse_mscat(fmap_t *map, size_t offset, unsigned int size, crtmg |
877 | 877 |
} |
878 | 878 |
x509 = x509->next; |
879 | 879 |
} |
880 |
- if(x509) |
|
880 |
+ if(x509) { |
|
881 |
+ crtmgr_free(&newcerts); |
|
881 | 882 |
break; |
883 |
+ } |
|
882 | 884 |
if(newcerts.items) |
883 | 885 |
cli_dbgmsg("asn1_parse_mscat: %u certificates did not verify\n", newcerts.items); |
884 | 886 |
crtmgr_free(&newcerts); |
... | ... |
@@ -124,7 +124,7 @@ static int scancws(cli_ctx *ctx, struct swf_file_hdr *hdr) |
124 | 124 |
z_stream stream; |
125 | 125 |
char inbuff[FILEBUFF], outbuff[FILEBUFF]; |
126 | 126 |
fmap_t *map = *ctx->fmap; |
127 |
- int offset = 8, ret, zret, outsize = 8, count; |
|
127 |
+ int offset = 8, ret, zret, outsize = 8, count, zend; |
|
128 | 128 |
char *tmpname; |
129 | 129 |
int fd; |
130 | 130 |
|
... | ... |
@@ -174,9 +174,11 @@ static int scancws(cli_ctx *ctx, struct swf_file_hdr *hdr) |
174 | 174 |
close(fd); |
175 | 175 |
if(cli_unlink(tmpname)) { |
176 | 176 |
free(tmpname); |
177 |
+ inflateEnd(&stream); |
|
177 | 178 |
return CL_EUNLINK; |
178 | 179 |
} |
179 | 180 |
free(tmpname); |
181 |
+ inflateEnd(&stream); |
|
180 | 182 |
return CL_EUNPACK; |
181 | 183 |
} |
182 | 184 |
if(!ret) |
... | ... |
@@ -205,7 +207,9 @@ static int scancws(cli_ctx *ctx, struct swf_file_hdr *hdr) |
205 | 205 |
stream.avail_out = FILEBUFF; |
206 | 206 |
} while(zret == Z_OK); |
207 | 207 |
|
208 |
- if((zret != Z_STREAM_END && zret != Z_OK) || (zret = inflateEnd(&stream)) != Z_OK) { |
|
208 |
+ zend = inflateEnd(&stream); |
|
209 |
+ |
|
210 |
+ if((zret != Z_STREAM_END && zret != Z_OK) || zend != Z_OK) { |
|
209 | 211 |
/* |
210 | 212 |
* outsize is initialized to 8, it being 8 here means that we couldn't even read a single byte. |
211 | 213 |
* If outsize > 8, then we have data. Let's scan what we have. |