helly Thu May 29 10:12:08 2003 EDT
Modified files: (Branch: PHP_4_3)
/php4/ext/exif exif.c
Log:
MFH
@Changed exif extension to consider php.ini option magic_quotes_runtime. (Marcus)
Index: php4/ext/exif/exif.c
diff -u php4/ext/exif/exif.c:1.118.2.19 php4/ext/exif/exif.c:1.118.2.20
--- php4/ext/exif/exif.c:1.118.2.19 Wed Apr 16 14:25:35 2003
+++ php4/ext/exif/exif.c Thu May 29 10:12:08 2003
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: exif.c,v 1.118.2.19 2003/04/16 18:25:35 helly Exp $ */
+/* $Id: exif.c,v 1.118.2.20 2003/05/29 14:12:08 helly Exp $ */
/* ToDos
*
@@ -70,6 +70,10 @@
typedef unsigned char uchar;
+#ifndef safe_emalloc
+# define safe_emalloc(a,b,c) emalloc((a)*(b)+(c))
+#endif
+
#ifndef TRUE
# define TRUE 1
# define FALSE 0
@@ -95,7 +99,7 @@
};
/* }}} */
-#define EXIF_VERSION "1.4 $Id: exif.c,v 1.118.2.19 2003/04/16 18:25:35 helly Exp $"
+#define EXIF_VERSION "1.4 $Id: exif.c,v 1.118.2.20 2003/05/29 14:12:08 helly Exp $"
/* {{{ PHP_MINFO_FUNCTION
*/
@@ -134,7 +138,7 @@
{
#if EXIF_USE_MBSTRING
if (new_value && strlen(new_value) && !php_mb_check_encoding_list(new_value
TSRMLS_CC)) {
- php_error_docref( NULL TSRMLS_CC, E_WARNING, "Illegal encoding
ignored: '%s'", new_value);
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Illegal encoding ignored:
'%s'", new_value);
return FAILURE;
}
#endif
@@ -145,7 +149,7 @@
{
#if EXIF_USE_MBSTRING
if (!php_mb_check_encoding_list(new_value TSRMLS_CC)) {
- php_error_docref( NULL TSRMLS_CC, E_WARNING, "Illegal encoding
ignored: '%s'", new_value);
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Illegal encoding ignored:
'%s'", new_value);
return FAILURE;
}
#endif
@@ -234,13 +238,11 @@
/* {{{ error messages
*/
-static const char * EXIF_ERROR_EALLOC = "Cannot allocate memory for all data";
static const char * EXIF_ERROR_FILEEOF = "Unexpected end of file reached";
static const char * EXIF_ERROR_CORRUPT = "File structure corrupted";
static const char * EXIF_ERROR_THUMBEOF = "Thumbnail goes IFD boundary or end of
file reached";
static const char * EXIF_ERROR_FSREALLOC = "Illegal reallocating of undefined file
section";
-#define EXIF_ERRLOG_EALLOC php_error_docref(NULL TSRMLS_CC, E_ERROR,
EXIF_ERROR_EALLOC);
#define EXIF_ERRLOG_FILEEOF php_error_docref(NULL TSRMLS_CC, E_WARNING,
EXIF_ERROR_FILEEOF);
#define EXIF_ERRLOG_CORRUPT php_error_docref(NULL TSRMLS_CC, E_WARNING,
EXIF_ERROR_CORRUPT);
#define EXIF_ERRLOG_THUMBEOF php_error_docref(NULL TSRMLS_CC, E_WARNING,
EXIF_ERROR_THUMBEOF);
@@ -993,11 +995,11 @@
p += sprintf(buf+p, "\n%08X: ", i+offset);
}
if (i<len) {
- c = *addr++;
+ c = *addr++;
p += sprintf(buf+p, "%02X ", c);
tmp[i%16] = c>=32 ? c : '.';
tmp[(i%16)+1] = '\0';
- } else {
+ } else {
p += sprintf(buf+p, " ");
}
if (i%16==15) {
@@ -1137,12 +1139,12 @@
/* Not sure if this is correct (never seen float used in Exif format)
*/
case TAG_FMT_SINGLE:
#ifdef EXIF_DEBUG
- php_error_docref( NULL TSRMLS_CC, E_NOTICE, "Found value of
type single");
+ php_error_docref(NULL TSRMLS_CC, E_NOTICE, "Found value of
type single");
#endif
return (double)*(float *)value;
case TAG_FMT_DOUBLE:
#ifdef EXIF_DEBUG
- php_error_docref( NULL TSRMLS_CC, E_NOTICE, "Found value of
type double");
+ php_error_docref(NULL TSRMLS_CC, E_NOTICE, "Found value of
type double");
#endif
return *(double *)value;
}
@@ -1186,12 +1188,12 @@
/* Not sure if this is correct (never seen float used in Exif format)
*/
case TAG_FMT_SINGLE:
#ifdef EXIF_DEBUG
- php_error_docref( NULL TSRMLS_CC, E_NOTICE, "Found value of
type single");
+ php_error_docref(NULL TSRMLS_CC, E_NOTICE, "Found value of
type single");
#endif
return (size_t)*(float *)value;
case TAG_FMT_DOUBLE:
#ifdef EXIF_DEBUG
- php_error_docref( NULL TSRMLS_CC, E_NOTICE, "Found value of
type double");
+ php_error_docref(NULL TSRMLS_CC, E_NOTICE, "Found value of
type double");
#endif
return (size_t)*(double *)value;
}
@@ -1332,10 +1334,6 @@
len += strlen(exif_get_sectionname(i))+2;
}
sections = safe_emalloc(len, 1, 1);
- if (!sections) {
- EXIF_ERRLOG_EALLOC
- return NULL;
- }
sections[0] = '\0';
len = 0;
for(i=0; i<SECTION_COUNT; i++) {
@@ -1468,9 +1466,6 @@
int count = ImageInfo->file.count;
tmp = erealloc(ImageInfo->file.list, (count+1)*sizeof(file_section));
- if (tmp == NULL) {
- return 0;
- }
ImageInfo->file.list = tmp;
ImageInfo->file.list[count].type = 0xFFFF;
ImageInfo->file.list[count].data = NULL;
@@ -1479,9 +1474,7 @@
if (!size) {
data = NULL;
} else if (data == NULL) {
- if ((data = emalloc(size)) == NULL) {
- return -1;
- }
+ data = emalloc(size);
}
ImageInfo->file.list[count].type = type;
ImageInfo->file.list[count].data = data;
@@ -1497,14 +1490,14 @@
{
void *tmp;
+ /* This is not a malloc/realloc check. It is a plausibility check for the
+ * function parameters (requirements engineering).
+ */
if (section_index >= ImageInfo->file.count) {
EXIF_ERRLOG_FSREALLOC
return -1;
}
- if (!(tmp = erealloc(ImageInfo->file.list[section_index].data, size)) && size)
{
- EXIF_ERRLOG_EALLOC
- return -1;
- }
+ tmp = erealloc(ImageInfo->file.list[section_index].data, size);
ImageInfo->file.list[section_index].data = tmp;
ImageInfo->file.list[section_index].size = size;
return 0;
@@ -1545,10 +1538,6 @@
}
list = erealloc(image_info->info_list[section_index].list,
(image_info->info_list[section_index].count+1)*sizeof(image_info_data));
- if (!list) {
- EXIF_ERRLOG_EALLOC
- return;
- }
image_info->info_list[section_index].list = list;
info_data =
&image_info->info_list[section_index].list[image_info->info_list[section_index].count];
@@ -1556,27 +1545,22 @@
info_data->format = format;
info_data->length = length;
info_data->name = estrdup(name);
- if (!info_data->name) {
- EXIF_ERRLOG_EALLOC
- return;
- }
info_value = &info_data->value;
switch (format) {
case TAG_FMT_STRING:
if (value) {
length = php_strnlen(value, length);
+ if (PG(magic_quotes_runtime)) {
+ info_value->s = php_addslashes(value, length,
&length, 0 TSRMLS_CC);
+ } else {
+ info_value->s = estrndup(value, length);
+ }
info_data->length = length;
- info_value->s = estrndup(value, length);
} else {
info_data->length = 0;
info_value->s = estrdup("");
}
- if (!info_value->s) {
- EXIF_ERRLOG_EALLOC
- info_data->length = 0;
- break; /* better return with "" instead of possible
causing problems */
- }
break;
default:
@@ -1593,15 +1577,17 @@
break;
case TAG_FMT_UNDEFINED:
if (value) {
- info_value->s = estrndup(value, length);
+ /* do not recompute length here */
+ if (PG(magic_quotes_runtime)) {
+ info_value->s = php_addslashes(value, length,
&length, 0 TSRMLS_CC);
+ } else {
+ info_value->s = estrndup(value, length);
+ }
+ info_data->length = length;
} else {
info_data->length = 0;
info_value->s = estrdup("");
}
- if (!info_value->s) {
- EXIF_ERRLOG_EALLOC
- return;
- }
break;
case TAG_FMT_USHORT:
@@ -1616,11 +1602,7 @@
break;
} else
if (length>1) {
- info_data->value.list = safe_emalloc(length,
sizeof(image_info_value), 1);
- if (!info_data->value.list) {
- EXIF_ERRLOG_EALLOC
- return;
- }
+ info_value->list = safe_emalloc(length,
sizeof(image_info_value), 0);
} else {
info_value = &info_data->value;
}
@@ -1657,13 +1639,13 @@
case TAG_FMT_SINGLE:
#ifdef EXIF_DEBUG
- php_error_docref( NULL TSRMLS_CC,
E_WARNING, "Found value of type single");
+ php_error_docref(NULL TSRMLS_CC,
E_WARNING, "Found value of type single");
#endif
info_value->f = *(float *)value;
case TAG_FMT_DOUBLE:
#ifdef EXIF_DEBUG
- php_error_docref( NULL TSRMLS_CC,
E_WARNING, "Found value of type double");
+ php_error_docref(NULL TSRMLS_CC,
E_WARNING, "Found value of type double");
#endif
info_value->d = *(double *)value;
break;
@@ -1693,10 +1675,6 @@
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));
- if (!list) {
- EXIF_ERRLOG_EALLOC
- return;
- }
image_info->info_list[section_index].list = list;
info_data =
&image_info->info_list[section_index].list[image_info->info_list[section_index].count];
@@ -1704,10 +1682,6 @@
info_data->format = TAG_FMT_SLONG;
info_data->length = 1;
info_data->name = estrdup(name);
- if (!info_data->name) {
- EXIF_ERRLOG_EALLOC
- return;
- }
info_data->value.i = value;
image_info->sections_found |= 1<<section_index;
image_info->info_list[section_index].count++;
@@ -1724,24 +1698,16 @@
if (value) {
list = erealloc(image_info->info_list[section_index].list,
(image_info->info_list[section_index].count+1)*sizeof(image_info_data));
- if (!list) {
- EXIF_ERRLOG_EALLOC
- return;
- }
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;
info_data->format = TAG_FMT_STRING;
info_data->length = 1;
info_data->name = estrdup(name);
- if (!info_data->name) {
- EXIF_ERRLOG_EALLOC
- return;
- }
- info_data->value.s = estrdup(value);
- if (!info_data->value.s) {
- EXIF_ERRLOG_EALLOC
- return;
+ if (PG(magic_quotes_runtime)) {
+ info_data->value.s = php_addslashes(value, strlen(value),
NULL, 0 TSRMLS_CC);
+ } else {
+ info_data->value.s = estrdup(value);
}
image_info->sections_found |= 1<<section_index;
image_info->info_list[section_index].count++;
@@ -1777,27 +1743,23 @@
if (value) {
list = erealloc(image_info->info_list[section_index].list,
(image_info->info_list[section_index].count+1)*sizeof(image_info_data));
- if (!list) {
- EXIF_ERRLOG_EALLOC
- return;
- }
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;
info_data->format = TAG_FMT_UNDEFINED;
info_data->length = length;
info_data->name = estrdup(name);
- if (!info_data->name) {
- EXIF_ERRLOG_EALLOC
- return;
- }
- info_data->value.s = safe_emalloc(length, 1, 1);
- if (!info_data->value.s) {
- EXIF_ERRLOG_EALLOC
- return;
+ if (PG(magic_quotes_runtime)) {
+#ifdef EXIF_DEBUG
+ exif_error_docref(NULL TSRMLS_CC, image_info, E_NOTICE,
"Adding %s as buffer%s", name, exif_char_dump(value, length, 0));
+#endif
+ info_data->value.s = php_addslashes(value, length, &length, 0
TSRMLS_CC);
+ info_data->length = length;
+ } else {
+ info_data->value.s = safe_emalloc(length, 1, 1);
+ memcpy(info_data->value.s, value, length);
+ info_data->value.s[length] = 0;
}
- memcpy(info_data->value.s, value, length);
- info_data->value.s[length] = 0;
image_info->sections_found |= 1<<section_index;
image_info->info_list[section_index].count++;
}
@@ -1866,7 +1828,7 @@
pval *tmpi, *array = NULL;
#ifdef EXIF_DEBUG
-/* php_error_docref( NULL TSRMLS_CC, E_NOTICE, "Adding %d infos from
section %s", image_info->info_list[section_index].count,
exif_get_sectionname(section_index));*/
+/* php_error_docref(NULL TSRMLS_CC, E_NOTICE, "Adding %d infos from
section %s", image_info->info_list[section_index].count,
exif_get_sectionname(section_index));*/
#endif
if (image_info->info_list[section_index].count) {
if (sub_array) {
@@ -1888,7 +1850,7 @@
name = uname;
}
#ifdef EXIF_DEBUG
-/* php_error_docref( NULL TSRMLS_CC, E_NOTICE, "Adding infos:
tag(0x%04X,%12s,L=0x%04X): %s", info_tag, exif_get_tagname(info_tag, buffer, -12,
exif_get_tag_table(section_index) TSRMLS_CC), info_data->length,
info_data->format==TAG_FMT_STRING?(info_value&&info_value->s?info_value->s:"<no
data>"):exif_get_tagformat(info_data->format));*/
+/* php_error_docref(NULL TSRMLS_CC, E_NOTICE, "Adding infos:
tag(0x%04X,%12s,L=0x%04X): %s", info_tag, exif_get_tagname(info_tag, buffer, -12,
exif_get_tag_table(section_index) TSRMLS_CC), info_data->length,
info_data->format==TAG_FMT_STRING?(info_value&&info_value->s?info_value->s:"<no
data>"):exif_get_tagformat(info_data->format));*/
#endif
if (info_data->length==0) {
add_assoc_null(tmpi, name);
@@ -2158,12 +2120,12 @@
exif_iif_add_tag(image_info, SECTION_COMMENT,
"Comment", TAG_COMPUTED_VALUE, TAG_FMT_STRING, length, value);
break;
default:
- php_error_docref( NULL TSRMLS_CC, E_NOTICE, "Undefined
JPEG2000 comment encoding");
+ php_error_docref(NULL TSRMLS_CC, E_NOTICE, "Undefined
JPEG2000 comment encoding");
break;
}
} else {
exif_iif_add_tag(image_info, SECTION_COMMENT, "Comment",
TAG_COMPUTED_VALUE, TAG_FMT_UNDEFINED, 0, NULL);
- php_error_docref( NULL TSRMLS_CC, E_NOTICE, "JPEG2000 comment section
to small");
+ php_error_docref(NULL TSRMLS_CC, E_NOTICE, "JPEG2000 comment section
to small");
}
}
#endif
@@ -2290,10 +2252,6 @@
byte_count = php_tiff_bytes_per_format[info_data->format] * info_data->length;
value_ptr = emalloc(max(byte_count, 4));
- if (!value_ptr) {
- EXIF_ERRLOG_EALLOC
- return NULL;
- }
memset(value_ptr, 0, 4);
if (!info_data->length) {
return value_ptr;
@@ -2400,13 +2358,6 @@
}
new_move = new_size;
new_data = erealloc(ImageInfo->Thumbnail.data,
ImageInfo->Thumbnail.size+new_size);
- if (!new_data) {
- EXIF_ERRLOG_EALLOC
- efree(ImageInfo->Thumbnail.data);
- ImageInfo->Thumbnail.data = NULL;
- ImageInfo->Thumbnail.size = 0;
- return;
- }
ImageInfo->Thumbnail.data = new_data;
memmove(ImageInfo->Thumbnail.data + new_move,
ImageInfo->Thumbnail.data, ImageInfo->Thumbnail.size);
ImageInfo->Thumbnail.size += new_size;
@@ -2435,13 +2386,6 @@
php_ifd_set16u(new_data + 2,
info_data->format, ImageInfo->motorola_intel);
php_ifd_set32u(new_data + 4,
info_data->length, ImageInfo->motorola_intel);
value_ptr = exif_ifd_make_value(info_data,
ImageInfo->motorola_intel TSRMLS_CC);
- if (!value_ptr) {
- EXIF_ERRLOG_EALLOC
- efree(ImageInfo->Thumbnail.data);
- ImageInfo->Thumbnail.data = NULL;
- ImageInfo->Thumbnail.size = 0;
- return;
- }
if (byte_count <= 4) {
memmove(new_data+8, value_ptr, 4);
} else {
@@ -2489,9 +2433,6 @@
return;
}
ImageInfo->Thumbnail.data = estrndup(offset + ImageInfo->Thumbnail.offset,
ImageInfo->Thumbnail.size);
- if (!ImageInfo->Thumbnail.data) {
- EXIF_ERRLOG_EALLOC
- }
exif_thumbnail_build(ImageInfo TSRMLS_CC);
}
/* }}} */
@@ -2506,10 +2447,6 @@
*/
if (byte_count) {
(*result) = estrndup(value, byte_count); /* NULL @ byte_count!!! */
- if (!*result) {
- EXIF_ERRLOG_EALLOC
- return 0;
- }
return byte_count+1;
}
return 0;
@@ -2550,10 +2487,6 @@
return exif_process_undefined(result, value, byte_count TSRMLS_CC);
}
(*result) = estrndup("", 1); /* force empty string */
- if (!*result) {
- EXIF_ERRLOG_EALLOC
- return 0;
- }
return byte_count+1;
}
/* }}} */
@@ -2565,6 +2498,7 @@
int a;
#if EXIF_USE_MBSTRING
+ char *decode;
size_t len;;
#endif
@@ -2576,11 +2510,23 @@
szValuePtr = szValuePtr+8;
ByteCount -= 8;
#if EXIF_USE_MBSTRING
- if (ImageInfo->motorola_intel) {
- *pszInfoPtr = php_mb_convert_encoding(szValuePtr,
ByteCount, ImageInfo->encode_unicode, ImageInfo->decode_unicode_be, &len TSRMLS_CC);
+ /* First try to detect BOM: ZERO WIDTH NOBREAK SPACE (FEFF 16)
+ * since we have no encoding support for the BOM yet we skip
that.
+ */
+ if (!memcmp(szValuePtr, "\xFE\xFF", 2)) {
+ decode = "UCS-2BE";
+ szValuePtr = szValuePtr+2;
+ ByteCount -= 2;
+ } else if (!memcmp(szValuePtr, "\xFF\xFE", 2)) {
+ decode = "UCS-2LE";
+ szValuePtr = szValuePtr+2;
+ ByteCount -= 2;
+ } else if (ImageInfo->motorola_intel) {
+ decode = ImageInfo->decode_unicode_be;
} else {
- *pszInfoPtr = php_mb_convert_encoding(szValuePtr,
ByteCount, ImageInfo->encode_unicode, ImageInfo->decode_unicode_le, &len TSRMLS_CC);
+ decode = ImageInfo->decode_unicode_le;
}
+ *pszInfoPtr = php_mb_convert_encoding(szValuePtr, ByteCount,
ImageInfo->encode_unicode, decode, &len TSRMLS_CC);
return len;
#else
return exif_process_string_raw(pszInfoPtr, szValuePtr,
ByteCount);
@@ -2782,10 +2728,6 @@
if (byte_count>sizeof(cbuf)) {
/* mark as outside range and get buffer */
value_ptr = emalloc(byte_count);
- if (!value_ptr) {
- EXIF_ERRLOG_EALLOC
- return FALSE;
- }
outside = value_ptr;
} else {
/*
@@ -2871,12 +2813,7 @@
/* When there are any characters after
the first NUL */
ImageInfo->CopyrightPhotographer =
estrdup(value_ptr);
ImageInfo->CopyrightEditor =
estrdup(value_ptr+length+1);
- ImageInfo->Copyright =
safe_emalloc(strlen(value_ptr)+3, 1, strlen(value_ptr+length+1));
- if (!ImageInfo->Copyright) {
- EXIF_ERRLOG_EALLOC
- } else {
- sprintf(ImageInfo->Copyright,
"%s, %s", value_ptr, value_ptr+length+1);
- }
+ spprintf(&ImageInfo->Copyright, 0,
"%s, %s", value_ptr, value_ptr+length+1);
/* format = TAG_FMT_UNDEFINED; this
musn't be ASCII */
/* but we are not supposed to change
this */
/* keep in mind that image_info does
not store editor value */
@@ -2896,14 +2833,10 @@
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));
- if (!tmp_xp) {
- EXIF_ERRLOG_EALLOC
- } else {
- ImageInfo->sections_found |= FOUND_WINXP;
- ImageInfo->xp_fields.list = tmp_xp;
- ImageInfo->xp_fields.count++;
- exif_process_unicode(ImageInfo,
&(ImageInfo->xp_fields.list[ImageInfo->xp_fields.count-1]), tag, value_ptr, byte_count
TSRMLS_CC);
- }
+ ImageInfo->sections_found |= FOUND_WINXP;
+ ImageInfo->xp_fields.list = tmp_xp;
+ ImageInfo->xp_fields.count++;
+ exif_process_unicode(ImageInfo,
&(ImageInfo->xp_fields.list[ImageInfo->xp_fields.count-1]), tag, value_ptr, byte_count
TSRMLS_CC);
break;
case TAG_FNUMBER:
@@ -3236,10 +3169,7 @@
return FALSE;
}
- if ((sn=exif_file_sections_add(ImageInfo, marker, itemlen+1,
NULL))==-1) {
- EXIF_ERRLOG_EALLOC
- return FALSE;
- }
+ sn = exif_file_sections_add(ImageInfo, marker, itemlen+1, NULL);
Data = ImageInfo->file.list[sn].data;
/* Store first two pre-read bytes. */
@@ -3262,10 +3192,7 @@
/* Determine how much file is left. */
fpos = php_stream_tell(ImageInfo->infile);
size = ImageInfo->FileSize - fpos;
- if ((sn=exif_file_sections_add(ImageInfo,
M_PSEUDO, size, NULL))==-1) {
- EXIF_ERRLOG_EALLOC
- return FALSE;
- }
+ sn = exif_file_sections_add(ImageInfo,
M_PSEUDO, size, NULL);
Data = ImageInfo->file.list[sn].data;
got = php_stream_read(ImageInfo->infile, Data,
size);
if (got != size) {
@@ -3430,10 +3357,7 @@
tag_table_type tag_table = exif_get_tag_table(section_index);
if (ImageInfo->FileSize >= dir_offset+2) {
- if ((sn=exif_file_sections_add(ImageInfo, M_PSEUDO, 2, NULL))==-1) {
- EXIF_ERRLOG_EALLOC
- return FALSE;
- }
+ sn = exif_file_sections_add(ImageInfo, M_PSEUDO, 2, NULL);
#ifdef EXIF_DEBUG
exif_error_docref(NULL TSRMLS_CC, ImageInfo, E_NOTICE, "read from
TIFF: filesize(x%04X), IFD dir(x%04X + x%04X)", ImageInfo->FileSize, dir_offset, 2);
#endif
@@ -3587,16 +3511,12 @@
#endif
if
(!ImageInfo->Thumbnail.data) {
ImageInfo->Thumbnail.data = emalloc(ImageInfo->Thumbnail.size);
- if
(!ImageInfo->Thumbnail.data) {
-
EXIF_ERRLOG_EALLOC
- } else {
-
php_stream_seek(ImageInfo->infile, ImageInfo->Thumbnail.offset, SEEK_SET);
- fgot =
php_stream_read(ImageInfo->infile, ImageInfo->Thumbnail.data,
ImageInfo->Thumbnail.size);
- if
(fgot < ImageInfo->Thumbnail.size) {
-
EXIF_ERRLOG_THUMBEOF
- }
-
exif_thumbnail_build(ImageInfo TSRMLS_CC);
+
php_stream_seek(ImageInfo->infile, ImageInfo->Thumbnail.offset, SEEK_SET);
+ fgot =
php_stream_read(ImageInfo->infile, ImageInfo->Thumbnail.data,
ImageInfo->Thumbnail.size);
+ if (fgot <
ImageInfo->Thumbnail.size) {
+
EXIF_ERRLOG_THUMBEOF
}
+
exif_thumbnail_build(ImageInfo TSRMLS_CC);
}
}
}
@@ -3624,16 +3544,12 @@
#endif
if (!ImageInfo->Thumbnail.data &&
ImageInfo->Thumbnail.offset && ImageInfo->Thumbnail.size && ImageInfo->read_thumbnail)
{
ImageInfo->Thumbnail.data =
emalloc(ImageInfo->Thumbnail.size);
- if (!ImageInfo->Thumbnail.data) {
- EXIF_ERRLOG_EALLOC
- } else {
-
php_stream_seek(ImageInfo->infile, ImageInfo->Thumbnail.offset, SEEK_SET);
- fgot =
php_stream_read(ImageInfo->infile, ImageInfo->Thumbnail.data,
ImageInfo->Thumbnail.size);
- if (fgot <
ImageInfo->Thumbnail.size) {
- EXIF_ERRLOG_THUMBEOF
- }
- exif_thumbnail_build(ImageInfo
TSRMLS_CC);
+ php_stream_seek(ImageInfo->infile,
ImageInfo->Thumbnail.offset, SEEK_SET);
+ fgot =
php_stream_read(ImageInfo->infile, ImageInfo->Thumbnail.data,
ImageInfo->Thumbnail.size);
+ if (fgot < ImageInfo->Thumbnail.size) {
+ EXIF_ERRLOG_THUMBEOF
}
+ exif_thumbnail_build(ImageInfo
TSRMLS_CC);
}
#ifdef EXIF_DEBUG
exif_error_docref(NULL TSRMLS_CC, ImageInfo,
E_NOTICE, "read next IFD (THUMBNAIL) done");
@@ -3826,10 +3742,6 @@
if(ac >= 2) {
convert_to_string_ex(p_sections_needed);
sections_str = safe_emalloc(strlen(Z_STRVAL_PP(p_sections_needed)), 1,
3);
- if (!sections_str) {
- EXIF_ERRLOG_EALLOC
- RETURN_FALSE;
- }
sprintf(sections_str, ",%s,", Z_STRVAL_PP(p_sections_needed));
/* sections_str DOES start with , and SPACES are NOT allowed in names
*/
s = sections_str;
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php