diff options
author | Anatol Belski <ab@php.net> | 2014-09-19 10:33:01 +0200 |
---|---|---|
committer | Anatol Belski <ab@php.net> | 2014-09-19 10:33:01 +0200 |
commit | 953386edfd4f0d59c3a8ead1ea90b20e49796ea3 (patch) | |
tree | 6905587a64b75059ef352c65c22cc248b1c3bda3 | |
parent | bae92295fd7bf54b8b3e8440c1ce705e6e5e2119 (diff) | |
download | php-git-953386edfd4f0d59c3a8ead1ea90b20e49796ea3.tar.gz |
fix an always true condition and improve the error check
-rw-r--r-- | ext/standard/md5.c | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/ext/standard/md5.c b/ext/standard/md5.c index 4938babf7a..7d24dfeb7a 100644 --- a/ext/standard/md5.c +++ b/ext/standard/md5.c @@ -99,14 +99,18 @@ PHP_NAMED_FUNCTION(php_if_md5_file) PHP_MD5Update(&context, buf, n); } - PHP_MD5Final(digest, &context); - - php_stream_close(stream); + /* XXX this probably can be improved with some number of retries */ + if (!php_stream_eof(stream)) { + php_stream_close(stream); + PHP_MD5Final(digest, &context); - if (n<0) { RETURN_FALSE; } + php_stream_close(stream); + + PHP_MD5Final(digest, &context); + if (raw_output) { RETURN_STRINGL(digest, 16); } else { @@ -384,5 +388,5 @@ PHPAPI void PHP_MD5Final(unsigned char *result, PHP_MD5_CTX *ctx) result[14] = ctx->d >> 16; result[15] = ctx->d >> 24; - memset(ctx, 0, sizeof(*ctx)); + ZEND_SECURE_ZERO(ctx, sizeof(*ctx)); } |