Browse code

fix handling of md5 digests (bb#866)

git-svn: trunk@3687

Tomasz Kojm authored on 2008/03/03 20:14:58
Showing 2 changed files
... ...
@@ -1,3 +1,7 @@
1
+Mon Mar  3 11:19:25 CET 2008 (tk)
2
+---------------------------------
3
+  * libclamav/pdf.c: fix handling of md5 digests (bb#866)
4
+
1 5
 Thu Feb 28 19:36:55 CET 2008 (tk)
2 6
 ---------------------------------
3 7
   * clamscan/manager.c: honour --unrar when libclamunrar is not compiled in
... ...
@@ -477,18 +477,23 @@ cli_pdf(const char *dir, int desc, cli_ctx *ctx)
477 477
 			cli_dbgmsg("cli_pdf: extracted file %u to %s\n", files++, fullname);
478 478
 	
479 479
 			lseek(fout, 0, SEEK_SET);
480
-			md5digest = cli_md5digest(fout);
480
+			if((md5digest = cli_md5digest(fout))) {
481
+				unsigned int i;
482
+				char md5str[33];
481 483
 
482
-			if(tableFind(md5table, md5digest) >= 0) {
483
-				cli_dbgmsg("cli_pdf: not scanning duplicate embedded file '%s'\n", fullname);
484
+				for(i = 0; i < 16; i++)
485
+					sprintf(md5str + 2*i, "%02x", md5digest[i]);
486
+				md5str[32] = 0;
484 487
 				free(md5digest);
485
-				close(fout);
486
-				unlink(fullname);
487
-				continue;
488
-			} else
489
-				tableInsert(md5table, md5digest, 1);
490 488
 
491
-			free(md5digest);
489
+				if(tableFind(md5table, md5str) >= 0) {
490
+					cli_dbgmsg("cli_pdf: not scanning duplicate embedded file '%s'\n", fullname);
491
+					close(fout);
492
+					unlink(fullname);
493
+					continue;
494
+				} else
495
+					tableInsert(md5table, md5str, 1);
496
+			}
492 497
 
493 498
 			lseek(fout, 0, SEEK_SET);
494 499
 			rc = cli_magic_scandesc(fout, ctx);