]> granicus.if.org Git - php/commitdiff
Fix bug #47828 - Converting to UTF-8 can sometimes fail, check error codes and avoid...
authorScott MacVicar <scottmac@php.net>
Sun, 29 Mar 2009 23:32:17 +0000 (23:32 +0000)
committerScott MacVicar <scottmac@php.net>
Sun, 29 Mar 2009 23:32:17 +0000 (23:32 +0000)
ext/openssl/openssl.c

index 90841a789017b490fb38d8836c97131c2a9faed1..01ad14561f79c2fe8256d1f979acf7a9100d4547 100644 (file)
@@ -557,10 +557,12 @@ static void add_ascii_assoc_name_entry(zval * val, char * key, X509_NAME * name,
                                str = X509_NAME_ENTRY_get_data(ne);
                                if (ASN1_STRING_type(str) != V_ASN1_UTF8STRING) {
                                        to_add_len = ASN1_STRING_to_UTF8(&to_add, str);
-                                       add_next_index_utf8_stringl(subentries, (char *)to_add, to_add_len, 1);
                                } else {
                                        to_add = ASN1_STRING_data(str);
                                        to_add_len = ASN1_STRING_length(str);
+                               }
+
+                               if (to_add_len != -1) {
                                        add_next_index_utf8_stringl(subentries, (char *)to_add, to_add_len, 1);
                                }
                        }
@@ -573,7 +575,7 @@ static void add_ascii_assoc_name_entry(zval * val, char * key, X509_NAME * name,
                } else {
                        zval_dtor(subentries);
                        FREE_ZVAL(subentries);
-                       if (obj_cnt && str) {
+                       if (obj_cnt && str && to_add_len != -1) {
                                add_ascii_assoc_utf8_stringl(subitem, sname, (char *)to_add, to_add_len, 1);
                        }
                }