git-svn-id: file:///var/lib/svn/clamav-devel/trunk/clamav-devel@709 77e5149b-7576-45b1-b177-96237e5ba77b
Tomasz Kojm authored on 2004/07/31 02:07:31... | ... |
@@ -340,8 +340,10 @@ int cli_parse_add(struct cl_node *root, const char *virname, const char *hexsig, |
340 | 340 |
if(!bm_new) |
341 | 341 |
return CL_EMEM; |
342 | 342 |
|
343 |
- if(!(bm_new->pattern = cli_hex2str(hexsig))) |
|
343 |
+ if(!(bm_new->pattern = cli_hex2str(hexsig))) { |
|
344 |
+ free(bm_new); |
|
344 | 345 |
return CL_EMALFDB; |
346 |
+ } |
|
345 | 347 |
|
346 | 348 |
bm_new->length = strlen(hexsig) / 2; |
347 | 349 |
|
... | ... |
@@ -351,11 +353,13 @@ int cli_parse_add(struct cl_node *root, const char *virname, const char *hexsig, |
351 | 351 |
virlen = strlen(virname); |
352 | 352 |
|
353 | 353 |
if(virlen <= 0) { |
354 |
+ free(bm_new->pattern); |
|
354 | 355 |
free(bm_new); |
355 | 356 |
return CL_EMALFDB; |
356 | 357 |
} |
357 | 358 |
|
358 | 359 |
if((bm_new->virname = cli_calloc(virlen + 1, sizeof(char))) == NULL) { |
360 |
+ free(bm_new->pattern); |
|
359 | 361 |
free(bm_new); |
360 | 362 |
return CL_EMEM; |
361 | 363 |
} |
... | ... |
@@ -367,6 +371,9 @@ int cli_parse_add(struct cl_node *root, const char *virname, const char *hexsig, |
367 | 367 |
|
368 | 368 |
if((ret = cli_bm_addpatt(root, bm_new))) { |
369 | 369 |
cli_errmsg("cli_parse_add(): Problem adding signature\n"); |
370 |
+ free(bm_new->pattern); |
|
371 |
+ free(bm_new->virname); |
|
372 |
+ free(bm_new); |
|
370 | 373 |
return ret; |
371 | 374 |
} |
372 | 375 |
} |