]> granicus.if.org Git - php/commitdiff
- Fix crash bugs when rfc822_qprint and rfc822_base64 return NULL
authorAndi Gutmans <andi@php.net>
Mon, 30 Apr 2001 10:23:13 +0000 (10:23 +0000)
committerAndi Gutmans <andi@php.net>
Mon, 30 Apr 2001 10:23:13 +0000 (10:23 +0000)
ext/imap/php_imap.c

index 7fb8213b15c0b01ebb5926d3084af6494a0b9a98..1d8ff0714d70701ace94894e3aa57297d9866138 100644 (file)
@@ -2116,6 +2116,9 @@ PHP_FUNCTION(imap_base64)
        convert_to_string_ex(text);
 
        decode = (char *) rfc822_base64((unsigned char *) Z_STRVAL_PP(text), Z_STRLEN_PP(text), &newlength);
+       if (decode == NULL) {
+               RETURN_FALSE;
+       }
        RETVAL_STRINGL(decode, newlength, 1);
        fs_give((void**) &decode);
 }
@@ -2137,6 +2140,9 @@ PHP_FUNCTION(imap_qprint)
        convert_to_string_ex(text);
 
        decode = (char *) rfc822_qprint((unsigned char *) Z_STRVAL_PP(text), Z_STRLEN_PP(text), &newlength);
+       if (decode == NULL) {
+               RETURN_FALSE;
+       }
        RETVAL_STRINGL(decode, newlength, 1);
        fs_give((void**) &decode);
 }
@@ -3715,6 +3721,11 @@ PHP_FUNCTION(imap_mime_header_decode)
                                                } else if (encoding == 'b' || encoding == 'B') {
                                                        decode = (char *)rfc822_base64((unsigned char *) text, strlen(text), &newlength); /* Decode 'B' encoded data */
                                                }
+                                               if (decode == NULL) {
+                                                       efree(charset);
+                                                       zval_dtor(return_value);
+                                                       RETURN_FALSE;
+                                               }
                                                MAKE_STD_ZVAL(myobject);
                                                object_init(myobject);
                                                add_property_string(myobject, "charset", charset, 1);