Change 20048 by [EMAIL PROTECTED] on 2003/07/07 09:06:58

        PerlIO_read() can return negative.

Affected files ...

... //depot/perl/ext/Digest/MD5/MD5.xs#15 edit

Differences ...

==== //depot/perl/ext/Digest/MD5/MD5.xs#15 (text) ====
Index: perl/ext/Digest/MD5/MD5.xs
--- perl/ext/Digest/MD5/MD5.xs#14~20020~        Sat Jul  5 12:12:21 2003
+++ perl/ext/Digest/MD5/MD5.xs  Mon Jul  7 02:06:58 2003
@@ -621,7 +621,7 @@
        MD5_CTX* context = get_md5_ctx(self);
        STRLEN fill = context->bytes_low & 0x3F;
        unsigned char buffer[4096];
-       int  n;
+       SSize_t n;
     CODE:
        if (fh) {
             if (fill) {
@@ -630,14 +630,19 @@
                 * first.
                 */
                STRLEN missing = 64 - fill;
-               if ( (n = PerlIO_read(fh, buffer, missing)))
+               n = PerlIO_read(fh, buffer, missing);
+               if (n >= 0)
                    MD5Update(context, buffer, n);
-               else
+               else {
+                   if (PerlIO_error(fh)) {
+                       croak("Reading from filehandle failed");
+                   }
                    XSRETURN(1);  /* self */
+               }
            }
 
            /* Process blocks until EOF or error */
-            while ( (n = PerlIO_read(fh, buffer, sizeof(buffer)))) {
+            while ( (n = PerlIO_read(fh, buffer, sizeof(buffer))) > 0 ) {
                MD5Update(context, buffer, n);
            }
 
End of Patch.

Reply via email to