mirror of
https://github.com/php/php-src.git
synced 2025-08-15 21:48:51 +02:00
Fix uouv when handling empty options in ZipArchive::addGlob()
Reported by OpenAI AARDVARK. php_zip_parse_option is only called when options are passed to the function. Prior to this patch, php_zip_parse_option was responsible for zeroing the opts variable. So in the case when php_zip_parse_option is not called, opts remains uninitialized yet it is being used anyway. By just always zeroing opts at declaration time, we avoid this issue and we are unlikely to reintroduce this in the future. Closes GH-18329.
This commit is contained in:
parent
9d4f8b5379
commit
0a6326c6ac
3 changed files with 27 additions and 2 deletions
|
@ -354,13 +354,13 @@ typedef struct {
|
|||
#endif
|
||||
} zip_options;
|
||||
|
||||
/* Expects opts to be zero-initialized. */
|
||||
static int php_zip_parse_options(HashTable *options, zip_options *opts)
|
||||
/* {{{ */
|
||||
{
|
||||
zval *option;
|
||||
|
||||
/* default values */
|
||||
memset(opts, 0, sizeof(zip_options));
|
||||
opts->flags = ZIP_FL_OVERWRITE;
|
||||
opts->comp_method = -1; /* -1 to not change default */
|
||||
#ifdef HAVE_ENCRYPTION
|
||||
|
@ -1732,7 +1732,7 @@ static void php_zip_add_from_pattern(INTERNAL_FUNCTION_PARAMETERS, int type) /*
|
|||
size_t path_len = 1;
|
||||
zend_long glob_flags = 0;
|
||||
HashTable *options = NULL;
|
||||
zip_options opts;
|
||||
zip_options opts = {0};
|
||||
int found;
|
||||
zend_string *pattern;
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue