]> granicus.if.org Git - php/commitdiff
fix an always true condition and improve the error check
authorAnatol Belski <ab@php.net>
Fri, 19 Sep 2014 08:33:01 +0000 (10:33 +0200)
committerAnatol Belski <ab@php.net>
Fri, 19 Sep 2014 08:33:01 +0000 (10:33 +0200)
ext/standard/md5.c

index 4938babf7a6925989f1f9f3bbab628ddb55b7479..7d24dfeb7a105b03f6d21fdd47d7325bf4b9d949 100644 (file)
@@ -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));
 }