mirror of
https://github.com/php/php-src.git
synced 2026-04-26 01:18:19 +02:00
Merge branch 'PHP-5.4'
* PHP-5.4: fix potential overflow in _php_stream_scandir
This commit is contained in:
@@ -2263,8 +2263,8 @@ PHPAPI int _php_stream_scandir(char *dirname, char **namelist[], int flags, php_
|
||||
php_stream *stream;
|
||||
php_stream_dirent sdp;
|
||||
char **vector = NULL;
|
||||
int vector_size = 0;
|
||||
int nfiles = 0;
|
||||
unsigned int vector_size = 0;
|
||||
unsigned int nfiles = 0;
|
||||
|
||||
if (!namelist) {
|
||||
return FAILURE;
|
||||
@@ -2282,12 +2282,17 @@ PHPAPI int _php_stream_scandir(char *dirname, char **namelist[], int flags, php_
|
||||
} else {
|
||||
vector_size *= 2;
|
||||
}
|
||||
vector = (char **) erealloc(vector, vector_size * sizeof(char *));
|
||||
vector = (char **) safe_erealloc(vector, vector_size, sizeof(char *), 0);
|
||||
}
|
||||
|
||||
vector[nfiles] = estrdup(sdp.d_name);
|
||||
|
||||
nfiles++;
|
||||
if(vector_size < 10 || nfiles == 0) {
|
||||
/* overflow */
|
||||
efree(vector);
|
||||
return FAILURE;
|
||||
}
|
||||
}
|
||||
php_stream_closedir(stream);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user