提交 be1c76d2 编写于 作者: I igerasim

8186098: sun/security/pkcs11/KeyStore/SecretKeysBasic.sh failed due to libnss3...

8186098: sun/security/pkcs11/KeyStore/SecretKeysBasic.sh failed due to libnss3 version cannot be parsed
Summary: Improves the approach on parsing lib version
Reviewed-by: weijun, xuelei
上级 73850722
...@@ -25,6 +25,7 @@ ...@@ -25,6 +25,7 @@
// common infrastructure for SunPKCS11 tests // common infrastructure for SunPKCS11 tests
import java.io.*; import java.io.*;
import java.nio.charset.StandardCharsets;
import java.util.*; import java.util.*;
import java.lang.reflect.*; import java.lang.reflect.*;
...@@ -269,6 +270,11 @@ public abstract class PKCS11Test { ...@@ -269,6 +270,11 @@ public abstract class PKCS11Test {
getNSSInfo(nss_library); getNSSInfo(nss_library);
} }
// Try to parse the version for the specified library.
// Assuming the library contains either of the following patterns:
// $Header: NSS <version>
// Version: NSS <version>
// Here, <version> stands for NSS version.
static double getNSSInfo(String library) { static double getNSSInfo(String library) {
// look for two types of headers in NSS libraries // look for two types of headers in NSS libraries
String nssHeader1 = "$Header: NSS"; String nssHeader1 = "$Header: NSS";
...@@ -299,7 +305,7 @@ public abstract class PKCS11Test { ...@@ -299,7 +305,7 @@ public abstract class PKCS11Test {
read = 100 + is.read(data, 100, 900); read = 100 + is.read(data, 100, 900);
} }
s = new String(data, 0, read); s = new String(data, 0, read, StandardCharsets.US_ASCII);
i = s.indexOf(nssHeader1); i = s.indexOf(nssHeader1);
if (i > 0 || (i = s.indexOf(nssHeader2)) > 0) { if (i > 0 || (i = s.indexOf(nssHeader2)) > 0) {
found = true; found = true;
...@@ -327,18 +333,13 @@ public abstract class PKCS11Test { ...@@ -327,18 +333,13 @@ public abstract class PKCS11Test {
// the index after whitespace after nssHeader // the index after whitespace after nssHeader
int afterheader = s.indexOf("NSS", i) + 4; int afterheader = s.indexOf("NSS", i) + 4;
int nextSpaceIndex = s.indexOf(' ', afterheader); String version = String.valueOf(s.charAt(afterheader));
for (char c = s.charAt(++afterheader);
// If the next space is not found, c == '.' || (c >= '0' && c <= '9');
// it has to print the content for further investigation. c = s.charAt(++afterheader)) {
if (nextSpaceIndex == -1) { version += c;
System.out.println("===== Content start =====");
System.out.println(s);
System.out.println("===== Content end =====");
} }
String version = s.substring(afterheader, nextSpaceIndex);
// If a "dot dot" release, strip the extra dots for double parsing // If a "dot dot" release, strip the extra dots for double parsing
String[] dot = version.split("\\."); String[] dot = version.split("\\.");
if (dot.length > 2) { if (dot.length > 2) {
...@@ -352,6 +353,9 @@ public abstract class PKCS11Test { ...@@ -352,6 +353,9 @@ public abstract class PKCS11Test {
try { try {
nss_version = Double.parseDouble(version); nss_version = Double.parseDouble(version);
} catch (NumberFormatException e) { } catch (NumberFormatException e) {
System.out.println("===== Content start =====");
System.out.println(s);
System.out.println("===== Content end =====");
System.out.println("Failed to parse lib" + library + System.out.println("Failed to parse lib" + library +
" version. Set to 0.0"); " version. Set to 0.0");
e.printStackTrace(); e.printStackTrace();
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册