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.