summaryrefslogtreecommitdiff
path: root/ext/zip/zip_stream.c
diff options
context:
space:
mode:
authorIlia Alshanetsky <iliaa@php.net>2006-12-23 23:28:39 +0000
committerIlia Alshanetsky <iliaa@php.net>2006-12-23 23:28:39 +0000
commiteaf3d32157811f6f43da084b55b34f124fc795e1 (patch)
treeae933134c119fb85662ef713e2e1bd0fb77f983f /ext/zip/zip_stream.c
parent1379ad02e36d4e242338628ce44f89f92b455101 (diff)
downloadphp-git-eaf3d32157811f6f43da084b55b34f124fc795e1.tar.gz
Safety checks
Diffstat (limited to 'ext/zip/zip_stream.c')
-rw-r--r--ext/zip/zip_stream.c8
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) {