Differences From
Artifact [4f9408c216]:
- File
src/freexl.c
— part of check-in
[31132605d4]
at
2015-03-22 11:39:50
on branch trunk
— fixing a regression and switching to 1.0.1
(user:
sandro
size: 119248)
To Artifact [44802d385b]:
- File
src/freexl.c
— part of check-in
[acfda2fa74]
at
2015-07-14 07:39:24
on branch trunk
— fixing a critical bug (32 bit multiplication overflow) reported by RHEL maintainers
(user:
sandro
size: 119639)
1072 1072
1073 1073 static int
1074 1074 allocate_cells (biff_workbook * workbook)
1075 1075 {
1076 1076 /* allocating the rows and cells for the active Worksheet */
1077 1077 unsigned int row;
1078 1078 unsigned int col;
1079 + double dsize;
1079 1080 biff_cell_value *p_cell;
1080 1081
1081 1082 if (workbook == NULL)
1082 1083 return FREEXL_NULL_ARGUMENT;
1083 1084 if (workbook->active_sheet == NULL)
1084 1085 return FREEXL_NULL_ARGUMENT;
1086 +
1087 +/* testing for an unrealistically high memory size > 256MB */
1088 + dsize =
1089 + (double) sizeof (biff_cell_value) *
1090 + (double) (workbook->active_sheet->rows) *
1091 + (double) (workbook->active_sheet->columns);
1092 + if (dsize > 256.0 * 1024.0 * 1024.0)
1093 + return FREEXL_INSUFFICIENT_MEMORY;
1085 1094
1086 1095 /* allocating the cell values array */
1087 1096 workbook->active_sheet->cell_values =
1088 1097 malloc (sizeof (biff_cell_value) *
1089 1098 (workbook->active_sheet->rows *
1090 1099 workbook->active_sheet->columns));
1091 1100 if (workbook->active_sheet->cell_values == NULL)
................................................................................
1731 1740 if (workbook->shared_strings.string_count > 1024 * 1024)
1732 1741 {
1733 1742 /* unexpected huge count ... cowardly giving up ... */
1734 1743 return FREEXL_INSUFFICIENT_MEMORY;
1735 1744 }
1736 1745 workbook->shared_strings.utf8_strings =
1737 1746 malloc (sizeof (char **) * workbook->shared_strings.string_count);
1747 + if (workbook->shared_strings.utf8_strings == NULL)
1748 + return FREEXL_INSUFFICIENT_MEMORY;
1738 1749 for (i_string = 0; i_string < workbook->shared_strings.string_count;
1739 1750 i_string++)
1740 1751 *(workbook->shared_strings.utf8_strings + i_string) = NULL;
1741 1752 }
1742 1753 else
1743 1754 {
1744 1755 /* SST-CONTINUE */