Browse code

improve handling of multi-volume archives

git-svn: trunk@2881

Tomasz Kojm authored on 2007/03/01 12:35:21
Showing 2 changed files
... ...
@@ -1,3 +1,9 @@
1
+Thu Mar  1 02:36:40 CET 2007 (tk)
2
+---------------------------------
3
+  * libclamav/unrar/unrar.c: improve handling of multi-volume archives: do not
4
+			     report CL_ESUPPORT, instead scan all complete
5
+			     files and do full metadata scan
6
+
1 7
 Wed Feb 28 23:40:04 CET 2007 (tk)
2 8
 ---------------------------------
3 9
   * libclamav/others.h: update NAME_MAX block and add workaround for HP-UX
... ...
@@ -1459,18 +1459,6 @@ int cli_unrar_open(int fd, const char *dirname, rar_state_t* state)
1459 1459
 		return CL_EMEM;
1460 1460
 	}
1461 1461
 
1462
-	if ((main_hdr->flags & MHD_VOLUME) != 0) {
1463
-		/* Part of a RAR VOLUME - Skip it */
1464
-		cli_dbgmsg("RAR MUTIPART VOLUME - Skippng.\n");
1465
-		free(main_hdr);
1466
-		ppm_destructor(&unpack_data->ppm_data);
1467
-		init_filters(unpack_data);
1468
-		unpack_free_data(unpack_data);
1469
-		free(unpack_data);
1470
-		free(state->comment_dir);
1471
-		return CL_ESUPPORT;
1472
-        }
1473
-
1474 1462
 	if (main_hdr->head_size < SIZEOF_NEWMHD) {
1475 1463
 		free(main_hdr);
1476 1464
 		ppm_destructor(&unpack_data->ppm_data);
... ...
@@ -1618,6 +1606,10 @@ int cli_unrar_extract_next(rar_state_t* state,const char* dirname)
1618 1618
 	if (state->file_header->flags & LHD_PASSWORD) {
1619 1619
 		cli_dbgmsg("PASSWORDed file: %s\n", state->file_header->filename);
1620 1620
 		state->metadata_tail->encrypted = TRUE;
1621
+
1622
+	} else if(state->file_header->flags & (LHD_SPLIT_BEFORE | LHD_SPLIT_AFTER)) {
1623
+	        cli_dbgmsg("Skipping split file\n");
1624
+
1621 1625
 	} else /*if (file_header->unpack_size)*/ {
1622 1626
 		snprintf(state->filename, 1024, "%s/%lu.ura", dirname, state->file_count);
1623 1627
 		ofd = open(state->filename, O_RDWR|O_CREAT|O_TRUNC|O_BINARY, 0600);