git-svn: trunk@3576
Tomasz Kojm authored on 2008/02/04 03:08:12... | ... |
@@ -1,3 +1,7 @@ |
1 |
+Sun Feb 3 18:49:57 CET 2008 (tk) |
|
2 |
+--------------------------------- |
|
3 |
+ * libclamav/chmunpack.c: fix invalid free() (bb#809) |
|
4 |
+ |
|
1 | 5 |
Sun Feb 3 10:38:08 EET 2008 (edwin) |
2 | 6 |
------------------------------------ |
3 | 7 |
* libclamav/entconv.c: don't leave return value uninitialized. (bb #808). |
... | ... |
@@ -481,7 +481,7 @@ static int read_chunk(chm_metadata_t *metadata, int fd) |
481 | 481 |
metadata->chunk_entries = (uint16_t)((((uint8_t const *)(metadata->chunk_data))[metadata->itsp_hdr.block_len-2] << 0) |
482 | 482 |
| (((uint8_t const *)(metadata->chunk_data))[metadata->itsp_hdr.block_len-1] << 8)); |
483 | 483 |
} else if (memcmp(metadata->chunk_data, "PMGI", 4) != 0) { |
484 |
- if (metadata->m_area != NULL) { |
|
484 |
+ if (!metadata->m_area && metadata->chunk_data) { |
|
485 | 485 |
free(metadata->chunk_data); |
486 | 486 |
} |
487 | 487 |
return CL_BREAK; |
... | ... |
@@ -489,7 +489,7 @@ static int read_chunk(chm_metadata_t *metadata, int fd) |
489 | 489 |
|
490 | 490 |
return CL_SUCCESS; |
491 | 491 |
abort: |
492 |
- if (metadata->m_area != NULL) { |
|
492 |
+ if (!metadata->m_area && metadata->chunk_data) { |
|
493 | 493 |
free(metadata->chunk_data); |
494 | 494 |
metadata->chunk_data = NULL; |
495 | 495 |
} |
... | ... |
@@ -785,7 +785,6 @@ static int chm_init_metadata(chm_metadata_t *metadata) |
785 | 785 |
|
786 | 786 |
metadata->sys_control.length = metadata->sys_content.length = metadata->sys_reset.length = 0; |
787 | 787 |
metadata->m_area = NULL; |
788 |
- metadata->m_area = 0; |
|
789 | 788 |
metadata->ufd = -1; |
790 | 789 |
metadata->num_chunks = metadata->chunk_entries = 0; |
791 | 790 |
metadata->chunk_data = NULL; |
... | ... |
@@ -802,7 +801,7 @@ void cli_chm_close(chm_metadata_t *metadata) |
802 | 802 |
} |
803 | 803 |
#ifdef HAVE_MMAP |
804 | 804 |
if (metadata->m_area) { |
805 |
- munmap(metadata->m_area, metadata-> m_length); |
|
805 |
+ munmap(metadata->m_area, metadata->m_length); |
|
806 | 806 |
} |
807 | 807 |
#endif |
808 | 808 |
} |