Browse code

Add another Office2003 VBA signature.

git-svn-id: file:///var/lib/svn/clamav-devel/trunk/clamav-devel@537 77e5149b-7576-45b1-b177-96237e5ba77b

Trog authored on 2004/05/05 19:32:03
Showing 2 changed files
... ...
@@ -1,3 +1,7 @@
1
+Wed May  5 11:32:22 BST 2004 (trog)
2
+-----------------------------------
3
+  * libclamav/vba_extract.c: Add another Office2003 VBA signature.
4
+
1 5
 Wed May  5 10:39:58 BST 2004 (njh)
2 6
 ----------------------------------
3 7
   * libclamav/text.c:	Removed the functionality of textClean, it isn't needed
... ...
@@ -88,7 +88,7 @@ typedef struct byte_array_tag {
88 88
 	unsigned char *data;
89 89
 } byte_array_t;
90 90
 
91
-#define NUM_VBA_VERSIONS 12
91
+#define NUM_VBA_VERSIONS 13
92 92
 vba_version_t vba_version[] = {
93 93
 	{ { 0x5e, 0x00, 0x00, 0x01 }, "Office 97",              5, FALSE},
94 94
 	{ { 0x5f, 0x00, 0x00, 0x01 }, "Office 97 SR1",          5, FALSE },
... ...
@@ -98,6 +98,7 @@ vba_version_t vba_version[] = {
98 98
 	{ { 0x6f, 0x00, 0x00, 0x01 }, "Office 2000",            6, FALSE },
99 99
 	{ { 0x70, 0x00, 0x00, 0x01 }, "Office XP beta 1/2",     6, FALSE },
100 100
 	{ { 0x73, 0x00, 0x00, 0x01 }, "Office XP",              6, FALSE },
101
+	{ { 0x76, 0x00, 0x00, 0x01 }, "Office 2003",            6, FALSE },
101 102
 	{ { 0x79, 0x00, 0x00, 0x01 }, "Office 2003",            6, FALSE },
102 103
 	{ { 0x60, 0x00, 0x00, 0x0e }, "MacOffice 98",           5, TRUE },
103 104
 	{ { 0x62, 0x00, 0x00, 0x0e }, "MacOffice 2001",         5, TRUE },
... ...
@@ -714,42 +715,42 @@ static void wm_print_fib(mso_fib_t *fib)
714 714
 static int wm_read_fib(int fd, mso_fib_t *fib)
715 715
 {
716 716
 	if (cli_readn(fd, &fib->magic, 2) != 2) {
717
-		printf("read wm_fib failed\n");
717
+		cli_dbgmsg("read wm_fib failed\n");
718 718
 		return FALSE;
719 719
 	}
720 720
 	if (cli_readn(fd, &fib->version, 2) != 2) {
721
-		printf("read wm_fib failed\n");
721
+		cli_dbgmsg("read wm_fib failed\n");
722 722
 		return FALSE;
723 723
 	}
724 724
 	if (cli_readn(fd, &fib->product, 2) != 2) {
725
-		printf("read wm_fib failed\n");
725
+		cli_dbgmsg("read wm_fib failed\n");
726 726
 		return FALSE;
727 727
 	}
728 728
 	if (cli_readn(fd, &fib->lid, 2) != 2) {
729
-		printf("read wm_fib failed\n");
729
+		cli_dbgmsg("read wm_fib failed\n");
730 730
 		return FALSE;
731 731
 	}	
732 732
 	if (cli_readn(fd, &fib->next, 2) != 2) {
733
-		printf("read wm_fib failed\n");
733
+		cli_dbgmsg("read wm_fib failed\n");
734 734
 		return FALSE;
735 735
 	}
736 736
 	if (cli_readn(fd, &fib->status, 2) != 2) {
737
-		printf("read wm_fib failed\n");
737
+		cli_dbgmsg("read wm_fib failed\n");
738 738
 		return FALSE;
739 739
 	}
740 740
 	
741 741
 	/* don't need the information is this block, so seek forward */
742 742
 	if (lseek(fd, 0x118, SEEK_SET) != 0x118) {
743
-		printf("lseek wm_fib failed\n");
743
+		cli_dbgmsg("lseek wm_fib failed\n");
744 744
 		return FALSE;
745 745
 	}
746 746
 	
747 747
 	if (cli_readn(fd, &fib->macro_offset, 4) != 4) {
748
-		printf("read wm_fib failed\n");
748
+		cli_dbgmsg("read wm_fib failed\n");
749 749
 		return FALSE;
750 750
 	}
751 751
 	if (cli_readn(fd, &fib->macro_len, 4) != 4) {
752
-		printf("read wm_fib failed\n");
752
+		cli_dbgmsg("read wm_fib failed\n");
753 753
 		return FALSE;
754 754
 	}
755 755
 	fib->magic = vba_endian_convert_16(fib->magic, FALSE);
... ...
@@ -767,39 +768,39 @@ static int wm_read_fib(int fd, mso_fib_t *fib)
767 767
 static int wm_read_macro_entry(int fd, macro_entry_t *macro_entry)
768 768
 {
769 769
 	if (cli_readn(fd, &macro_entry->version, 1) != 1) {
770
-		printf("read macro_entry failed\n");
770
+		cli_dbgmsg("read macro_entry failed\n");
771 771
 		return FALSE;
772 772
 	}
773 773
 	if (cli_readn(fd, &macro_entry->key, 1) != 1) {
774
-		printf("read macro_entry failed\n");
774
+		cli_dbgmsg("read macro_entry failed\n");
775 775
 		return FALSE;
776 776
 	}
777 777
 	if (cli_readn(fd, &macro_entry->intname_i, 2) != 2) {
778
-		printf("read macro_entry failed\n");
778
+		cli_dbgmsg("read macro_entry failed\n");
779 779
 		return FALSE;
780 780
 	}	
781 781
 	if (cli_readn(fd, &macro_entry->extname_i, 2) != 2) {
782
-		printf("read macro_entry failed\n");
782
+		cli_dbgmsg("read macro_entry failed\n");
783 783
 		return FALSE;
784 784
 	}
785 785
 	if (cli_readn(fd, &macro_entry->xname_i, 2) != 2) {
786
-		printf("read macro_entry failed\n");
786
+		cli_dbgmsg("read macro_entry failed\n");
787 787
 		return FALSE;
788 788
 	}
789 789
 	if (cli_readn(fd, &macro_entry->unknown, 4) != 4) {
790
-		printf("read macro_entry failed\n");
790
+		cli_dbgmsg("read macro_entry failed\n");
791 791
 		return FALSE;
792 792
 	}
793 793
 	if (cli_readn(fd, &macro_entry->len, 4) != 4) {
794
-		printf("read macro_entry failed\n");
794
+		cli_dbgmsg("read macro_entry failed\n");
795 795
 		return FALSE;
796 796
 	}
797 797
 	if (cli_readn(fd, &macro_entry->state, 4) != 4) {
798
-		printf("read macro_entry failed\n");
798
+		cli_dbgmsg("read macro_entry failed\n");
799 799
 		return FALSE;
800 800
 	}
801 801
 	if (cli_readn(fd, &macro_entry->offset, 4) != 4) {
802
-		printf("read macro_entry failed\n");
802
+		cli_dbgmsg("read macro_entry failed\n");
803 803
 		return FALSE;
804 804
 	}
805 805
 	return TRUE;
... ...
@@ -815,7 +816,7 @@ static macro_info_t *wm_read_macro_info(int fd)
815 815
 		return NULL;
816 816
 	}
817 817
 	if (cli_readn(fd, &macro_info->count, 2) != 2) {
818
-		printf("read macro_info failed\n");
818
+		cli_dbgmsg("read macro_info failed\n");
819 819
 		return NULL;
820 820
 	}
821 821
 	
... ...
@@ -861,12 +862,12 @@ static int wm_read_oxo3(int fd)
861 861
 	cli_dbgmsg("oxo3 records1: %d\n", count);
862 862
 	
863 863
 	if (cli_readn(fd, &count, 1) != 1) {
864
-		printf("read oxo3 record2 failed\n");
864
+		cli_dbgmsg("read oxo3 record2 failed\n");
865 865
 		return FALSE;
866 866
 	}
867 867
 	if (count == 0) {
868 868
 		if (cli_readn(fd, &count, 1) != 1) {
869
-			printf("read oxo3 failed\n");
869
+			cli_dbgmsg("read oxo3 failed\n");
870 870
 			return FALSE;
871 871
 		}
872 872
 		if (count != 2) {
... ...
@@ -874,13 +875,13 @@ static int wm_read_oxo3(int fd)
874 874
 			return TRUE;
875 875
 		}
876 876
 		if (cli_readn(fd, &count, 1) != 1) {
877
-			printf("read oxo3 failed\n");
877
+			cli_dbgmsg("read oxo3 failed\n");
878 878
 			return FALSE;
879 879
 		}
880 880
 	}
881 881
 	if (count > 0) {
882 882
 		if (lseek(fd, (count*4)+1, SEEK_CUR) == -1) {
883
-			printf("lseek oxo3 failed\n");
883
+			cli_dbgmsg("lseek oxo3 failed\n");
884 884
 			return FALSE;
885 885
 		}
886 886
 	}				
... ...
@@ -900,11 +901,11 @@ static menu_info_t *wm_read_menu_info(int fd)
900 900
 	}
901 901
 	
902 902
 	if (cli_readn(fd, &menu_info->count, 2) != 2) {
903
-		printf("read menu_info failed\n");
903
+		cli_dbgmsg("read menu_info failed\n");
904 904
 		free(menu_info);
905 905
 		return NULL;
906 906
 	}
907
-	printf("menu_info count: %d\n", menu_info->count);
907
+	cli_dbgmsg("menu_info count: %d\n", menu_info->count);
908 908
 	
909 909
 	menu_info->menu_entry =
910 910
 		(menu_entry_t *) cli_malloc(sizeof(menu_entry_t) * menu_info->count);
... ...
@@ -979,7 +980,7 @@ static macro_extnames_t *wm_read_macro_extnames(int fd)
979 979
 	if (size == -1) { /* Unicode flag */
980 980
 		is_unicode=1;
981 981
 		if (cli_readn(fd, &size, 2) != 2) {
982
-			printf("read macro_extnames failed\n");
982
+			cli_dbgmsg("read macro_extnames failed\n");
983 983
 			free(macro_extnames);
984 984
 			return NULL;
985 985
 		}
... ...
@@ -1008,7 +1009,7 @@ static macro_extnames_t *wm_read_macro_extnames(int fd)
1008 1008
 		macro_extname = &macro_extnames->macro_extname[macro_extnames->count-1];
1009 1009
 		if (is_unicode) {
1010 1010
 			if (cli_readn(fd, &macro_extname->length, 2) != 2) {
1011
-				printf("read macro_extnames failed\n");
1011
+				cli_dbgmsg("read macro_extnames failed\n");
1012 1012
 				return NULL;
1013 1013
 			}
1014 1014
 			name_tmp = (char *) cli_malloc(macro_extname->length*2);
... ...
@@ -1017,7 +1018,7 @@ static macro_extnames_t *wm_read_macro_extnames(int fd)
1017 1017
 			}
1018 1018
 			if (cli_readn(fd, name_tmp, macro_extname->length*2) != 
1019 1019
 						macro_extname->length*2) {
1020
-				printf("read macro_extnames failed\n");
1020
+				cli_dbgmsg("read macro_extnames failed\n");
1021 1021
 				free(name_tmp);
1022 1022
 				goto abort;
1023 1023
 			}
... ...
@@ -1026,7 +1027,7 @@ static macro_extnames_t *wm_read_macro_extnames(int fd)
1026 1026
 			free(name_tmp);
1027 1027
 		} else {
1028 1028
 			if (cli_readn(fd, &length_tmp, 1) != 1) {
1029
-				printf("read macro_extnames failed\n");
1029
+				cli_dbgmsg("read macro_extnames failed\n");
1030 1030
 				goto abort;
1031 1031
 			}
1032 1032
 			macro_extname->length = (uint16_t) length_tmp;
... ...
@@ -1037,13 +1038,13 @@ static macro_extnames_t *wm_read_macro_extnames(int fd)
1037 1037
 			}
1038 1038
 			if (cli_readn(fd, macro_extname->extname, macro_extname->length) != 
1039 1039
 						macro_extname->length) {
1040
-				printf("read macro_extnames failed\n");
1040
+				cli_dbgmsg("read macro_extnames failed\n");
1041 1041
 				goto abort;
1042 1042
 			}
1043 1043
 			macro_extname->extname[macro_extname->length] = '\0';
1044 1044
 		}
1045 1045
 		if (cli_readn(fd, &macro_extname->numref, 2) != 2) {
1046
-			printf("read macro_extnames failed\n");
1046
+			cli_dbgmsg("read macro_extnames failed\n");
1047 1047
 			return NULL;
1048 1048
 		}		
1049 1049
 		cli_dbgmsg("ext name: %s\n", macro_extname->extname);
... ...
@@ -1088,7 +1089,7 @@ static macro_intnames_t *wm_read_macro_intnames(int fd)
1088 1088
 	}
