diff options
Diffstat (limited to 'luni')
-rw-r--r-- | luni/src/main/native/org_apache_harmony_xnet_provider_jsse_NativeCrypto.cpp | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/luni/src/main/native/org_apache_harmony_xnet_provider_jsse_NativeCrypto.cpp b/luni/src/main/native/org_apache_harmony_xnet_provider_jsse_NativeCrypto.cpp index 56b771a..aafba3a 100644 --- a/luni/src/main/native/org_apache_harmony_xnet_provider_jsse_NativeCrypto.cpp +++ b/luni/src/main/native/org_apache_harmony_xnet_provider_jsse_NativeCrypto.cpp @@ -3824,8 +3824,16 @@ static jobject GENERAL_NAME_to_jobject(JNIEnv* env, GENERAL_NAME* gen) { switch (gen->type) { case GEN_EMAIL: case GEN_DNS: - case GEN_URI: - return env->NewStringUTF(reinterpret_cast<char*>(ASN1_STRING_data(gen->d.ia5))); + case GEN_URI: { + // This must be an IA5String and must not contain NULLs. + char* data = reinterpret_cast<char*>(ASN1_STRING_data(gen->d.ia5)); + if ((ASN1_STRING_type(gen->d.ia5) == V_ASN1_IA5STRING) + && (static_cast<size_t>(ASN1_STRING_length(gen->d.ia5)) == strlen(data))) { + return env->NewStringUTF(data); + } else { + return NULL; + } + } case GEN_DIRNAME: /* Write in RFC 2253 format */ return X509_NAME_to_jstring(env, gen->d.directoryName, XN_FLAG_RFC2253); |