...
|
...
|
@@ -803,6 +803,13 @@ static int wm_read_macro_entry(int fd, macro_entry_t *macro_entry)
|
803
|
803
|
cli_dbgmsg("read macro_entry failed\n");
|
804
|
804
|
return FALSE;
|
805
|
805
|
}
|
|
806
|
+
|
|
807
|
+ macro_entry->intname_i = vba_endian_convert_16(macro_entry->intname_i, FALSE);
|
|
808
|
+ macro_entry->extname_i = vba_endian_convert_16(macro_entry->extname_i, FALSE);
|
|
809
|
+ macro_entry->xname_i = vba_endian_convert_16(macro_entry->xname_i, FALSE);
|
|
810
|
+ macro_entry->len = vba_endian_convert_32(macro_entry->len, FALSE);
|
|
811
|
+ macro_entry->state = vba_endian_convert_32(macro_entry->state, FALSE);
|
|
812
|
+ macro_entry->offset = vba_endian_convert_32(macro_entry->offset, FALSE);
|
806
|
813
|
return TRUE;
|
807
|
814
|
}
|
808
|
815
|
|
...
|
...
|
@@ -819,7 +826,7 @@ static macro_info_t *wm_read_macro_info(int fd)
|
819
|
819
|
cli_dbgmsg("read macro_info failed\n");
|
820
|
820
|
return NULL;
|
821
|
821
|
}
|
822
|
|
-
|
|
822
|
+ macro_info->count = vba_endian_convert_16(macro_info->count, FALSE);
|
823
|
823
|
cli_dbgmsg("macro count: %d\n", macro_info->count);
|
824
|
824
|
macro_info->macro_entry = (macro_entry_t *)
|
825
|
825
|
cli_malloc(sizeof(macro_entry_t) * macro_info->count);
|
...
|
...
|
@@ -905,6 +912,7 @@ static menu_info_t *wm_read_menu_info(int fd)
|
905
|
905
|
free(menu_info);
|
906
|
906
|
return NULL;
|
907
|
907
|
}
|
|
908
|
+ menu_info->count = vba_endian_convert_16(menu_info->count, FALSE);
|
908
|
909
|
cli_dbgmsg("menu_info count: %d\n", menu_info->count);
|
909
|
910
|
|
910
|
911
|
menu_info->menu_entry =
|
...
|
...
|
@@ -934,6 +942,11 @@ static menu_info_t *wm_read_menu_info(int fd)
|
934
|
934
|
if (cli_readn(fd, &menu_entry->pos, 2) != 2) {
|
935
|
935
|
goto abort;
|
936
|
936
|
}
|
|
937
|
+ menu_entry->context = vba_endian_convert_16(menu_entry->context, FALSE);
|
|
938
|
+ menu_entry->menu = vba_endian_convert_16(menu_entry->menu, FALSE);
|
|
939
|
+ menu_entry->extname_i = vba_endian_convert_16(menu_entry->extname_i, FALSE);
|
|
940
|
+ menu_entry->intname_i = vba_endian_convert_16(menu_entry->intname_i, FALSE);
|
|
941
|
+ menu_entry->pos = vba_endian_convert_16(menu_entry->pos, FALSE);
|
937
|
942
|
cli_dbgmsg("menu entry: %d.%d\n", menu_entry->menu, menu_entry->pos);
|
938
|
943
|
}
|
939
|
944
|
return menu_info;
|
...
|
...
|
@@ -977,6 +990,7 @@ static macro_extnames_t *wm_read_macro_extnames(int fd)
|
977
|
977
|
free(macro_extnames);
|
978
|
978
|
return NULL;
|
979
|
979
|
}
|
|
980
|
+ size = vba_endian_convert_16(size, FALSE);
|
980
|
981
|
if (size == -1) { /* Unicode flag */
|
981
|
982
|
is_unicode=1;
|
982
|
983
|
if (cli_readn(fd, &size, 2) != 2) {
|
...
|
...
|
@@ -984,6 +998,7 @@ static macro_extnames_t *wm_read_macro_extnames(int fd)
|
984
|
984
|
free(macro_extnames);
|
985
|
985
|
return NULL;
|
986
|
986
|
}
|
|
987
|
+ size = vba_endian_convert_16(size, FALSE);
|
987
|
988
|
}
|
988
|
989
|
cli_dbgmsg("ext names size: 0x%x\n", size);
|
989
|
990
|
|
...
|
...
|
@@ -1008,45 +1023,56 @@ static macro_extnames_t *wm_read_macro_extnames(int fd)
|
1008
|
1008
|
}
|
1009
|
1009
|
macro_extname = ¯o_extnames->macro_extname[macro_extnames->count-1];
|
1010
|
1010
|
if (is_unicode) {
|
1011
|
|
- if (cli_readn(fd, ¯o_extname->length, 2) != 2) {
|
|
1011
|
+ if (cli_readn(fd, ¯o_extname->length, 1) != 1) {
|
1012
|
1012
|
cli_dbgmsg("read macro_extnames failed\n");
|
1013
|
1013
|
return NULL;
|
1014
|
1014
|
}
|
1015
|
|
- name_tmp = (char *) cli_malloc(macro_extname->length*2);
|
1016
|
|
- if (name_tmp == NULL) {
|
|
1015
|
+ lseek(fd, 1, SEEK_CUR);
|
|
1016
|
+ if (macro_extname->length > 0) {
|
|
1017
|
+ name_tmp = (char *) cli_malloc(macro_extname->length*2);
|
|
1018
|
+ if (name_tmp == NULL) {
|
1017
|
1019
|
goto abort;
|
1018
|
|
- }
|
1019
|
|
- if (cli_readn(fd, name_tmp, macro_extname->length*2) !=
|
|
1020
|
+ }
|
|
1021
|
+ if (cli_readn(fd, name_tmp, macro_extname->length*2) !=
|
1020
|
1022
|
macro_extname->length*2) {
|
1021
|
1023
|
cli_dbgmsg("read macro_extnames failed\n");
|
1022
|
1024
|
free(name_tmp);
|
1023
|
1025
|
goto abort;
|
|
1026
|
+ }
|
|
1027
|
+ macro_extname->extname =
|
|
1028
|
+ get_unicode_name(name_tmp, macro_extname->length*2, FALSE);
|
|
1029
|
+ free(name_tmp);
|
|
1030
|
+ } else {
|
|
1031
|
+ macro_extname->extname = strdup("[no name]");
|
|
1032
|
+ macro_extname->length = 10;
|
1024
|
1033
|
}
|
1025
|
|
- macro_extname->extname =
|
1026
|
|
- get_unicode_name(name_tmp, macro_extname->length*2, FALSE);
|
1027
|
|
- free(name_tmp);
|
1028
|
1034
|
} else {
|
1029
|
|
- if (cli_readn(fd, &length_tmp, 1) != 1) {
|
|
1035
|
+ if (cli_readn(fd, ¯o_extname->length, 1) != 1) {
|
1030
|
1036
|
cli_dbgmsg("read macro_extnames failed\n");
|
1031
|
1037
|
goto abort;
|
1032
|
1038
|
}
|
1033
|
|
- macro_extname->length = (uint16_t) length_tmp;
|
1034
|
|
- macro_extname->extname = (char *) cli_malloc(macro_extname->length+1);
|
1035
|
|
- if (!macro_extname->extname) {
|
|
1039
|
+ if (macro_extname->length > 0) {
|
|
1040
|
+ macro_extname->extname = (char *) cli_malloc(macro_extname->length+1);
|
|
1041
|
+ if (!macro_extname->extname) {
|
1036
|
1042
|
macro_extnames->count--;
|
1037
|
1043
|
goto abort;
|
1038
|
|
- }
|
1039
|
|
- if (cli_readn(fd, macro_extname->extname, macro_extname->length) !=
|
|
1044
|
+ }
|
|
1045
|
+ if (cli_readn(fd, macro_extname->extname, macro_extname->length) !=
|
1040
|
1046
|
macro_extname->length) {
|
1041
|
1047
|
cli_dbgmsg("read macro_extnames failed\n");
|
1042
|
1048
|
goto abort;
|
|
1049
|
+ }
|
|
1050
|
+ macro_extname->extname[macro_extname->length] = '\0';
|
|
1051
|
+ } else {
|
|
1052
|
+ macro_extname->extname = strdup("[no name]");
|
|
1053
|
+ macro_extname->length = 10;
|
1043
|
1054
|
}
|
1044
|
|
- macro_extname->extname[macro_extname->length] = '\0';
|
1045
|
1055
|
}
|
1046
|
1056
|
if (cli_readn(fd, ¯o_extname->numref, 2) != 2) {
|
1047
|
1057
|
cli_dbgmsg("read macro_extnames failed\n");
|
1048
|
1058
|
return NULL;
|
1049
|
|
- }
|
|
1059
|
+ }
|
|
1060
|
+ macro_extname->numref = vba_endian_convert_16(macro_extname->numref, FALSE);
|
1050
|
1061
|
cli_dbgmsg("ext name: %s\n", macro_extname->extname);
|
1051
|
1062
|
}
|
1052
|
1063
|
return macro_extnames;
|
...
|
...
|
@@ -1092,6 +1118,7 @@ static macro_intnames_t *wm_read_macro_intnames(int fd)
|
1092
|
1092
|
cli_dbgmsg("read macro_intnames failed\n");
|
1093
|
1093
|
return NULL;
|
1094
|
1094
|
}
|
|
1095
|
+ macro_intnames->count = vba_endian_convert_16(macro_intnames->count, FALSE);
|
1095
|
1096
|
cli_dbgmsg("int names count: %d\n", macro_intnames->count);
|
1096
|
1097
|
|
1097
|
1098
|
macro_intnames->macro_intname =
|
...
|
...
|
@@ -1106,7 +1133,8 @@ static macro_intnames_t *wm_read_macro_intnames(int fd)
|
1106
|
1106
|
cli_dbgmsg("read macro_intnames failed\n");
|
1107
|
1107
|
macro_intnames->count = i;
|
1108
|
1108
|
goto abort;
|
1109
|
|
- }
|
|
1109
|
+ }
|
|
1110
|
+ macro_intname->id = vba_endian_convert_16(macro_intname->id, FALSE);
|
1110
|
1111
|
if (cli_readn(fd, ¯o_intname->length, 1) != 1) {
|
1111
|
1112
|
cli_dbgmsg("read macro_intnames failed\n");
|
1112
|
1113
|
macro_intnames->count = i;
|