version 1.1.1.1, 2012/02/21 23:48:02
|
version 1.1.1.4, 2014/06/15 20:03:57
|
Line 2
|
Line 2
|
+----------------------------------------------------------------------+ |
+----------------------------------------------------------------------+ |
| PHP Version 5 | |
| PHP Version 5 | |
+----------------------------------------------------------------------+ |
+----------------------------------------------------------------------+ |
| Copyright (c) 1997-2012 The PHP Group | | | Copyright (c) 1997-2014 The PHP Group | |
+----------------------------------------------------------------------+ |
+----------------------------------------------------------------------+ |
| This source file is subject to version 3.01 of the PHP license, | |
| This source file is subject to version 3.01 of the PHP license, | |
| that is bundled with this package in the file LICENSE, and is | |
| that is bundled with this package in the file LICENSE, and is | |
Line 181 PHP_FUNCTION(iptcembed)
|
Line 181 PHP_FUNCTION(iptcembed)
|
int iptcdata_len, jpeg_file_len; |
int iptcdata_len, jpeg_file_len; |
long spool = 0; |
long spool = 0; |
FILE *fp; |
FILE *fp; |
unsigned int marker, done = 0, inx; | unsigned int marker, done = 0; |
| int inx; |
unsigned char *spoolbuf = NULL, *poi = NULL; |
unsigned char *spoolbuf = NULL, *poi = NULL; |
struct stat sb; |
struct stat sb; |
zend_bool written = 0; |
zend_bool written = 0; |
|
|
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss|l", &iptcdata, &iptcdata_len, &jpeg_file, &jpeg_file_len, &spool) != SUCCESS) { | if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sp|l", &iptcdata, &iptcdata_len, &jpeg_file, &jpeg_file_len, &spool) != SUCCESS) { |
return; |
return; |
} |
} |
|
|
if (strlen(jpeg_file) != jpeg_file_len) { |
|
RETURN_FALSE; |
|
} |
|
|
|
if (PG(safe_mode) && (!php_checkuid(jpeg_file, NULL, CHECKUID_CHECK_FILE_AND_DIR))) { |
|
RETURN_FALSE; |
|
} |
|
|
|
if (php_check_open_basedir(jpeg_file TSRMLS_CC)) { |
if (php_check_open_basedir(jpeg_file TSRMLS_CC)) { |
RETURN_FALSE; |
RETURN_FALSE; |
} |
} |
Line 303 PHP_FUNCTION(iptcembed)
|
Line 296 PHP_FUNCTION(iptcembed)
|
Parse binary IPTC-data into associative array */ |
Parse binary IPTC-data into associative array */ |
PHP_FUNCTION(iptcparse) |
PHP_FUNCTION(iptcparse) |
{ |
{ |
unsigned int inx = 0, len, tagsfound = 0; | int inx = 0, len; |
| unsigned int tagsfound = 0; |
unsigned char *buffer, recnum, dataset, key[ 16 ]; |
unsigned char *buffer, recnum, dataset, key[ 16 ]; |
char *str; |
char *str; |
int str_len; |
int str_len; |
Line 335 PHP_FUNCTION(iptcparse)
|
Line 329 PHP_FUNCTION(iptcparse)
|
recnum = buffer[ inx++ ]; |
recnum = buffer[ inx++ ]; |
|
|
if (buffer[ inx ] & (unsigned char) 0x80) { /* long tag */ |
if (buffer[ inx ] & (unsigned char) 0x80) { /* long tag */ |
|
if((inx+6) >= str_len) { |
|
break; |
|
} |
len = (((long) buffer[ inx + 2 ]) << 24) + (((long) buffer[ inx + 3 ]) << 16) + |
len = (((long) buffer[ inx + 2 ]) << 24) + (((long) buffer[ inx + 3 ]) << 16) + |
(((long) buffer[ inx + 4 ]) << 8) + (((long) buffer[ inx + 5 ])); |
(((long) buffer[ inx + 4 ]) << 8) + (((long) buffer[ inx + 5 ])); |
inx += 6; |
inx += 6; |
Line 342 PHP_FUNCTION(iptcparse)
|
Line 339 PHP_FUNCTION(iptcparse)
|
len = (((unsigned short) buffer[ inx ])<<8) | (unsigned short)buffer[ inx+1 ]; |
len = (((unsigned short) buffer[ inx ])<<8) | (unsigned short)buffer[ inx+1 ]; |
inx += 2; |
inx += 2; |
} |
} |
| |
snprintf(key, sizeof(key), "%d#%03d", (unsigned int) dataset, (unsigned int) recnum); | if ((len < 0) || (len > str_len) || (inx + len) > str_len) { |
| |
if ((len > str_len) || (inx + len) > str_len) { | |
break; |
break; |
} |
} |
|
|
|
snprintf(key, sizeof(key), "%d#%03d", (unsigned int) dataset, (unsigned int) recnum); |
|
|
if (tagsfound == 0) { /* found the 1st tag - initialize the return array */ |
if (tagsfound == 0) { /* found the 1st tag - initialize the return array */ |
array_init(return_value); |
array_init(return_value); |