From d9777d76bdaf3c26ff1fbb0340f18200e75b9128 Mon Sep 17 00:00:00 2001 From: Mala Bankal Date: Wed, 14 Sep 2011 21:43:42 -0700 Subject: [PATCH] 7049963: DISTINGUISHED NAMES FOR CERT ARE ESCAPED IN JROCKIT 1.6(NOT COMPATIBLE WITH JROC Reviewed-by: mullan --- jdk/src/share/classes/sun/security/x509/AVA.java | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/jdk/src/share/classes/sun/security/x509/AVA.java b/jdk/src/share/classes/sun/security/x509/AVA.java index e1d49611c16..b07e565cfbd 100644 --- a/jdk/src/share/classes/sun/security/x509/AVA.java +++ b/jdk/src/share/classes/sun/security/x509/AVA.java @@ -1071,8 +1071,17 @@ public class AVA implements DerEncoder { * to need quoting, or at least escaping. So do leading or * trailing spaces, and multiple internal spaces. */ - for (int i = 0; i < valStr.length(); i++) { + int length = valStr.length(); + boolean alreadyQuoted = + (length > 1 && valStr.charAt(0) == '\"' + && valStr.charAt(length - 1) == '\"'); + + for (int i = 0; i < length; i++) { char c = valStr.charAt(i); + if (alreadyQuoted && (i == 0 || i == length - 1)) { + sbuffer.append(c); + continue; + } if (DerValue.isPrintableStringChar(c) || escapees.indexOf(c) >= 0) { @@ -1136,7 +1145,8 @@ public class AVA implements DerEncoder { } // Emit the string ... quote it if needed - if (quoteNeeded) { + // if string is already quoted, don't re-quote + if (!alreadyQuoted && quoteNeeded) { retval.append("\"" + sbuffer.toString() + "\""); } else { retval.append(sbuffer.toString());