summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStanislav Malyshev <stas@php.net>2007-02-24 03:08:05 +0000
committerStanislav Malyshev <stas@php.net>2007-02-24 03:08:05 +0000
commit698f114ddc810fa63529f76f8541bfab3bfea4f2 (patch)
treeede2fb1c45ca5222a9154777ed6f22266deaa755
parent6223b18134a138483c09b1439ace6b8f2b310c7b (diff)
downloadphp-git-698f114ddc810fa63529f76f8541bfab3bfea4f2.tar.gz
use safe allocations
-rw-r--r--ext/exif/exif.c19
1 files changed, 11 insertions, 8 deletions
diff --git a/ext/exif/exif.c b/ext/exif/exif.c
index f69f73f761..0a3e5beb19 100644
--- a/ext/exif/exif.c
+++ b/ext/exif/exif.c
@@ -84,6 +84,9 @@ typedef unsigned char uchar;
#ifndef safe_emalloc
# define safe_emalloc(a,b,c) emalloc((a)*(b)+(c))
#endif
+#ifndef safe_erealloc
+# define safe_erealloc(p,a,b,c) erealloc(p, (a)*(b)+(c))
+#endif
#ifndef TRUE
# define TRUE 1
@@ -1597,7 +1600,7 @@ static int exif_file_sections_add(image_info_type *ImageInfo, int type, size_t s
file_section *tmp;
int count = ImageInfo->file.count;
- tmp = erealloc(ImageInfo->file.list, (count+1)*sizeof(file_section));
+ tmp = safe_erealloc(ImageInfo->file.list, (count+1), sizeof(file_section), 0);
ImageInfo->file.list = tmp;
ImageInfo->file.list[count].type = 0xFFFF;
ImageInfo->file.list[count].data = NULL;
@@ -1629,7 +1632,7 @@ static int exif_file_sections_realloc(image_info_type *ImageInfo, int section_in
EXIF_ERRLOG_FSREALLOC(ImageInfo)
return -1;
}
- tmp = erealloc(ImageInfo->file.list[section_index].data, size);
+ tmp = safe_erealloc(ImageInfo->file.list[section_index].data, 1, size, 0);
ImageInfo->file.list[section_index].data = tmp;
ImageInfo->file.list[section_index].size = size;
return 0;
@@ -1669,7 +1672,7 @@ static void exif_iif_add_value(image_info_type *image_info, int section_index, c
return;
}
- list = erealloc(image_info->info_list[section_index].list, (image_info->info_list[section_index].count+1)*sizeof(image_info_data));
+ list = safe_erealloc(image_info->info_list[section_index].list, (image_info->info_list[section_index].count+1), sizeof(image_info_data), 0);
image_info->info_list[section_index].list = list;
info_data = &image_info->info_list[section_index].list[image_info->info_list[section_index].count];
@@ -1807,7 +1810,7 @@ static void exif_iif_add_int(image_info_type *image_info, int section_index, cha
image_info_data *info_data;
image_info_data *list;
- list = erealloc(image_info->info_list[section_index].list, (image_info->info_list[section_index].count+1)*sizeof(image_info_data));
+ list = safe_erealloc(image_info->info_list[section_index].list, (image_info->info_list[section_index].count+1), sizeof(image_info_data), 0);
image_info->info_list[section_index].list = list;
info_data = &image_info->info_list[section_index].list[image_info->info_list[section_index].count];
@@ -1830,7 +1833,7 @@ static void exif_iif_add_str(image_info_type *image_info, int section_index, cha
image_info_data *list;
if (value) {
- list = erealloc(image_info->info_list[section_index].list, (image_info->info_list[section_index].count+1)*sizeof(image_info_data));
+ list = safe_erealloc(image_info->info_list[section_index].list, (image_info->info_list[section_index].count+1), sizeof(image_info_data), 0);
image_info->info_list[section_index].list = list;
info_data = &image_info->info_list[section_index].list[image_info->info_list[section_index].count];
info_data->tag = TAG_NONE;
@@ -1875,7 +1878,7 @@ static void exif_iif_add_buffer(image_info_type *image_info, int section_index,
image_info_data *list;
if (value) {
- list = erealloc(image_info->info_list[section_index].list, (image_info->info_list[section_index].count+1)*sizeof(image_info_data));
+ list = safe_erealloc(image_info->info_list[section_index].list, (image_info->info_list[section_index].count+1), sizeof(image_info_data), 0);
image_info->info_list[section_index].list = list;
info_data = &image_info->info_list[section_index].list[image_info->info_list[section_index].count];
info_data->tag = TAG_NONE;
@@ -2489,7 +2492,7 @@ static void exif_thumbnail_build(image_info_type *ImageInfo TSRMLS_DC) {
}
}
new_move = new_size;
- new_data = erealloc(ImageInfo->Thumbnail.data, ImageInfo->Thumbnail.size+new_size);
+ new_data = safe_erealloc(ImageInfo->Thumbnail.data, 1, ImageInfo->Thumbnail.size, new_size);
ImageInfo->Thumbnail.data = new_data;
memmove(ImageInfo->Thumbnail.data + new_move, ImageInfo->Thumbnail.data, ImageInfo->Thumbnail.size);
ImageInfo->Thumbnail.size += new_size;
@@ -2985,7 +2988,7 @@ static int exif_process_IFD_TAG(image_info_type *ImageInfo, char *dir_entry, cha
case TAG_XP_AUTHOR:
case TAG_XP_KEYWORDS:
case TAG_XP_SUBJECT:
- tmp_xp = (xp_field_type*)erealloc(ImageInfo->xp_fields.list, sizeof(xp_field_type)*(ImageInfo->xp_fields.count+1));
+ tmp_xp = (xp_field_type*)safe_erealloc(ImageInfo->xp_fields.list, (ImageInfo->xp_fields.count+1), sizeof(xp_field_type), 0);
ImageInfo->sections_found |= FOUND_WINXP;
ImageInfo->xp_fields.list = tmp_xp;
ImageInfo->xp_fields.count++;