1089 1089
 	
1090 1090
 	if (cli_readn(fd, &macro_intnames->count, 2) != 2) {
1091
-		printf("read macro_intnames failed\n");
1091
+		cli_dbgmsg("read macro_intnames failed\n");
1092 1092
 		return NULL;
1093 1093
 	}
1094 1094
 	cli_dbgmsg("int names count: %d\n", macro_intnames->count);
... ...
@@ -1102,12 +1103,12 @@ static macro_intnames_t *wm_read_macro_intnames(int fd)
1102 1102
 	for (i=0 ; i < macro_intnames->count ; i++) {
1103 1103
 		macro_intname = &macro_intnames->macro_intname[i];
1104 1104
 		if (cli_readn(fd, &macro_intname->id, 2) != 2) {
1105
-			printf("read macro_intnames failed\n");
1105
+			cli_dbgmsg("read macro_intnames failed\n");
1106 1106
 			macro_intnames->count = i;
1107 1107
 			goto abort;
1108 1108
 		}		
1109 1109
 		if (cli_readn(fd, &macro_intname->length, 1) != 1) {
1110
-			printf("read macro_intnames failed\n");
1110
+			cli_dbgmsg("read macro_intnames failed\n");
1111 1111
 			macro_intnames->count = i;
1112 1112
 			goto abort;;
1113 1113
 		}	
... ...
@@ -1117,17 +1118,17 @@ static macro_intnames_t *wm_read_macro_intnames(int fd)
1117 1117
 			goto abort;
1118 1118
 		}
