Browse code

better fix for bb#350

git-svn: trunk@2885

Trog authored on 2007/03/01 22:21:29
Showing 3 changed files
... ...
@@ -1,3 +1,7 @@
1
+Thu Mar  1 11:24:40 GMT 2007 (trog)
2
+-----------------------------------
3
+  * libclamav/unrar/unrar.c, unrarvm.c: better fix for bb#350
4
+
1 5
 Thu Mar  1 11:43:07 CET 2007 (tk)
2 6
 ---------------------------------
3 7
   * libclamav/unrar/unrar.c: skip all files inside multi-volume solid archives
... ...
@@ -1501,6 +1501,7 @@ int cli_unrar_open(int fd, const char *dirname, rar_state_t* state)
1501 1501
 					unpack_data->dest_unp_size = comment_header->unpack_size;
1502 1502
 					unpack_data->pack_size = comment_header->head_size - SIZEOF_COMMHEAD;
1503 1503
                         		retval = rar_unpack(fd, comment_header->unpack_ver, FALSE, unpack_data);
1504
+					unpack_free_data(unpack_data);
1504 1505
 				}
1505 1506
 				close(ofd);
1506 1507
 			}
... ...
@@ -139,7 +139,7 @@ void rarvm_set_value(int byte_mode, unsigned int *addr, unsigned int value)
139 139
 
140 140
 uint32_t crc_tab[256];
141 141
 
142
-static void init_crc()
142
+static void rar_crc_init()
143 143
 {
144 144
 	int i, j;
145 145
 	unsigned int c;
... ...
@@ -190,11 +190,8 @@ uint32_t rar_crc(uint32_t start_crc, void *addr, uint32_t size)
190 190
 
191 191
 int rarvm_init(rarvm_data_t *rarvm_data)
192 192
 {
193
-	if(rarvm_data->mem) {
194
-		free(rarvm_data->mem);/* prevent leaks */
195
-	}
196 193
 	rarvm_data->mem = (uint8_t *) cli_malloc(RARVM_MEMSIZE+4);
197
-	init_crc();
194
+	rar_crc_init();
198 195
 	if (!rarvm_data->mem) {
199 196
 		return FALSE;
200 197
 	}