diff options
| author | Ilia Alshanetsky <iliaa@php.net> | 2006-12-23 23:28:39 +0000 |
|---|---|---|
| committer | Ilia Alshanetsky <iliaa@php.net> | 2006-12-23 23:28:39 +0000 |
| commit | eaf3d32157811f6f43da084b55b34f124fc795e1 (patch) | |
| tree | ae933134c119fb85662ef713e2e1bd0fb77f983f /ext/zip/zip_stream.c | |
| parent | 1379ad02e36d4e242338628ce44f89f92b455101 (diff) | |
| download | php-git-eaf3d32157811f6f43da084b55b34f124fc795e1.tar.gz | |
Safety checks
Diffstat (limited to 'ext/zip/zip_stream.c')
| -rw-r--r-- | ext/zip/zip_stream.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/ext/zip/zip_stream.c b/ext/zip/zip_stream.c index 83e9ceab3e..c36df3e4c0 100644 --- a/ext/zip/zip_stream.c +++ b/ext/zip/zip_stream.c @@ -153,7 +153,7 @@ php_stream *php_stream_zip_opener(php_stream_wrapper *wrapper, char *file_basename; size_t file_basename_len; - char file_dirname[MAXPATHLEN+1]; + char file_dirname[MAXPATHLEN]; struct zip *za; struct zip_file *zf = NULL; @@ -179,15 +179,15 @@ php_stream *php_stream_zip_opener(php_stream_wrapper *wrapper, return NULL; } path_len = strlen(path); + if (path_len >= MAXPATHLEN || mode[0] != 'r') { + return NULL; + } memcpy(file_dirname, path, path_len - fragment_len); file_dirname[path_len - fragment_len] = '\0'; php_basename(path, path_len - fragment_len, NULL, 0, &file_basename, &file_basename_len TSRMLS_CC); fragment++; - if (mode[0] != 'r') { - return NULL; - } za = zip_open(file_dirname, ZIP_CREATE, &err); if (za) { |