1119 1119
 		if (cli_readn(fd, macro_intname->intname, macro_intname->length) != macro_intname->length) {
1120
-			printf("read macro_intnames failed\n");
1120
+			cli_dbgmsg("read macro_intnames failed\n");
1121 1121
 			macro_intnames->count = i+1;
1122 1122
 			goto abort;
1123 1123
 		}
1124 1124
 		macro_intname->intname[macro_intname->length] = '\0';
1125 1125
 		if (cli_readn(fd, &junk, 1) != 1) {
1126
-			printf("read macro_intnames failed\n");
1126
+			cli_dbgmsg("read macro_intnames failed\n");
1127 1127
 			macro_intnames->count = i+1;
1128 1128
 			goto abort;
1129 1129
 		}
1130
-		printf ("int name: %s\n", macro_intname->intname);
1130
+		cli_dbgmsg("int name: %s\n", macro_intname->intname);
1131 1131
 	}
1132 1132
 	return macro_intnames;
1133 1133
 abort:
... ...
@@ -1188,14 +1189,14 @@ vba_project_t *wm_dir_read(const char *dir)
1188 1188
 	end_offset = fib.macro_offset + fib.macro_len;
1189 1189
 	
1190 1190
 	if (cli_readn(fd, &start_id, 1) != 1) {
1191
-		printf("read start_id failed\n");
1191
+		cli_dbgmsg("read start_id failed\n");
1192 1192
 		return NULL;
1193 1193
 	}
1194 1194
 	cli_dbgmsg("start_id: %d\n", start_id);
1195 1195
 	
1196 1196
 	while ((lseek(fd, 0, SEEK_CUR) < end_offset) && !done) {
1197 1197
 		if (cli_readn(fd, &info_id, 1) != 1) {
1198
-			printf("read macro_info failed\n");
1198
+			cli_dbgmsg("read macro_info failed\n");
1199 1199
 			return NULL;
1200 1200
 		}
1201 1201
 		switch (info_id) {