Browse Source

Fixed a possible memory corruption inside mime_content_type() on a

non-existent file.
experimental/5.2-WITH_DRCP
Ilia Alshanetsky 20 years ago
parent
commit
f8958c466d
  1. 36
      ext/mime_magic/mime_magic.c

36
ext/mime_magic/mime_magic.c

@ -1156,21 +1156,29 @@ static int fsmagic(zval *what TSRMLS_DC)
php_stream_statbuf stat_ssb;
switch (Z_TYPE_P(what)) {
case IS_STRING:
if(!php_stream_stat_path(Z_STRVAL_P(what), &stat_ssb)) {
return MIME_MAGIC_OK;
}
break;
case IS_RESOURCE:
{
php_stream *stream;
php_stream_from_zval_no_verify(stream, &what);
if(!php_stream_stat(stream, &stat_ssb)) {
return MIME_MAGIC_OK;
case IS_STRING:
if (php_stream_stat_path_ex(Z_STRVAL_P(what), PHP_STREAM_URL_STAT_QUIET, &stat_ssb, NULL)) {
if (MIME_MAGIC_G(debug)) {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Non-statable file path (%s)", Z_STRVAL_P(what));
}
return MIME_MAGIC_ERROR;
}
}
break;
break;
case IS_RESOURCE:
{
php_stream *stream;
php_stream_from_zval_no_verify(stream, &what);
if (php_stream_stat(stream, &stat_ssb)) {
if (MIME_MAGIC_G(debug)) {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Non-statable file path (%s)", Z_STRVAL_P(what));
}
return MIME_MAGIC_ERROR;
}
}
break;
default:
return MIME_MAGIC_OK;
}
switch (stat_ssb.sb.st_mode & S_IFMT) {

Loading…
Cancel
Save