git-svn-id: file:///var/lib/svn/clamav-devel/trunk/clamav-devel@675 77e5149b-7576-45b1-b177-96237e5ba77b
Tomasz Kojm authored on 2004/07/20 04:30:13... | ... |
@@ -62,6 +62,7 @@ Code patches submitted by (in alphabetical order): |
62 | 62 |
|
63 | 63 |
Kamil Andrusz <wizz*mniam.net> |
64 | 64 |
Patrick Bihan-Faou <patrick*mindstep.com> |
65 |
+Martin Blapp <mb*imp.ch> |
|
65 | 66 |
Len Budney <lbudney*pobox.com> |
66 | 67 |
Andrey Cherezov <andrey*cherezov.koenig.su> |
67 | 68 |
Alex Cherney <alex*cher.id.au> |
... | ... |
@@ -1,3 +1,7 @@ |
1 |
+Mon Jul 19 21:24:18 CEST 2004 (tk) |
|
2 |
+---------------------------------- |
|
3 |
+ * libclamav: pe: fix memory leak (Martin Blapp <mb*imp.ch>) |
|
4 |
+ |
|
1 | 5 |
Mon Jul 19 19:46:03 CEST 2004 (tk) |
2 | 6 |
---------------------------------- |
3 | 7 |
* libclamav: use new, faster and memory efficient algorithm (multipattern |
... | ... |
@@ -473,11 +473,13 @@ int cli_scanpe(int desc, const char **virname, long int *scanned, const struct c |
473 | 473 |
|
474 | 474 |
if(limits && limits->maxfilesize && (ssize > limits->maxfilesize || dsize > limits->maxfilesize)) { |
475 | 475 |
cli_dbgmsg("UPX: Sizes exceeded (ssize: %d, dsize: %d, max: %lu)\n", ssize, dsize , limits->maxfilesize); |
476 |
+ free(section_hdr); |
|
476 | 477 |
return CL_CLEAN; |
477 | 478 |
} |
478 | 479 |
|
479 | 480 |
if(ssize <= 0x19 || dsize <= ssize) { /* FIXME: What are reasonable values? */ |
480 | 481 |
cli_dbgmsg("UPX: Size mismatch (ssize: %d, dsize: %d)\n", ssize, dsize); |
482 |
+ free(section_hdr); |
|
481 | 483 |
return CL_CLEAN; |
482 | 484 |
} |
483 | 485 |
|
... | ... |
@@ -508,11 +510,16 @@ int cli_scanpe(int desc, const char **virname, long int *scanned, const struct c |
508 | 508 |
if(lseek(desc, ep, SEEK_SET) == -1) { |
509 | 509 |
cli_dbgmsg("lseek() failed\n"); |
510 | 510 |
free(section_hdr); |
511 |
+ free(src); |
|
512 |
+ free(dest); |
|
511 | 513 |
return CL_EIO; |
512 | 514 |
} |
513 | 515 |
|
514 | 516 |
if(read(desc, buff, 126) != 126) { /* i.e. 0x69 + 13 + 8 */ |
515 | 517 |
cli_dbgmsg("UPX: Can't read 126 bytes at 0x%x (%d)\n", ep, ep); |
518 |
+ free(section_hdr); |
|
519 |
+ free(src); |
|
520 |
+ free(dest); |
|
516 | 521 |
return CL_EIO; |
517 | 522 |
} else { |
518 | 523 |
if(cli_memstr(UPX_NRV2B, 24, buff + 0x69, 13) || cli_memstr(UPX_NRV2B, 24, buff + 0x69 + 8, 13)) { |