com php-src: fix bug #61065: ext/phar/tar.c
| From: | Stanislav Malyshev | Date: | Wed, 16 May 2012 05:34:34 +0000 |
| Subject: | com php-src: fix bug #61065: ext/phar/tar.c | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-69080@lists.php.net to get a copy of this message | ||
Commit: a10e778bfb7ce9caa1f91666ddf2705db7982d68
Author: Stanislav Malyshev <stas@php.net> Tue, 15 May 2012 22:34:34 -0700
Parents: 63401268db9cf9b0e07b7a5819644d61f572746a
Branches: PHP-5.4
Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=a10e778bfb7ce9caa1f91666ddf2705db7982d68
Log:
fix bug #61065
Bugs:
https://bugs.php.net/61065
Changed paths:
M ext/phar/tar.c
Diff:
diff --git a/ext/phar/tar.c b/ext/phar/tar.c
index 9d1e5bc..b914db1 100644
--- a/ext/phar/tar.c
+++ b/ext/phar/tar.c
@@ -337,6 +337,16 @@ bail:
last_was_longlink = 1;
/* support the ././@LongLink system for storing long filenames */
entry.filename_len = entry.uncompressed_filesize;
+
+ /* Check for overflow - bug 61065 */
+ if (entry.filename_len == UINT_MAX) {
+ if (error) {
+ spprintf(error, 4096, "phar error: \"%s\" is a corrupted tar file (invalid
entry size)", fname);
+ }
+ php_stream_close(fp);
+ phar_destroy_phar_data(myphar TSRMLS_CC);
+ return FAILURE;
+ }
entry.filename = pemalloc(entry.filename_len+1, myphar->is_persistent);
read = php_stream_read(fp, entry.filename, entry.filename_len);