mirror of
https://git.freebsd.org/ports.git
synced 2025-05-05 16:07:38 -04:00
6004 lines
258 KiB
Text
6004 lines
258 KiB
Text
--- .hgtags Tue Mar 11 13:01:27 2014 -0700
|
|
+++ .hgtags Tue Jun 03 14:19:17 2014 -0700
|
|
@@ -258,6 +258,7 @@
|
|
6f3357d3dbf83c1ef0098bcb853e3aa3b26f4cb8 jdk8u5-b02
|
|
794b4365b6884e9a15f0840792539f5821814127 jdk8u5-b03
|
|
c200d6cb184056e44afe7102913004b717896aa3 jdk8u5-b04
|
|
+eb537d7c31e069ac10de0901727515743f7535d2 jdk8u11-b00
|
|
eb537d7c31e069ac10de0901727515743f7535d2 jdk8u5-b05
|
|
75cdae18810a479cc3c0fe8eb9055d968ae31c63 jdk8u5-b06
|
|
b1585984f29320737ca0da5af029b1225a75c476 jdk8u5-b07
|
|
@@ -266,3 +267,15 @@
|
|
fae51c73a06d71304c9dbff22984ee501812b972 jdk8u5-b10
|
|
dd3bd272ceedbd69fabafc531b6b1e056659f733 jdk8u5-b11
|
|
3e05b6ae0a1e2bd7352462e9bf8e7262246fb77f jdk8u5-b12
|
|
+d81e301cae70f1f95f4bb976ec053c915dee503a jdk8u5-b13
|
|
+397902f53444be14aa4e261cd47064fac82919c9 jdk8u11-b01
|
|
+6ffd41be920a3e63c5767f36ac725e9e3bf5ec50 jdk8u11-b02
|
|
+3078ab9b8d4ad37cf18bf6a1ed49c8015e70ec73 jdk8u11-b03
|
|
+7be4371ce4ed33cf779606ef3b6256f316898e08 jdk8u11-b04
|
|
+97c6d6a8e5bb3dfc24b9a32711aa0906ea110e23 jdk8u11-b05
|
|
+5ea1a19659427ea813ae4a00ae9d54338c7faec6 jdk8u11-b06
|
|
+fe460afb120e2312769454f4630cccd406ded3f6 jdk8u11-b07
|
|
+81f3392f551c45578cabe29552c670b87170d325 jdk8u11-b08
|
|
+390084098df7bffecd0eb2318facc6f0f9a46b70 jdk8u11-b09
|
|
+6d324f36e2448f486d0caa67f70e5a6cf5ac6c0d jdk8u11-b10
|
|
+f0b9fee1d40a6aae31be4780f70aba02148ec54c jdk8u11-b11
|
|
--- make/Jprt.gmk Tue Mar 11 13:01:27 2014 -0700
|
|
+++ make/Jprt.gmk Tue Jun 03 14:19:17 2014 -0700
|
|
@@ -106,6 +106,9 @@
|
|
ifdef ENABLE_SJAVAC
|
|
@$(ECHO) " --enable-sjavac" >> $@.tmp
|
|
endif
|
|
+ ifdef JDK_UPDATE_VERSION
|
|
+ @$(ECHO) " --with-update-version=$(JDK_UPDATE_VERSION)" >> $@.tmp
|
|
+ endif
|
|
ifeq ($(HOTSPOT_AVAILABLE),false)
|
|
ifdef ALT_JDK_IMPORT_PATH
|
|
@$(ECHO) " --with-import-hotspot=$(call UnixPath,$(ALT_JDK_IMPORT_PATH)) " >> $@.tmp
|
|
--- corba/.hgtags Tue Mar 11 13:01:32 2014 -0700
|
|
+++ corba/.hgtags Tue Jun 03 14:19:19 2014 -0700
|
|
@@ -258,6 +258,7 @@
|
|
c750098a3ef18de28a6d739666559f0333c76c78 jdk8u5-b02
|
|
3d9b40a53134aa33031bf13581dff9fccade9048 jdk8u5-b03
|
|
596f4e4c5587c29767345555c4e48a5be0a58b83 jdk8u5-b04
|
|
+1f95c888e5efe010550d95ef59020ddb15876463 jdk8u11-b00
|
|
1f95c888e5efe010550d95ef59020ddb15876463 jdk8u5-b05
|
|
edfa8bc86fda1b2fd064abbafb4506c80a47587e jdk8u5-b06
|
|
0a25d1c162bc046aa230577736429935716a2243 jdk8u5-b07
|
|
@@ -266,3 +267,15 @@
|
|
d9031b5525f777299554080d6beb8b077df0a614 jdk8u5-b10
|
|
a2f7b36bfc1bc8df033fe5721b48fac1c3928a5b jdk8u5-b11
|
|
475b96f6d8cecf720ca9fd6d332dd4bafb0f654c jdk8u5-b12
|
|
+897088ef059f53a8aa73267985666ad319223064 jdk8u5-b13
|
|
+e2cfebaf3b9d0eae06c2d5ee7669180f1723f897 jdk8u11-b01
|
|
+152d1b91e5c5dfc940cccef1bfeae60a6604032a jdk8u11-b02
|
|
+60b073836311720d4f013d4493af2729ebe663f6 jdk8u11-b03
|
|
+4a0c834de2827b753e5ba2972ca3d9125a5c80eb jdk8u11-b04
|
|
+08aa9f55fe5bce1f04cfd2958f71e8df18643e29 jdk8u11-b05
|
|
+d6f052f3ad5d9244452d40236efdabe13be24716 jdk8u11-b06
|
|
+3052e1208958022173a6bf752edb88c7ad188797 jdk8u11-b07
|
|
+fff1b1687ed60d3d398b3d55c0dc71ee3450a601 jdk8u11-b08
|
|
+f846c0c1c330545b8a85fc05a36fa95f48757525 jdk8u11-b09
|
|
+3e4b895d06e8d292f7338aa2155849173722062f jdk8u11-b10
|
|
+ce324096c5626997634df1e5fa68f206909431ab jdk8u11-b11
|
|
--- hotspot/.hgtags Tue Mar 11 13:02:13 2014 -0700
|
|
+++ hotspot/.hgtags Tue Jun 03 14:19:26 2014 -0700
|
|
@@ -426,6 +426,7 @@
|
|
e5561d89fe8bfc79cd6c8fcc36d270cc6a49ec6e jdk8u5-b02
|
|
2f9eb9fcab6c42c8c84ddb44170ea33235116d84 jdk8u5-b03
|
|
5ac720d47ab83f8eb2f5fe3641667823a0298f41 jdk8u5-b04
|
|
+b90de55aca30678ab0fec05d6a61bb3468b783d2 jdk8u11-b00
|
|
b90de55aca30678ab0fec05d6a61bb3468b783d2 jdk8u5-b05
|
|
956c0e048ef29ee9a8026fb05858abe64b4e0ceb jdk8u5-b06
|
|
46fa2940e6861df18a107b6b83a2df85239e5ec7 jdk8u5-b07
|
|
@@ -434,3 +435,15 @@
|
|
629267e4f0b5155608edcd71922983be98786bd7 jdk8u5-b10
|
|
17a75e692af397532e2b296b24f6b9b6c239c633 jdk8u5-b11
|
|
9b289963cb9a14636fbe8faaa2dd6d3678464a7b jdk8u5-b12
|
|
+8a67179106085689906732013a282efeeb9bd5f4 jdk8u5-b13
|
|
+f0d759a6a2309a1c149d530b29db24eda885f267 jdk8u11-b01
|
|
+3c079aebb516765784dd8097887daadda5a76ac1 jdk8u11-b02
|
|
+0037e964ce486c009984171f004259263628079f jdk8u11-b03
|
|
+4c40343ecdb33fe046833fe4b8970fd29859c4ad jdk8u11-b04
|
|
+a4d44dfb7d30eea54bc172e4429a655454ae0bbf jdk8u11-b05
|
|
+b73ee2b9027c4183e520b2c0884d785ef9e539cf jdk8u11-b06
|
|
+561045d225990b8423af11fd80d2d704954c89c2 jdk8u11-b07
|
|
+af747c288b0f379448bebf56e2982f50caac6972 jdk8u11-b08
|
|
+34de1e8eeabbcc6e690f92766fd619beb9f3f049 jdk8u11-b09
|
|
+7e4ae023277bef5b82361fd985262f4009eb2fe8 jdk8u11-b10
|
|
+e6b7384074325d5a4ede728d6928ecb7f1cc1326 jdk8u11-b11
|
|
--- hotspot/make/hotspot_version Tue Mar 11 13:02:13 2014 -0700
|
|
+++ hotspot/make/hotspot_version Tue Jun 03 14:19:26 2014 -0700
|
|
@@ -34,8 +34,8 @@
|
|
HOTSPOT_VM_COPYRIGHT=Copyright 2014
|
|
|
|
HS_MAJOR_VER=25
|
|
-HS_MINOR_VER=5
|
|
-HS_BUILD_NUMBER=02
|
|
+HS_MINOR_VER=11
|
|
+HS_BUILD_NUMBER=03
|
|
|
|
JDK_MAJOR_VER=1
|
|
JDK_MINOR_VER=8
|
|
--- hotspot/src/os/bsd/vm/os_bsd.cpp Tue Mar 11 13:02:13 2014 -0700
|
|
+++ hotspot/src/os/bsd/vm/os_bsd.cpp Tue Jun 03 14:19:26 2014 -0700
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
|
|
+ * Copyright (c) 1999, 2014, Oracle and/or its affiliates. All rights reserved.
|
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
|
*
|
|
* This code is free software; you can redistribute it and/or modify it
|
|
@@ -1115,10 +1115,6 @@
|
|
::abort();
|
|
}
|
|
|
|
-// unused on bsd for now.
|
|
-void os::set_error_file(const char *logfile) {}
|
|
-
|
|
-
|
|
// This method is a copy of JDK's sysGetLastErrorString
|
|
// from src/solaris/hpi/src/system_md.c
|
|
|
|
@@ -1808,6 +1804,7 @@
|
|
// determine if this is a legacy image or modules image
|
|
// modules image doesn't have "jre" subdirectory
|
|
len = strlen(buf);
|
|
+ assert(len < buflen, "Ran out of buffer space");
|
|
jrelib_p = buf + len;
|
|
|
|
// Add the appropriate library subdir
|
|
@@ -1841,7 +1838,7 @@
|
|
}
|
|
}
|
|
|
|
- strcpy(saved_jvm_path, buf);
|
|
+ strncpy(saved_jvm_path, buf, MAXPATHLEN);
|
|
}
|
|
|
|
void os::print_jni_name_prefix_on(outputStream* st, int args_size) {
|
|
--- hotspot/src/os/linux/vm/os_linux.cpp Tue Mar 11 13:02:13 2014 -0700
|
|
+++ hotspot/src/os/linux/vm/os_linux.cpp Tue Jun 03 14:19:26 2014 -0700
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
|
|
+ * Copyright (c) 1999, 2014, Oracle and/or its affiliates. All rights reserved.
|
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
|
*
|
|
* This code is free software; you can redistribute it and/or modify it
|
|
@@ -1572,9 +1572,6 @@
|
|
::abort();
|
|
}
|
|
|
|
-// unused on linux for now.
|
|
-void os::set_error_file(const char *logfile) {}
|
|
-
|
|
|
|
// This method is a copy of JDK's sysGetLastErrorString
|
|
// from src/solaris/hpi/src/system_md.c
|
|
@@ -2399,6 +2396,7 @@
|
|
// determine if this is a legacy image or modules image
|
|
// modules image doesn't have "jre" subdirectory
|
|
len = strlen(buf);
|
|
+ assert(len < buflen, "Ran out of buffer room");
|
|
jrelib_p = buf + len;
|
|
snprintf(jrelib_p, buflen-len, "/jre/lib/%s", cpu_arch);
|
|
if (0 != access(buf, F_OK)) {
|
|
@@ -2419,7 +2417,7 @@
|
|
}
|
|
}
|
|
|
|
- strcpy(saved_jvm_path, buf);
|
|
+ strncpy(saved_jvm_path, buf, MAXPATHLEN);
|
|
}
|
|
|
|
void os::print_jni_name_prefix_on(outputStream* st, int args_size) {
|
|
--- hotspot/src/os/solaris/vm/os_solaris.cpp Tue Mar 11 13:02:13 2014 -0700
|
|
+++ hotspot/src/os/solaris/vm/os_solaris.cpp Tue Jun 03 14:19:26 2014 -0700
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
|
|
+ * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
|
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
|
*
|
|
* This code is free software; you can redistribute it and/or modify it
|
|
@@ -1788,9 +1788,6 @@
|
|
::abort(); // dump core (for debugging)
|
|
}
|
|
|
|
-// unused
|
|
-void os::set_error_file(const char *logfile) {}
|
|
-
|
|
// DLL functions
|
|
|
|
const char* os::dll_file_extension() { return ".so"; }
|
|
@@ -2474,6 +2471,7 @@
|
|
// determine if this is a legacy image or modules image
|
|
// modules image doesn't have "jre" subdirectory
|
|
len = strlen(buf);
|
|
+ assert(len < buflen, "Ran out of buffer space");
|
|
jrelib_p = buf + len;
|
|
snprintf(jrelib_p, buflen-len, "/jre/lib/%s", cpu_arch);
|
|
if (0 != access(buf, F_OK)) {
|
|
@@ -2492,7 +2490,7 @@
|
|
}
|
|
}
|
|
|
|
- strcpy(saved_jvm_path, buf);
|
|
+ strncpy(saved_jvm_path, buf, MAXPATHLEN);
|
|
}
|
|
|
|
|
|
--- hotspot/src/os/windows/vm/os_windows.cpp Tue Mar 11 13:02:13 2014 -0700
|
|
+++ hotspot/src/os/windows/vm/os_windows.cpp Tue Jun 03 14:19:26 2014 -0700
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
|
|
+ * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
|
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
|
*
|
|
* This code is free software; you can redistribute it and/or modify it
|
|
@@ -1819,7 +1819,8 @@
|
|
// libjvm.so is installed there (append a fake suffix
|
|
// hotspot/libjvm.so).
|
|
char* java_home_var = ::getenv("JAVA_HOME");
|
|
- if (java_home_var != NULL && java_home_var[0] != 0) {
|
|
+ if (java_home_var != NULL && java_home_var[0] != 0 &&
|
|
+ strlen(java_home_var) < (size_t)buflen) {
|
|
|
|
strncpy(buf, java_home_var, buflen);
|
|
|
|
@@ -1837,9 +1838,9 @@
|
|
}
|
|
|
|
if(buf[0] == '\0') {
|
|
- GetModuleFileName(vm_lib_handle, buf, buflen);
|
|
- }
|
|
- strcpy(saved_jvm_path, buf);
|
|
+ GetModuleFileName(vm_lib_handle, buf, buflen);
|
|
+ }
|
|
+ strncpy(saved_jvm_path, buf, MAX_PATH);
|
|
}
|
|
|
|
|
|
@@ -2290,19 +2291,8 @@
|
|
}
|
|
|
|
*/
|
|
-#endif //_WIN64
|
|
-
|
|
-
|
|
-// Fatal error reporting is single threaded so we can make this a
|
|
-// static and preallocated. If it's more than MAX_PATH silently ignore
|
|
-// it.
|
|
-static char saved_error_file[MAX_PATH] = {0};
|
|
-
|
|
-void os::set_error_file(const char *logfile) {
|
|
- if (strlen(logfile) <= MAX_PATH) {
|
|
- strncpy(saved_error_file, logfile, MAX_PATH);
|
|
- }
|
|
-}
|
|
+#endif // _WIN64
|
|
+
|
|
|
|
static inline void report_error(Thread* t, DWORD exception_code,
|
|
address addr, void* siginfo, void* context) {
|
|
--- hotspot/src/share/vm/classfile/classFileParser.cpp Tue Mar 11 13:02:13 2014 -0700
|
|
+++ hotspot/src/share/vm/classfile/classFileParser.cpp Tue Jun 03 14:19:26 2014 -0700
|
|
@@ -931,7 +931,7 @@
|
|
"Wrong size %u for field's Signature attribute in class file %s",
|
|
attribute_length, CHECK);
|
|
}
|
|
- generic_signature_index = cfs->get_u2(CHECK);
|
|
+ generic_signature_index = parse_generic_signature_attribute(CHECK);
|
|
} else if (attribute_name == vmSymbols::tag_runtime_visible_annotations()) {
|
|
runtime_visible_annotations_length = attribute_length;
|
|
runtime_visible_annotations = cfs->get_u1_buffer();
|
|
@@ -2305,8 +2305,7 @@
|
|
"Invalid Signature attribute length %u in class file %s",
|
|
method_attribute_length, CHECK_(nullHandle));
|
|
}
|
|
- cfs->guarantee_more(2, CHECK_(nullHandle)); // generic_signature_index
|
|
- generic_signature_index = cfs->get_u2_fast();
|
|
+ generic_signature_index = parse_generic_signature_attribute(CHECK_(nullHandle));
|
|
} else if (method_attribute_name == vmSymbols::tag_runtime_visible_annotations()) {
|
|
runtime_visible_annotations_length = method_attribute_length;
|
|
runtime_visible_annotations = cfs->get_u1_buffer();
|
|
@@ -2616,6 +2615,17 @@
|
|
return method_ordering;
|
|
}
|
|
|
|
+// Parse generic_signature attribute for methods and fields
|
|
+u2 ClassFileParser::parse_generic_signature_attribute(TRAPS) {
|
|
+ ClassFileStream* cfs = stream();
|
|
+ cfs->guarantee_more(2, CHECK_0); // generic_signature_index
|
|
+ u2 generic_signature_index = cfs->get_u2_fast();
|
|
+ check_property(
|
|
+ valid_symbol_at(generic_signature_index),
|
|
+ "Invalid Signature attribute at constant pool index %u in class file %s",
|
|
+ generic_signature_index, CHECK_0);
|
|
+ return generic_signature_index;
|
|
+}
|
|
|
|
void ClassFileParser::parse_classfile_sourcefile_attribute(TRAPS) {
|
|
ClassFileStream* cfs = stream();
|
|
@@ -2770,18 +2780,19 @@
|
|
ClassFileStream* cfs = stream();
|
|
u1* current_start = cfs->current();
|
|
|
|
- cfs->guarantee_more(2, CHECK); // length
|
|
- int attribute_array_length = cfs->get_u2_fast();
|
|
-
|
|
- guarantee_property(_max_bootstrap_specifier_index < attribute_array_length,
|
|
- "Short length on BootstrapMethods in class file %s",
|
|
- CHECK);
|
|
-
|
|
guarantee_property(attribute_byte_length > sizeof(u2),
|
|
"Invalid BootstrapMethods attribute length %u in class file %s",
|
|
attribute_byte_length,
|
|
CHECK);
|
|
|
|
+ cfs->guarantee_more(attribute_byte_length, CHECK);
|
|
+
|
|
+ int attribute_array_length = cfs->get_u2_fast();
|
|
+
|
|
+ guarantee_property(_max_bootstrap_specifier_index < attribute_array_length,
|
|
+ "Short length on BootstrapMethods in class file %s",
|
|
+ CHECK);
|
|
+
|
|
// The attribute contains a counted array of counted tuples of shorts,
|
|
// represending bootstrap specifiers:
|
|
// length*{bootstrap_method_index, argument_count*{argument_index}}
|
|
--- hotspot/src/share/vm/classfile/classFileParser.hpp Tue Mar 11 13:02:13 2014 -0700
|
|
+++ hotspot/src/share/vm/classfile/classFileParser.hpp Tue Jun 03 14:19:26 2014 -0700
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
|
|
+ * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
|
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
|
*
|
|
* This code is free software; you can redistribute it and/or modify it
|
|
@@ -266,6 +266,7 @@
|
|
u1* parse_stackmap_table(u4 code_attribute_length, TRAPS);
|
|
|
|
// Classfile attribute parsing
|
|
+ u2 parse_generic_signature_attribute(TRAPS);
|
|
void parse_classfile_sourcefile_attribute(TRAPS);
|
|
void parse_classfile_source_debug_extension_attribute(int length, TRAPS);
|
|
u2 parse_classfile_inner_classes_attribute(u1* inner_classes_attribute_start,
|
|
--- hotspot/src/share/vm/classfile/stackMapTable.cpp Tue Mar 11 13:02:13 2014 -0700
|
|
+++ hotspot/src/share/vm/classfile/stackMapTable.cpp Tue Jun 03 14:19:26 2014 -0700
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
|
|
+ * Copyright (c) 2003, 2014, Oracle and/or its affiliates. All rights reserved.
|
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
|
*
|
|
* This code is free software; you can redistribute it and/or modify it
|
|
@@ -134,6 +134,7 @@
|
|
}
|
|
// check if uninitialized objects exist on backward branches
|
|
check_new_object(frame, target, CHECK_VERIFY(frame->verifier()));
|
|
+ frame->verifier()->update_furthest_jump(target);
|
|
}
|
|
|
|
void StackMapTable::check_new_object(
|
|
--- hotspot/src/share/vm/classfile/verifier.cpp Tue Mar 11 13:02:13 2014 -0700
|
|
+++ hotspot/src/share/vm/classfile/verifier.cpp Tue Jun 03 14:19:26 2014 -0700
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright (c) 1998, 2013, Oracle and/or its affiliates. All rights reserved.
|
|
+ * Copyright (c) 1998, 2014, Oracle and/or its affiliates. All rights reserved.
|
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
|
*
|
|
* This code is free software; you can redistribute it and/or modify it
|
|
@@ -632,6 +632,9 @@
|
|
bool no_control_flow = false; // Set to true when there is no direct control
|
|
// flow from current instruction to the next
|
|
// instruction in sequence
|
|
+
|
|
+ set_furthest_jump(0);
|
|
+
|
|
Bytecodes::Code opcode;
|
|
while (!bcs.is_last_bytecode()) {
|
|
// Check for recursive re-verification before each bytecode.
|
|
@@ -2245,6 +2248,29 @@
|
|
"Bad <init> method call");
|
|
return;
|
|
}
|
|
+
|
|
+ // Make sure that this call is not jumped over.
|
|
+ if (bci < furthest_jump()) {
|
|
+ verify_error(ErrorContext::bad_code(bci),
|
|
+ "Bad <init> method call from inside of a branch");
|
|
+ return;
|
|
+ }
|
|
+
|
|
+ // Make sure that this call is not done from within a TRY block because
|
|
+ // that can result in returning an incomplete object. Simply checking
|
|
+ // (bci >= start_pc) also ensures that this call is not done after a TRY
|
|
+ // block. That is also illegal because this call must be the first Java
|
|
+ // statement in the constructor.
|
|
+ ExceptionTable exhandlers(_method());
|
|
+ int exlength = exhandlers.length();
|
|
+ for(int i = 0; i < exlength; i++) {
|
|
+ if (bci >= exhandlers.start_pc(i)) {
|
|
+ verify_error(ErrorContext::bad_code(bci),
|
|
+ "Bad <init> method call from after the start of a try block");
|
|
+ return;
|
|
+ }
|
|
+ }
|
|
+
|
|
current_frame->initialize_object(type, current_type());
|
|
*this_uninit = true;
|
|
} else if (type.is_uninitialized()) {
|
|
@@ -2281,16 +2307,19 @@
|
|
Method* m = InstanceKlass::cast(ref_klass)->uncached_lookup_method(
|
|
vmSymbols::object_initializer_name(),
|
|
cp->signature_ref_at(bcs->get_index_u2()));
|
|
- instanceKlassHandle mh(THREAD, m->method_holder());
|
|
- if (m->is_protected() && !mh->is_same_class_package(_klass())) {
|
|
- bool assignable = current_type().is_assignable_from(
|
|
- objectref_type, this, CHECK_VERIFY(this));
|
|
- if (!assignable) {
|
|
- verify_error(ErrorContext::bad_type(bci,
|
|
- TypeOrigin::cp(new_class_index, objectref_type),
|
|
- TypeOrigin::implicit(current_type())),
|
|
- "Bad access to protected <init> method");
|
|
- return;
|
|
+ // Do nothing if method is not found. Let resolution detect the error.
|
|
+ if (m != NULL) {
|
|
+ instanceKlassHandle mh(THREAD, m->method_holder());
|
|
+ if (m->is_protected() && !mh->is_same_class_package(_klass())) {
|
|
+ bool assignable = current_type().is_assignable_from(
|
|
+ objectref_type, this, CHECK_VERIFY(this));
|
|
+ if (!assignable) {
|
|
+ verify_error(ErrorContext::bad_type(bci,
|
|
+ TypeOrigin::cp(new_class_index, objectref_type),
|
|
+ TypeOrigin::implicit(current_type())),
|
|
+ "Bad access to protected <init> method");
|
|
+ return;
|
|
+ }
|
|
}
|
|
}
|
|
}
|
|
--- hotspot/src/share/vm/classfile/verifier.hpp Tue Mar 11 13:02:13 2014 -0700
|
|
+++ hotspot/src/share/vm/classfile/verifier.hpp Tue Jun 03 14:19:26 2014 -0700
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright (c) 1998, 2013, Oracle and/or its affiliates. All rights reserved.
|
|
+ * Copyright (c) 1998, 2014, Oracle and/or its affiliates. All rights reserved.
|
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
|
*
|
|
* This code is free software; you can redistribute it and/or modify it
|
|
@@ -258,6 +258,9 @@
|
|
|
|
ErrorContext _error_context; // contains information about an error
|
|
|
|
+ // Used to detect illegal jumps over calls to super() nd this() in ctors.
|
|
+ int32_t _furthest_jump;
|
|
+
|
|
void verify_method(methodHandle method, TRAPS);
|
|
char* generate_code_data(methodHandle m, u4 code_length, TRAPS);
|
|
void verify_exception_handler_table(u4 code_length, char* code_data,
|
|
@@ -403,6 +406,20 @@
|
|
Symbol* create_temporary_symbol(const char *s, int length, TRAPS);
|
|
|
|
TypeOrigin ref_ctx(const char* str, TRAPS);
|
|
+
|
|
+ // Keep track of the furthest branch done in a method to make sure that
|
|
+ // there are no branches over calls to super() or this() from inside of
|
|
+ // a constructor.
|
|
+ int32_t furthest_jump() { return _furthest_jump; }
|
|
+
|
|
+ void set_furthest_jump(int32_t target) {
|
|
+ _furthest_jump = target;
|
|
+ }
|
|
+
|
|
+ void update_furthest_jump(int32_t target) {
|
|
+ if (target > _furthest_jump) _furthest_jump = target;
|
|
+ }
|
|
+
|
|
};
|
|
|
|
inline int ClassVerifier::change_sig_to_verificationType(
|
|
--- hotspot/src/share/vm/compiler/compileBroker.cpp Tue Mar 11 13:02:13 2014 -0700
|
|
+++ hotspot/src/share/vm/compiler/compileBroker.cpp Tue Jun 03 14:19:26 2014 -0700
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
|
|
+ * Copyright (c) 1999, 2014, Oracle and/or its affiliates. All rights reserved.
|
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
|
*
|
|
* This code is free software; you can redistribute it and/or modify it
|
|
@@ -2089,6 +2089,7 @@
|
|
ResourceMark rm;
|
|
char* method_name = method->name()->as_C_string();
|
|
strncpy(_last_method_compiled, method_name, CompileBroker::name_buffer_length);
|
|
+ _last_method_compiled[CompileBroker::name_buffer_length - 1] = '\0'; // ensure null terminated
|
|
char current_method[CompilerCounters::cmname_buffer_length];
|
|
size_t maxLen = CompilerCounters::cmname_buffer_length;
|
|
|
|
--- hotspot/src/share/vm/oops/klassVtable.cpp Tue Mar 11 13:02:13 2014 -0700
|
|
+++ hotspot/src/share/vm/oops/klassVtable.cpp Tue Jun 03 14:19:26 2014 -0700
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
|
|
+ * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
|
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
|
*
|
|
* This code is free software; you can redistribute it and/or modify it
|
|
@@ -249,6 +249,17 @@
|
|
// For bytecodes not produced by javac together it is possible that a method does not override
|
|
// the superclass's method, but might indirectly override a super-super class's vtable entry
|
|
// If none found, return a null superk, else return the superk of the method this does override
|
|
+// For public and protected methods: if they override a superclass, they will
|
|
+// also be overridden themselves appropriately.
|
|
+// Private methods do not override and are not overridden.
|
|
+// Package Private methods are trickier:
|
|
+// e.g. P1.A, pub m
|
|
+// P2.B extends A, package private m
|
|
+// P1.C extends B, public m
|
|
+// P1.C.m needs to override P1.A.m and can not override P2.B.m
|
|
+// Therefore: all package private methods need their own vtable entries for
|
|
+// them to be the root of an inheritance overriding decision
|
|
+// Package private methods may also override other vtable entries
|
|
InstanceKlass* klassVtable::find_transitive_override(InstanceKlass* initialsuper, methodHandle target_method,
|
|
int vtable_index, Handle target_loader, Symbol* target_classname, Thread * THREAD) {
|
|
InstanceKlass* superk = initialsuper;
|
|
@@ -396,8 +407,11 @@
|
|
target_classname, THREAD))
|
|
!= (InstanceKlass*)NULL))))
|
|
{
|
|
- // overriding, so no new entry
|
|
- allocate_new = false;
|
|
+ // Package private methods always need a new entry to root their own
|
|
+ // overriding. They may also override other methods.
|
|
+ if (!target_method()->is_package_private()) {
|
|
+ allocate_new = false;
|
|
+ }
|
|
|
|
if (checkconstraints) {
|
|
// Override vtable entry if passes loader constraint check
|
|
@@ -541,8 +555,9 @@
|
|
AccessFlags class_flags,
|
|
TRAPS) {
|
|
if (class_flags.is_interface()) {
|
|
- // Interfaces do not use vtables, so there is no point to assigning
|
|
- // a vtable index to any of their methods. If we refrain from doing this,
|
|
+ // Interfaces do not use vtables, except for java.lang.Object methods,
|
|
+ // so there is no point to assigning
|
|
+ // a vtable index to any of their local methods. If we refrain from doing this,
|
|
// we can use Method::_vtable_index to hold the itable index
|
|
return false;
|
|
}
|
|
@@ -580,6 +595,12 @@
|
|
return true;
|
|
}
|
|
|
|
+ // Package private methods always need a new entry to root their own
|
|
+ // overriding. This allows transitive overriding to work.
|
|
+ if (target_method()->is_package_private()) {
|
|
+ return true;
|
|
+ }
|
|
+
|
|
// search through the super class hierarchy to see if we need
|
|
// a new entry
|
|
ResourceMark rm;
|
|
--- hotspot/src/share/vm/runtime/os.hpp Tue Mar 11 13:02:13 2014 -0700
|
|
+++ hotspot/src/share/vm/runtime/os.hpp Tue Jun 03 14:19:26 2014 -0700
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
|
|
+ * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
|
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
|
*
|
|
* This code is free software; you can redistribute it and/or modify it
|
|
@@ -470,9 +470,6 @@
|
|
// run cmd in a separate process and return its exit code; or -1 on failures
|
|
static int fork_and_exec(char *cmd);
|
|
|
|
- // Set file to send error reports.
|
|
- static void set_error_file(const char *logfile);
|
|
-
|
|
// os::exit() is merged with vm_exit()
|
|
// static void exit(int num);
|
|
|
|
--- hotspot/src/share/vm/utilities/events.cpp Tue Mar 11 13:02:13 2014 -0700
|
|
+++ hotspot/src/share/vm/utilities/events.cpp Tue Jun 03 14:19:26 2014 -0700
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
|
|
+ * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
|
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
|
*
|
|
* This code is free software; you can redistribute it and/or modify it
|
|
@@ -82,7 +82,7 @@
|
|
va_start(ap, format);
|
|
// Save a copy of begin message and log it.
|
|
_buffer.printv(format, ap);
|
|
- Events::log(NULL, _buffer);
|
|
+ Events::log(NULL, "%s", (const char*)_buffer);
|
|
va_end(ap);
|
|
}
|
|
}
|
|
@@ -91,6 +91,6 @@
|
|
if (LogEvents) {
|
|
// Append " done" to the begin message and log it
|
|
_buffer.append(" done");
|
|
- Events::log(NULL, _buffer);
|
|
+ Events::log(NULL, "%s", (const char*)_buffer);
|
|
}
|
|
}
|
|
--- hotspot/src/share/vm/utilities/vmError.cpp Tue Mar 11 13:02:13 2014 -0700
|
|
+++ hotspot/src/share/vm/utilities/vmError.cpp Tue Jun 03 14:19:26 2014 -0700
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.
|
|
+ * Copyright (c) 2003, 2014, Oracle and/or its affiliates. All rights reserved.
|
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
|
*
|
|
* This code is free software; you can redistribute it and/or modify it
|
|
@@ -975,7 +975,6 @@
|
|
if (fd != -1) {
|
|
out.print_raw("# An error report file with more information is saved as:\n# ");
|
|
out.print_raw_cr(buffer);
|
|
- os::set_error_file(buffer);
|
|
|
|
log.set_fd(fd);
|
|
} else {
|
|
--- jaxp/.hgtags Tue Mar 11 13:02:28 2014 -0700
|
|
+++ jaxp/.hgtags Tue Jun 03 14:19:32 2014 -0700
|
|
@@ -258,6 +258,9 @@
|
|
bd97ff5f82588c627869218df02a9c2dbb9402d0 jdk8u5-b02
|
|
195b74b3e57905b6d6c9ed9b32139c6781ba7d28 jdk8u5-b03
|
|
106fdcde4b8a6981be13dac34a3de99d6fece97c jdk8u5-b04
|
|
+8f859b1b0f0b18ee7e231d6887b18b5721c2404e jdk8u11-b00
|
|
+57c695af3fe838c36eaef647f2af543cd60533e4 jdk8u5-b05
|
|
+0000000000000000000000000000000000000000 jdk8u5-b05
|
|
8f859b1b0f0b18ee7e231d6887b18b5721c2404e jdk8u5-b05
|
|
e22bc548b58a695eede0304399777314ae473562 jdk8u5-b06
|
|
0f96584b02b399df706bec2052a7fe48bdc6058b jdk8u5-b07
|
|
@@ -266,3 +269,15 @@
|
|
4b32ee8d711251e90ade1d958a51e134c3d387c9 jdk8u5-b10
|
|
c17a827bec287f4c7565c72c195667e52154772b jdk8u5-b11
|
|
0e5317cbe451d57f9ffcbb835de07fe553a8aa34 jdk8u5-b12
|
|
+a303ebb338518a716c267b17986634e3574e7cfe jdk8u5-b13
|
|
+3e1631f54539cc21770659dcf61440693ac5fa79 jdk8u11-b01
|
|
+6eaf565691a13328e82473d70dfd0feb8fb2f5e8 jdk8u11-b02
|
|
+36d713c3339ad945521d298eeb21c67ee856344e jdk8u11-b03
|
|
+a25020bdca11acad85454a35a9912fd1b4168d83 jdk8u11-b04
|
|
+65e5ee249ebc81c0ccfff23946a0a2a6d4becdcc jdk8u11-b05
|
|
+beafeb0b7a178a3906bcb7dcf46f3c9a9c9717c5 jdk8u11-b06
|
|
+1923c759e5ed7e9a92512797269d997cae1135b8 jdk8u11-b07
|
|
+61faafa45502e4e6db6ce9026d2a7f2121dcae3f jdk8u11-b08
|
|
+a01fd971ef667977a131f5fbaaee300e500424c3 jdk8u11-b09
|
|
+1d894a9d308c4b3a64e876097c2e0e1e577cfd73 jdk8u11-b10
|
|
+41edd71af41f1100b965e0fab88f97d3c130e3de jdk8u11-b11
|
|
--- jaxp/src/com/sun/org/apache/xalan/internal/XalanConstants.java Tue Mar 11 13:02:28 2014 -0700
|
|
+++ jaxp/src/com/sun/org/apache/xalan/internal/XalanConstants.java Tue Jun 03 14:19:32 2014 -0700
|
|
@@ -91,6 +91,13 @@
|
|
*/
|
|
public static final String JDK_XML_NAME_LIMIT =
|
|
ORACLE_JAXP_PROPERTY_PREFIX + "maxXMLNameLimit";
|
|
+
|
|
+ /**
|
|
+ * JDK maxElementDepth limit
|
|
+ */
|
|
+ public static final String JDK_MAX_ELEMENT_DEPTH =
|
|
+ ORACLE_JAXP_PROPERTY_PREFIX + "maxElementDepth";
|
|
+
|
|
/**
|
|
* JDK property indicating whether the parser shall print out entity
|
|
* count information
|
|
@@ -139,6 +146,11 @@
|
|
*/
|
|
public static final String SP_XML_NAME_LIMIT = "jdk.xml.maxXMLNameLimit";
|
|
|
|
+ /**
|
|
+ * JDK maxElementDepth limit
|
|
+ */
|
|
+ public static final String SP_MAX_ELEMENT_DEPTH = "jdk.xml.maxElementDepth";
|
|
+
|
|
//legacy System Properties
|
|
public final static String ENTITY_EXPANSION_LIMIT = "entityExpansionLimit";
|
|
public static final String ELEMENT_ATTRIBUTE_LIMIT = "elementAttributeLimit" ;
|
|
--- jaxp/src/com/sun/org/apache/xalan/internal/utils/XMLSecurityManager.java Tue Mar 11 13:02:28 2014 -0700
|
|
+++ jaxp/src/com/sun/org/apache/xalan/internal/utils/XMLSecurityManager.java Tue Jun 03 14:19:32 2014 -0700
|
|
@@ -76,7 +76,9 @@
|
|
GENERAL_ENTITY_SIZE_LIMIT(XalanConstants.JDK_GENERAL_ENTITY_SIZE_LIMIT,
|
|
XalanConstants.SP_GENERAL_ENTITY_SIZE_LIMIT, 0, 0),
|
|
PARAMETER_ENTITY_SIZE_LIMIT(XalanConstants.JDK_PARAMETER_ENTITY_SIZE_LIMIT,
|
|
- XalanConstants.SP_PARAMETER_ENTITY_SIZE_LIMIT, 0, 1000000);
|
|
+ XalanConstants.SP_PARAMETER_ENTITY_SIZE_LIMIT, 0, 1000000),
|
|
+ MAX_ELEMENT_DEPTH_LIMIT(XalanConstants.JDK_MAX_ELEMENT_DEPTH,
|
|
+ XalanConstants.SP_MAX_ELEMENT_DEPTH, 0, 0);
|
|
|
|
final String apiProperty;
|
|
final String systemProperty;
|
|
--- jaxp/src/com/sun/org/apache/xerces/internal/impl/Constants.java Tue Mar 11 13:02:28 2014 -0700
|
|
+++ jaxp/src/com/sun/org/apache/xerces/internal/impl/Constants.java Tue Jun 03 14:19:32 2014 -0700
|
|
@@ -252,6 +252,13 @@
|
|
*/
|
|
public static final String JDK_XML_NAME_LIMIT =
|
|
ORACLE_JAXP_PROPERTY_PREFIX + "maxXMLNameLimit";
|
|
+
|
|
+ /**
|
|
+ * JDK maxElementDepth limit
|
|
+ */
|
|
+ public static final String JDK_MAX_ELEMENT_DEPTH =
|
|
+ ORACLE_JAXP_PROPERTY_PREFIX + "maxElementDepth";
|
|
+
|
|
/**
|
|
* JDK property to allow printing out information from the limit analyzer
|
|
*/
|
|
@@ -297,6 +304,11 @@
|
|
*/
|
|
public static final String SP_XML_NAME_LIMIT = "jdk.xml.maxXMLNameLimit";
|
|
|
|
+ /**
|
|
+ * JDK maxElementDepth limit
|
|
+ */
|
|
+ public static final String SP_MAX_ELEMENT_DEPTH = "jdk.xml.maxElementDepth";
|
|
+
|
|
//legacy System Properties
|
|
public final static String ENTITY_EXPANSION_LIMIT = "entityExpansionLimit";
|
|
public static final String ELEMENT_ATTRIBUTE_LIMIT = "elementAttributeLimit" ;
|
|
--- jaxp/src/com/sun/org/apache/xerces/internal/impl/XMLDocumentFragmentScannerImpl.java Tue Mar 11 13:02:28 2014 -0700
|
|
+++ jaxp/src/com/sun/org/apache/xerces/internal/impl/XMLDocumentFragmentScannerImpl.java Tue Jun 03 14:19:32 2014 -0700
|
|
@@ -1309,6 +1309,7 @@
|
|
|
|
fAttributes.removeAllAttributes();
|
|
|
|
+ checkDepth(rawname);
|
|
if(!seekCloseOfStartTag()){
|
|
fReadingAttributes = true;
|
|
fAttributeCacheUsedCount =0;
|
|
@@ -1913,6 +1914,21 @@
|
|
// utility methods
|
|
|
|
/**
|
|
+ * Check if the depth exceeds the maxElementDepth limit
|
|
+ * @param elementName name of the current element
|
|
+ */
|
|
+ void checkDepth(String elementName) {
|
|
+ fLimitAnalyzer.addValue(Limit.MAX_ELEMENT_DEPTH_LIMIT, elementName, fElementStack.fDepth);
|
|
+ if (fSecurityManager.isOverLimit(Limit.MAX_ELEMENT_DEPTH_LIMIT,fLimitAnalyzer)) {
|
|
+ fSecurityManager.debugPrint(fLimitAnalyzer);
|
|
+ reportFatalError("MaxElementDepthLimit", new Object[]{elementName,
|
|
+ fLimitAnalyzer.getTotalValue(Limit.MAX_ELEMENT_DEPTH_LIMIT),
|
|
+ fSecurityManager.getLimit(Limit.MAX_ELEMENT_DEPTH_LIMIT),
|
|
+ "maxElementDepth"});
|
|
+ }
|
|
+ }
|
|
+
|
|
+ /**
|
|
* Calls document handler with a single character resulting from
|
|
* built-in entity resolution.
|
|
*
|
|
--- jaxp/src/com/sun/org/apache/xerces/internal/impl/XMLNSDocumentScannerImpl.java Tue Mar 11 13:02:28 2014 -0700
|
|
+++ jaxp/src/com/sun/org/apache/xerces/internal/impl/XMLNSDocumentScannerImpl.java Tue Jun 03 14:19:32 2014 -0700
|
|
@@ -220,6 +220,7 @@
|
|
fCurrentElement = fElementQName;
|
|
|
|
String rawname = fElementQName.rawname;
|
|
+ checkDepth(rawname);
|
|
if (fBindNamespaces) {
|
|
fNamespaceContext.pushContext();
|
|
if (fScannerState == SCANNER_STATE_ROOT_ELEMENT) {
|
|
--- jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessages.properties Tue Mar 11 13:02:28 2014 -0700
|
|
+++ jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessages.properties Tue Jun 03 14:19:32 2014 -0700
|
|
@@ -299,4 +299,5 @@
|
|
MaxEntitySizeLimit=JAXP00010003: The length of entity \"{0}\" is \"{1}\" that exceeds the \"{2}\" limit set by \"{3}\".
|
|
TotalEntitySizeLimit=JAXP00010004: The accumulated size \"{0}\" of entities exceeded the \"{1}\" limit set by \"{2}\".
|
|
MaxXMLNameLimit=JAXP00010005: The name \"{0}\" exceeded the \"{1}\" limit set by \"{2}\".
|
|
+ MaxElementDepthLimit=JAXP00010006: The element \"{0}\" has a depth of \"{1}\" that exceeds the limit \"{2}\" set by \"{3}\".
|
|
|
|
--- jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessages_de.properties Tue Mar 11 13:02:28 2014 -0700
|
|
+++ jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessages_de.properties Tue Jun 03 14:19:32 2014 -0700
|
|
@@ -251,7 +251,7 @@
|
|
NMTOKENInvalid = Attributwert "{0}" mit dem Typ NMTOKEN muss ein Namenstoken sein.
|
|
NMTOKENSInvalid = Attributwert "{0}" mit dem Typ NMTOKENS muss mindestens ein Namenstoken sein.
|
|
NoNotationOnEmptyElement = Elementtyp "{0}", der als EMPTY deklariert wurde, kann nicht das Attribut "{1}" mit dem Typ NOTATION deklarieren.
|
|
- RootElementTypeMustMatchDoctypedecl = Dokument-Root-Element "{1}"muss mit DOCTYPE-Root "{0}" \u00FCbereinstimmen.
|
|
+ RootElementTypeMustMatchDoctypedecl = Document Root-Element "{1}"muss mit DOCTYPE-Root "{0}" \u00FCbereinstimmen.
|
|
UndeclaredElementInContentSpec = Contentmodell des Elements "{0}" verweist auf das nicht deklarierte Element "{1}".
|
|
UniqueNotationName = Deklaration f\u00FCr die Notation "{0}" ist nicht eindeutig. Ein jeweiliger Name darf nicht in mehreren Notationsdeklarationen deklariert werden.
|
|
ENTITYFailedInitializeGrammar = ENTITYDatatype-Validator: Nicht erfolgreich. Initialisierungsmethode muss mit einer g\u00FCltigen Grammatikreferenz aufgerufen werden. \t
|
|
@@ -299,4 +299,5 @@
|
|
MaxEntitySizeLimit=JAXP00010003: Die L\u00E4nge von Entit\u00E4t "{0}" ist "{1}" und \u00FCberschreitet den Grenzwert "{2}", der von "{3}" festgelegt wurde.
|
|
TotalEntitySizeLimit=JAXP00010004: Die akkumulierte Gr\u00F6\u00DFe "{0}" der Entit\u00E4ten \u00FCberschreitet den Grenzwert "{1}", der von "{2}" festgelegt wurde.
|
|
MaxXMLNameLimit=JAXP00010005: Der Name "{0}" \u00FCberschreitet den Grenzwert "{1}", der von "{2}" festgelegt wurde.
|
|
+ MaxElementDepthLimit=JAXP00010006: Die Tiefe von Element "{0}" ist "{1}" und \u00FCberschreitet den Grenzwert "{2}", der von "{3}" festgelegt wurde.
|
|
|
|
--- jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessages_es.properties Tue Mar 11 13:02:28 2014 -0700
|
|
+++ jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessages_es.properties Tue Jun 03 14:19:32 2014 -0700
|
|
@@ -299,4 +299,5 @@
|
|
MaxEntitySizeLimit=JAXP00010003: la longitud de la entidad "{0}" es "{1}", que excede el l\u00EDmite de "{2}" que ha definido "{3}".
|
|
TotalEntitySizeLimit=JAXP00010004: el tama\u00F1o acumulado "{0}" de las entidades ha excedido el l\u00EDmite de "{1}" que ha definido "{2}".
|
|
MaxXMLNameLimit=JAXP00010005: el nombre "{0}" ha excedido el l\u00EDmite de "{1}" que ha definido "{2}".
|
|
+ MaxElementDepthLimit=JAXP00010006: El elemento "{0}" tiene una profundidad de "{1}" que excede el l\u00EDmite "{2}" definido por "{3}".
|
|
|
|
--- jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessages_fr.properties Tue Mar 11 13:02:28 2014 -0700
|
|
+++ jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessages_fr.properties Tue Jun 03 14:19:32 2014 -0700
|
|
@@ -299,4 +299,5 @@
|
|
MaxEntitySizeLimit=JAXP00010003 : La longueur de l''entit\u00E9 "{0}" est de "{1}". Cette valeur d\u00E9passe la limite de "{2}" d\u00E9finie par "{3}".
|
|
TotalEntitySizeLimit=JAXP00010004 : La taille cumul\u00E9e des entit\u00E9s ("{0}") d\u00E9passe la limite de "{1}" d\u00E9finie par "{2}".
|
|
MaxXMLNameLimit=JAXP00010005 : le nom "{0}" d\u00E9passe la limite de "{1}" d\u00E9finie par "{2}".
|
|
+ MaxElementDepthLimit=JAXP00010006 : l''\u00E9l\u00E9ment "{0}" a une profondeur de "{1}" qui d\u00E9passe la limite de "{2}" d\u00E9finie par "{3}".
|
|
|
|
--- jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessages_it.properties Tue Mar 11 13:02:28 2014 -0700
|
|
+++ jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessages_it.properties Tue Jun 03 14:19:32 2014 -0700
|
|
@@ -299,4 +299,5 @@
|
|
MaxEntitySizeLimit=JAXP00010003: la lunghezza dell''entit\u00E0 "{0}" \u00E8 "{1}". Tale valore supera il limite "{2}" definito da "{3}".
|
|
TotalEntitySizeLimit=JAXP00010004: le dimensioni accumulate "{0}" delle entit\u00E0 supera il limite "{1}" definito da "{2}".
|
|
MaxXMLNameLimit=JAXP00010005: il nome "{0}" supera il limite "{1}" definito da "{2}".
|
|
+ MaxElementDepthLimit=JAXP00010006: la profondit\u00E0 dell''elemento "{0}" \u00E8 "{1}". Tale valore supera il limite "{2}" definito da "{3}".
|
|
|
|
--- jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessages_ja.properties Tue Mar 11 13:02:28 2014 -0700
|
|
+++ jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessages_ja.properties Tue Jun 03 14:19:32 2014 -0700
|
|
@@ -122,7 +122,7 @@
|
|
ExpectedByte = {1}\u30D0\u30A4\u30C8\u306EUTF-8\u30B7\u30FC\u30B1\u30F3\u30B9\u306E\u30D0\u30A4\u30C8{0}\u304C\u5FC5\u8981\u3067\u3059\u3002
|
|
InvalidHighSurrogate = UTF-8\u30B7\u30FC\u30B1\u30F3\u30B9\u306E\u4E0A\u4F4D\u30B5\u30ED\u30B2\u30FC\u30C8\u30FB\u30D3\u30C3\u30C8\u306E\u4E0A\u9650\u306F0x10\u3067\u3059\u304C\u30010x{0}\u304C\u691C\u51FA\u3055\u308C\u307E\u3057\u305F\u3002
|
|
OperationNotSupported = \u64CD\u4F5C"{0}"\u306F{1}\u30EA\u30FC\u30C0\u30FC\u3067\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002
|
|
- InvalidASCII = \u30D0\u30A4\u30C8"{0}"\u306F\u3001(7\u30D3\u30C3\u30C8) ASCII\u30AD\u30E3\u30E9\u30AF\u30BF\u30FB\u30BB\u30C3\u30C8\u306E\u30E1\u30F3\u30D0\u30FC\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002
|
|
+ InvalidASCII = \u30D0\u30A4\u30C8"{0}"\u306F\u3001(7\u30D3\u30C3\u30C8) ASCII\u6587\u5B57\u30BB\u30C3\u30C8\u306E\u30E1\u30F3\u30D0\u30FC\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002
|
|
CharConversionFailure = \u7279\u5B9A\u306E\u30A8\u30F3\u30B3\u30FC\u30C7\u30A3\u30F3\u30B0\u3067\u3042\u308B\u3068\u78BA\u5B9A\u3055\u308C\u305F\u30A8\u30F3\u30C6\u30A3\u30C6\u30A3\u306B\u306F\u3001\u305D\u306E\u30A8\u30F3\u30B3\u30FC\u30C7\u30A3\u30F3\u30B0\u3067\u4E0D\u6B63\u306A\u30B7\u30FC\u30B1\u30F3\u30B9\u3092\u542B\u3081\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002
|
|
|
|
# DTD Messages
|
|
@@ -299,4 +299,5 @@
|
|
MaxEntitySizeLimit=JAXP00010003: \u30A8\u30F3\u30C6\u30A3\u30C6\u30A3"{0}"\u306E\u9577\u3055\u306F"{1}"\u3067\u3001"{3}"\u3067\u8A2D\u5B9A\u3055\u308C\u305F\u5236\u9650"{2}"\u3092\u8D85\u3048\u3066\u3044\u307E\u3059\u3002
|
|
TotalEntitySizeLimit=JAXP00010004: \u30A8\u30F3\u30C6\u30A3\u30C6\u30A3\u306E\u7D2F\u7A4D\u30B5\u30A4\u30BA"{0}"\u306F\u3001"{2}"\u3067\u8A2D\u5B9A\u3055\u308C\u305F\u5236\u9650"{1}"\u3092\u8D85\u3048\u307E\u3057\u305F\u3002
|
|
MaxXMLNameLimit=JAXP00010005: \u540D\u524D"{0}"\u306F\u3001"{2}"\u3067\u8A2D\u5B9A\u3055\u308C\u305F\u5236\u9650"{1}"\u3092\u8D85\u3048\u3066\u3044\u307E\u3059\u3002
|
|
+ MaxElementDepthLimit=JAXP00010006: \u8981\u7D20"{0}"\u306E\u6DF1\u3055\u306F"{1}"\u3067\u3001"{3}"\u3067\u8A2D\u5B9A\u3055\u308C\u305F\u5236\u9650"{2}"\u3092\u8D85\u3048\u3066\u3044\u307E\u3059\u3002
|
|
|
|
--- jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessages_ko.properties Tue Mar 11 13:02:28 2014 -0700
|
|
+++ jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessages_ko.properties Tue Jun 03 14:19:32 2014 -0700
|
|
@@ -299,4 +299,5 @@
|
|
MaxEntitySizeLimit=JAXP00010003: "{0}" \uC5D4\uD2F0\uD2F0\uC758 \uAE38\uC774\uAC00 "{3}"\uC5D0\uC11C \uC124\uC815\uB41C "{2}" \uC81C\uD55C\uC744 \uCD08\uACFC\uD558\uB294 "{1}"\uC785\uB2C8\uB2E4.
|
|
TotalEntitySizeLimit=JAXP00010004: \uC5D4\uD2F0\uD2F0\uC758 \uB204\uC801 \uD06C\uAE30 "{0}"\uC774(\uAC00) "{2}"\uC5D0\uC11C \uC124\uC815\uB41C "{1}" \uC81C\uD55C\uC744 \uCD08\uACFC\uD588\uC2B5\uB2C8\uB2E4.
|
|
MaxXMLNameLimit=JAXP00010005: "{0}" \uC774\uB984\uC774 "{2}"\uC5D0\uC11C \uC124\uC815\uB41C "{1}" \uC81C\uD55C\uC744 \uCD08\uACFC\uD588\uC2B5\uB2C8\uB2E4.
|
|
+ MaxElementDepthLimit=JAXP00010006: "{0}" \uC694\uC18C\uC758 \uAE4A\uC774\uAC00 "{3}"\uC5D0\uC11C \uC124\uC815\uB41C "{2}" \uC81C\uD55C\uC744 \uCD08\uACFC\uD558\uB294 "{1}"\uC785\uB2C8\uB2E4.
|
|
|
|
--- jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessages_pt_BR.properties Tue Mar 11 13:02:28 2014 -0700
|
|
+++ jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessages_pt_BR.properties Tue Jun 03 14:19:32 2014 -0700
|
|
@@ -129,7 +129,7 @@
|
|
# 2.2 Characters
|
|
InvalidCharInEntityValue = Um caractere XML inv\u00E1lido (Unicode: 0x {0}) foi encontrado no valor da entidade da literal.
|
|
InvalidCharInExternalSubset = Um caractere XML inv\u00E1lido (Unicode: 0x {0}) foi encontrado no subconjunto externo do DTD.
|
|
- InvalidCharInIgnoreSect = Um caractere XML inv\u00E1lido (Unicode: 0x{0}) foi encontrado na se\u00E7\u00E3o condicional deletada.
|
|
+ InvalidCharInIgnoreSect = Um caractere XML inv\u00E1lido (Unicode: 0x{0}) foi encontrado na se\u00E7\u00E3o condicional exclu\u00EDda.
|
|
InvalidCharInPublicID = Um caractere XML inv\u00E1lido (Unicode: 0x{0}) foi encontrado no identificador p\u00FAblico.
|
|
InvalidCharInSystemID = Um caractere XML inv\u00E1lido (Unicode: 0x{0}) foi encontrado no identificador do sistema.
|
|
# 2.3 Common Syntactic Constructs
|
|
@@ -148,7 +148,7 @@
|
|
PEReferenceWithinMarkup = A refer\u00EAncia da entidade do par\u00E2metro "%{0};" n\u00E3o pode ocorrer na marca\u00E7\u00E3o no subconjunto interno do DTD.
|
|
MSG_MARKUP_NOT_RECOGNIZED_IN_DTD = As declara\u00E7\u00F5es de marca\u00E7\u00E3o contidas ou apontadas pela declara\u00E7\u00E3o do tipo de documento devem estar corretas.
|
|
# 2.10 White Space Handling
|
|
- MSG_XML_SPACE_DECLARATION_ILLEGAL = Deve ser fornecida a declara\u00E7\u00E3o do atributo para "xml:space" como um tipo enumerado, cujo os \u00FAnicos valores poss\u00EDveis s\u00E3o "default" e "preserve".
|
|
+ MSG_XML_SPACE_DECLARATION_ILLEGAL = Deve ser fornecida a declara\u00E7\u00E3o do atributo para "xml:space" como um tipo enumerado, cujo os \u00FAnicos valores poss\u00EDveis s\u00E3o "padr\u00E3o" e "preserve".
|
|
# 3.2 Element Type Declarations
|
|
MSG_SPACE_REQUIRED_BEFORE_ELEMENT_TYPE_IN_ELEMENTDECL = O espa\u00E7o em branco \u00E9 necess\u00E1rio ap\u00F3s "<!ELEMENT" na declara\u00E7\u00E3o do tipo de elemento.
|
|
MSG_ELEMENT_TYPE_REQUIRED_IN_ELEMENTDECL = O tipo de elemento \u00E9 necess\u00E1rio na declara\u00E7\u00E3o do tipo de elemento.
|
|
@@ -169,7 +169,7 @@
|
|
AttNameRequiredInAttDef = O nome do atributo deve ser especificado na declara\u00E7\u00E3o da lista de atributos do elemento "{0}".
|
|
MSG_SPACE_REQUIRED_BEFORE_ATTTYPE_IN_ATTDEF = \u00C9 necess\u00E1rio o espa\u00E7o em branco antes do tipo de atributo na declara\u00E7\u00E3o do atributo "{1}" do elemento "{0}".
|
|
AttTypeRequiredInAttDef = \u00C9 necess\u00E1rio o tipo de atributo na declara\u00E7\u00E3o do atributo "{1}" do elemento "{0}".
|
|
- MSG_SPACE_REQUIRED_BEFORE_DEFAULTDECL_IN_ATTDEF = \u00C9 necess\u00E1rio o espa\u00E7o em branco antes do default do atributo na declara\u00E7\u00E3o do atributo "{1}" do elemento "{0}".
|
|
+ MSG_SPACE_REQUIRED_BEFORE_DEFAULTDECL_IN_ATTDEF = \u00C9 necess\u00E1rio o espa\u00E7o em branco antes do padr\u00E3o do atributo na declara\u00E7\u00E3o do atributo "{1}" do elemento "{0}".
|
|
MSG_DUPLICATE_ATTRIBUTE_DEFINITION = Mais de uma defini\u00E7\u00E3o de atributo fornecida para o mesmo atributo "{1}" de um determinado elemento "{0}".
|
|
# 3.3.1 Attribute Types
|
|
MSG_SPACE_REQUIRED_AFTER_NOTATION_IN_NOTATIONTYPE = O espa\u00E7o em branco deve aparecer ap\u00F3s "NOTATION" na declara\u00E7\u00E3o do atributo "{1}".
|
|
@@ -216,7 +216,7 @@
|
|
DuplicateTypeInMixedContent = O tipo de elemento "{1}" j\u00E1 foi especificado no modelo de conte\u00FAdo da declara\u00E7\u00E3o do elemento "{0}".
|
|
ENTITIESInvalid = O valor do atributo "{1}" do tipo ENTITIES deve ser o nome de uma ou mais entidades n\u00E3o submetidas a parsing.
|
|
ENTITYInvalid = O valor do atributo "{1}" do tipo ENTITY deve ser o nome de uma entidade n\u00E3o submetida a parsing.
|
|
- IDDefaultTypeInvalid = O atributo do ID "{0}" deve ter um default declarado "#IMPLIED" ou "#REQUIRED".
|
|
+ IDDefaultTypeInvalid = O atributo do ID "{0}" deve ter um padr\u00E3o declarado "#IMPLIED" ou "#REQUIRED".
|
|
IDInvalid = O valor do atributo "{0}" do ID de tipo deve ser um nome.
|
|
IDInvalidWithNamespaces = O valor do atributo "{0}" do ID de tipo deve ser um NCName quando os namespaces estiverem ativados.
|
|
IDNotUnique = O valor do atributo "{0}" do ID de tipo deve ser exclusivo no documento.
|
|
@@ -233,7 +233,7 @@
|
|
MSG_CONTENT_INCOMPLETE = O conte\u00FAdo do tipo de elemento "{0}" est\u00E1 incompleto; ele deve corresponder a "{1}".
|
|
MSG_CONTENT_INVALID = O conte\u00FAdo do tipo de elemento "{0}" deve corresponder a "{1}".
|
|
MSG_CONTENT_INVALID_SPECIFIED = O conte\u00FAdo do tipo de elemento "{0}" deve corresponder a "{1}". N\u00E3o s\u00E3o permitidos os filhos do tipo "{2}".
|
|
- MSG_DEFAULTED_ATTRIBUTE_NOT_SPECIFIED = O atributo "{1}" do tipo de elemento "{0}" tem um valor default e deve ser especificado em um documento stand-alone.
|
|
+ MSG_DEFAULTED_ATTRIBUTE_NOT_SPECIFIED = O atributo "{1}" do tipo de elemento "{0}" tem um valor padr\u00E3o e deve ser especificado em um documento stand-alone.
|
|
MSG_DUPLICATE_ATTDEF = O atributo "{1}" j\u00E1 foi declarado para o tipo de elemento "{0}".
|
|
MSG_ELEMENT_ALREADY_DECLARED = O tipo de elemento "{0}" n\u00E3o deve ser declarado mais de uma vez.
|
|
MSG_ELEMENT_NOT_DECLARED = O tipo de elemento "{0}" deve ser declarado.
|
|
@@ -299,4 +299,5 @@
|
|
MaxEntitySizeLimit=JAXP00010003: o tamanho da entidade "{0}" \u00E9 "{1}", o que excede o limite de "{2}" definido por "{3}".
|
|
TotalEntitySizeLimit=JAXP00010004: o tamanho acumulado "{0}" de entidades excedeu o limite de "{1}" definido por "{2}".
|
|
MaxXMLNameLimit=JAXP00010005: o nome "{0}" excedeu o limite de "{1}" definido por "{2}".
|
|
+ MaxElementDepthLimit=JAXP00010006: o elemento "{0}" tem uma profundidade de "{1}" que excede o limite de "{2}" definido por "{3}".
|
|
|
|
--- jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessages_sv.properties Tue Mar 11 13:02:28 2014 -0700
|
|
+++ jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessages_sv.properties Tue Jun 03 14:19:32 2014 -0700
|
|
@@ -7,7 +7,7 @@
|
|
FormatFailed = Ett internt fel intr\u00E4ffade vid formatering av f\u00F6ljande meddelande:\n
|
|
|
|
# Document messages
|
|
- PrematureEOF=F\u00F6r tidigt filslut (EOF).
|
|
+ PrematureEOF=Filen har avslutats f\u00F6r tidigt.
|
|
# 2.1 Well-Formed XML Documents
|
|
RootElementRequired = Rotelementet kr\u00E4vs i ett v\u00E4lformulerat dokument.
|
|
# 2.2 Characters
|
|
@@ -299,4 +299,5 @@
|
|
MaxEntitySizeLimit=JAXP00010003: L\u00E4ngden p\u00E5 enheten "{0}" \u00E4r "{1}" som \u00F6verskriver gr\u00E4nsv\u00E4rdet p\u00E5 "{2}" som anges av "{3}".
|
|
TotalEntitySizeLimit=JAXP00010004: Den ackumulerade storleken "{0}" f\u00F6r enheter \u00F6verskred gr\u00E4nsv\u00E4rdet p\u00E5 "{1}" som anges av "{2}".
|
|
MaxXMLNameLimit=JAXP00010005: Namnet "{0}" \u00F6verskred gr\u00E4nsv\u00E4rdet p\u00E5 "{1}" som anges av "{2}".
|
|
+ MaxElementDepthLimit=JAXP00010006: Elementet "{0}" har djupet "{1}" vilket \u00E4r st\u00F6rre \u00E4n gr\u00E4nsen "{2}" som anges av "{3}".
|
|
|
|
--- jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessages_zh_CN.properties Tue Mar 11 13:02:28 2014 -0700
|
|
+++ jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessages_zh_CN.properties Tue Jun 03 14:19:32 2014 -0700
|
|
@@ -299,4 +299,5 @@
|
|
MaxEntitySizeLimit=JAXP00010003: \u5B9E\u4F53 "{0}" \u7684\u957F\u5EA6\u4E3A "{1}", \u8D85\u8FC7\u4E86 "{3}" \u8BBE\u7F6E\u7684 "{2}" \u9650\u5236\u3002
|
|
TotalEntitySizeLimit=JAXP00010004: \u5B9E\u4F53\u7684\u7D2F\u8BA1\u5927\u5C0F "{0}" \u8D85\u8FC7\u4E86 "{2}" \u8BBE\u7F6E\u7684 "{1}" \u9650\u5236\u3002
|
|
MaxXMLNameLimit=JAXP00010005: \u540D\u79F0 "{0}" \u8D85\u8FC7\u4E86 "{2}" \u8BBE\u7F6E\u7684 "{1}" \u9650\u5236\u3002
|
|
+ MaxElementDepthLimit=JAXP00010006: \u5143\u7D20 "{0}" \u7684\u6DF1\u5EA6 "{1}" \u8D85\u8FC7\u4E86 "{3}" \u8BBE\u7F6E\u7684\u9650\u5236 "{2}"\u3002
|
|
|
|
--- jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessages_zh_TW.properties Tue Mar 11 13:02:28 2014 -0700
|
|
+++ jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessages_zh_TW.properties Tue Jun 03 14:19:32 2014 -0700
|
|
@@ -299,4 +299,5 @@
|
|
MaxEntitySizeLimit=JAXP00010003: \u5BE6\u9AD4 "{0}" \u7684\u9577\u5EA6\u70BA "{1}"\uFF0C\u8D85\u904E "{3}" \u6240\u8A2D\u5B9A\u7684 "{2}" \u9650\u5236\u3002
|
|
TotalEntitySizeLimit=JAXP00010004: \u5BE6\u9AD4\u7684\u7D2F\u7A4D\u5927\u5C0F "{0}" \u8D85\u904E "{2}" \u8A2D\u5B9A\u7684 "{1}" \u9650\u5236\u3002
|
|
MaxXMLNameLimit=JAXP00010005: \u540D\u7A31 "{0}" \u8D85\u904E "{2}" \u8A2D\u5B9A\u7684 "{1}" \u9650\u5236\u3002
|
|
+ MaxElementDepthLimit=JAXP00010006: \u5143\u7D20 "{0}" \u7684\u6DF1\u5EA6\u70BA "{1}"\uFF0C\u8D85\u904E "{3}" \u8A2D\u5B9A\u7684 "{2}" \u9650\u5236\u3002
|
|
|
|
--- jaxp/src/com/sun/org/apache/xerces/internal/utils/XMLLimitAnalyzer.java Tue Mar 11 13:02:28 2014 -0700
|
|
+++ jaxp/src/com/sun/org/apache/xerces/internal/utils/XMLLimitAnalyzer.java Tue Jun 03 14:19:32 2014 -0700
|
|
@@ -132,6 +132,10 @@
|
|
totalValue[index] += value;
|
|
return;
|
|
}
|
|
+ if (index == Limit.MAX_ELEMENT_DEPTH_LIMIT.ordinal()) {
|
|
+ totalValue[index] = value;
|
|
+ return;
|
|
+ }
|
|
|
|
Map<String, Integer> cache;
|
|
if (caches[index] == null) {
|
|
--- jaxp/src/com/sun/org/apache/xerces/internal/utils/XMLSecurityManager.java Tue Mar 11 13:02:28 2014 -0700
|
|
+++ jaxp/src/com/sun/org/apache/xerces/internal/utils/XMLSecurityManager.java Tue Jun 03 14:19:32 2014 -0700
|
|
@@ -66,7 +66,8 @@
|
|
ELEMENT_ATTRIBUTE_LIMIT(Constants.JDK_ELEMENT_ATTRIBUTE_LIMIT, Constants.SP_ELEMENT_ATTRIBUTE_LIMIT, 0, 10000),
|
|
TOTAL_ENTITY_SIZE_LIMIT(Constants.JDK_TOTAL_ENTITY_SIZE_LIMIT, Constants.SP_TOTAL_ENTITY_SIZE_LIMIT, 0, 50000000),
|
|
GENERAL_ENTITY_SIZE_LIMIT(Constants.JDK_GENERAL_ENTITY_SIZE_LIMIT, Constants.SP_GENERAL_ENTITY_SIZE_LIMIT, 0, 0),
|
|
- PARAMETER_ENTITY_SIZE_LIMIT(Constants.JDK_PARAMETER_ENTITY_SIZE_LIMIT, Constants.SP_PARAMETER_ENTITY_SIZE_LIMIT, 0, 1000000);
|
|
+ PARAMETER_ENTITY_SIZE_LIMIT(Constants.JDK_PARAMETER_ENTITY_SIZE_LIMIT, Constants.SP_PARAMETER_ENTITY_SIZE_LIMIT, 0, 1000000),
|
|
+ MAX_ELEMENT_DEPTH_LIMIT(Constants.JDK_MAX_ELEMENT_DEPTH, Constants.SP_MAX_ELEMENT_DEPTH, 0, 0);
|
|
|
|
final String apiProperty;
|
|
final String systemProperty;
|
|
@@ -429,9 +430,10 @@
|
|
return false;
|
|
}
|
|
|
|
- if (index==Limit.ELEMENT_ATTRIBUTE_LIMIT.ordinal() ||
|
|
- index==Limit.ENTITY_EXPANSION_LIMIT.ordinal() ||
|
|
- index==Limit.TOTAL_ENTITY_SIZE_LIMIT.ordinal()) {
|
|
+ if (index == Limit.ELEMENT_ATTRIBUTE_LIMIT.ordinal() ||
|
|
+ index == Limit.ENTITY_EXPANSION_LIMIT.ordinal() ||
|
|
+ index == Limit.TOTAL_ENTITY_SIZE_LIMIT.ordinal() ||
|
|
+ index == Limit.MAX_ELEMENT_DEPTH_LIMIT.ordinal()) {
|
|
return (limitAnalyzer.getTotalValue(index) > values[index]);
|
|
} else {
|
|
return (limitAnalyzer.getValue(index) > values[index]);
|
|
--- jaxws/.hgtags Tue Mar 11 13:02:38 2014 -0700
|
|
+++ jaxws/.hgtags Tue Jun 03 14:19:34 2014 -0700
|
|
@@ -258,6 +258,7 @@
|
|
384ccf4e14cb90c89570e16a5f4ca440a69d6d93 jdk8u5-b02
|
|
e423a4f2ec72ea0e24bea0fa77dd105095bbee67 jdk8u5-b03
|
|
738b966ee0b00d994445d34eb7eb087bd41a5478 jdk8u5-b04
|
|
+3960c6ef7bd1782d6357c510dab393d291164045 jdk8u11-b00
|
|
3960c6ef7bd1782d6357c510dab393d291164045 jdk8u5-b05
|
|
0543f4dddddc67b142b4706b2d403a654809e605 jdk8u5-b06
|
|
0eb7f9f88e93587ace50614385f85afd221f5cb1 jdk8u5-b07
|
|
@@ -266,3 +267,15 @@
|
|
22a840b408eb0242e363700843fba3f4988df749 jdk8u5-b10
|
|
75fd3933daaf5826e7c03bfb318026ac8a4c07ef jdk8u5-b11
|
|
e2454d30b525bcb6ebcc711bd2928fbd29c11143 jdk8u5-b12
|
|
+d2200a87d5ad6a9d06d9df144376ea5511b3916b jdk8u5-b13
|
|
+d2732c66f0f927d7f31dead4cce1a0612b9ff2a1 jdk8u11-b01
|
|
+152cc523baf1fdfe48514e3fe0d8e5a9b3c01ba4 jdk8u11-b02
|
|
+c2c073f04f0566c868fec49b96e5885ad69f065c jdk8u11-b03
|
|
+d1dbc7bc54291d447fce5655e0878b8689ad25b7 jdk8u11-b04
|
|
+9626907d2521220a0214129733088bad35656239 jdk8u11-b05
|
|
+6b71476418c1f6a085fb10460dcfedc5346e69af jdk8u11-b06
|
|
+c29ede8e947c365ce55174eba716050c48461576 jdk8u11-b07
|
|
+ca91f03660789a75710b4a081cd32aab00e80964 jdk8u11-b08
|
|
+6e994ba1e4610b367f292a41a0d2c77091f93ab6 jdk8u11-b09
|
|
+aa3f37b9fbdca195ac9430b8c301db7f33347241 jdk8u11-b10
|
|
+5d161297f3031a82d04953bf60721f31e7c18da1 jdk8u11-b11
|
|
--- jaxws/src/share/jaxws_classes/com/sun/tools/internal/xjc/model/nav/Utils.java Tue Mar 11 13:02:38 2014 -0700
|
|
+++ jaxws/src/share/jaxws_classes/com/sun/tools/internal/xjc/model/nav/Utils.java Tue Jun 03 14:19:34 2014 -0700
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
|
|
+ * Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved.
|
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
|
*
|
|
* This code is free software; you can redistribute it and/or modify it
|
|
@@ -31,6 +31,8 @@
|
|
import java.lang.reflect.InvocationTargetException;
|
|
import java.lang.reflect.Method;
|
|
import java.lang.reflect.Type;
|
|
+import java.security.AccessController;
|
|
+import java.security.PrivilegedAction;
|
|
import java.util.logging.Level;
|
|
import java.util.logging.Logger;
|
|
|
|
@@ -38,22 +40,32 @@
|
|
* Utils class.
|
|
* Has *package private* access to avoid inappropriate usage.
|
|
*/
|
|
-/* package */ final class Utils {
|
|
+final class Utils {
|
|
|
|
private static final Logger LOGGER = Logger.getLogger(Utils.class.getName());
|
|
|
|
/**
|
|
* static ReflectionNavigator field to avoid usage of reflection every time we use it.
|
|
*/
|
|
- /* package */ static final Navigator<Type, Class, Field, Method> REFLECTION_NAVIGATOR;
|
|
+ static final Navigator<Type, Class, Field, Method> REFLECTION_NAVIGATOR;
|
|
|
|
static { // we statically initializing REFLECTION_NAVIGATOR property
|
|
- Class refNav = null;
|
|
try {
|
|
- refNav = Class.forName("com.sun.xml.internal.bind.v2.model.nav.ReflectionNavigator");
|
|
+ Class refNav = Class.forName("com.sun.xml.internal.bind.v2.model.nav.ReflectionNavigator");
|
|
//noinspection unchecked
|
|
- Method getInstance = refNav.getDeclaredMethod("getInstance");
|
|
- getInstance.setAccessible(true);
|
|
+ final Method getInstance = refNav.getDeclaredMethod("getInstance");
|
|
+
|
|
+ // requires accessClassInPackage privilege
|
|
+ AccessController.doPrivileged(
|
|
+ new PrivilegedAction<Object>() {
|
|
+ @Override
|
|
+ public Object run() {
|
|
+ getInstance.setAccessible(true);
|
|
+ return null;
|
|
+ }
|
|
+ }
|
|
+ );
|
|
+
|
|
//noinspection unchecked
|
|
REFLECTION_NAVIGATOR = (Navigator<Type, Class, Field, Method>) getInstance.invoke(null);
|
|
} catch (ClassNotFoundException e) {
|
|
--- jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/api/Utils.java Tue Mar 11 13:02:38 2014 -0700
|
|
+++ jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/api/Utils.java Tue Jun 03 14:19:34 2014 -0700
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
|
|
+ * Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved.
|
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
|
*
|
|
* This code is free software; you can redistribute it and/or modify it
|
|
@@ -31,6 +31,8 @@
|
|
import java.lang.reflect.InvocationTargetException;
|
|
import java.lang.reflect.Method;
|
|
import java.lang.reflect.Type;
|
|
+import java.security.AccessController;
|
|
+import java.security.PrivilegedAction;
|
|
import java.util.logging.Level;
|
|
import java.util.logging.Logger;
|
|
|
|
@@ -38,22 +40,32 @@
|
|
* Utils class.
|
|
* Has *package private* access to avoid inappropriate usage.
|
|
*/
|
|
-/* package */ final class Utils {
|
|
+final class Utils {
|
|
|
|
private static final Logger LOGGER = Logger.getLogger(Utils.class.getName());
|
|
|
|
/**
|
|
* static ReflectionNavigator field to avoid usage of reflection every time we use it.
|
|
*/
|
|
- /* package */ static final Navigator<Type, Class, Field, Method> REFLECTION_NAVIGATOR;
|
|
+ static final Navigator<Type, Class, Field, Method> REFLECTION_NAVIGATOR;
|
|
|
|
static { // we statically initializing REFLECTION_NAVIGATOR property
|
|
- Class refNav = null;
|
|
try {
|
|
- refNav = Class.forName("com.sun.xml.internal.bind.v2.model.nav.ReflectionNavigator");
|
|
+ Class refNav = Class.forName("com.sun.xml.internal.bind.v2.model.nav.ReflectionNavigator");
|
|
//noinspection unchecked
|
|
- Method getInstance = refNav.getDeclaredMethod("getInstance");
|
|
- getInstance.setAccessible(true);
|
|
+ final Method getInstance = refNav.getDeclaredMethod("getInstance");
|
|
+
|
|
+ // requires accessClassInPackage privilege
|
|
+ AccessController.doPrivileged(
|
|
+ new PrivilegedAction<Object>() {
|
|
+ @Override
|
|
+ public Object run() {
|
|
+ getInstance.setAccessible(true);
|
|
+ return null;
|
|
+ }
|
|
+ }
|
|
+ );
|
|
+
|
|
//noinspection unchecked
|
|
REFLECTION_NAVIGATOR = (Navigator<Type, Class, Field, Method>) getInstance.invoke(null);
|
|
} catch (ClassNotFoundException e) {
|
|
--- jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/model/impl/Utils.java Tue Mar 11 13:02:38 2014 -0700
|
|
+++ jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/model/impl/Utils.java Tue Jun 03 14:19:34 2014 -0700
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
|
|
+ * Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved.
|
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
|
*
|
|
* This code is free software; you can redistribute it and/or modify it
|
|
@@ -31,6 +31,8 @@
|
|
import java.lang.reflect.InvocationTargetException;
|
|
import java.lang.reflect.Method;
|
|
import java.lang.reflect.Type;
|
|
+import java.security.AccessController;
|
|
+import java.security.PrivilegedAction;
|
|
import java.util.logging.Level;
|
|
import java.util.logging.Logger;
|
|
|
|
@@ -38,22 +40,32 @@
|
|
* Utils class.
|
|
* Has *package private* access to avoid inappropriate usage.
|
|
*/
|
|
-/* package */ final class Utils {
|
|
+final class Utils {
|
|
|
|
private static final Logger LOGGER = Logger.getLogger(Utils.class.getName());
|
|
|
|
/**
|
|
* static ReflectionNavigator field to avoid usage of reflection every time we use it.
|
|
*/
|
|
- /* package */ static final Navigator<Type, Class, Field, Method> REFLECTION_NAVIGATOR;
|
|
+ static final Navigator<Type, Class, Field, Method> REFLECTION_NAVIGATOR;
|
|
|
|
static { // we statically initializing REFLECTION_NAVIGATOR property
|
|
- Class refNav = null;
|
|
try {
|
|
- refNav = Class.forName("com.sun.xml.internal.bind.v2.model.nav.ReflectionNavigator");
|
|
+ Class refNav = Class.forName("com.sun.xml.internal.bind.v2.model.nav.ReflectionNavigator");
|
|
//noinspection unchecked
|
|
- Method getInstance = refNav.getDeclaredMethod("getInstance");
|
|
- getInstance.setAccessible(true);
|
|
+ final Method getInstance = refNav.getDeclaredMethod("getInstance");
|
|
+
|
|
+ // requires accessClassInPackage privilege
|
|
+ AccessController.doPrivileged(
|
|
+ new PrivilegedAction<Object>() {
|
|
+ @Override
|
|
+ public Object run() {
|
|
+ getInstance.setAccessible(true);
|
|
+ return null;
|
|
+ }
|
|
+ }
|
|
+ );
|
|
+
|
|
//noinspection unchecked
|
|
REFLECTION_NAVIGATOR = (Navigator<Type, Class, Field, Method>) getInstance.invoke(null);
|
|
} catch (ClassNotFoundException e) {
|
|
--- jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/Utils.java Tue Mar 11 13:02:38 2014 -0700
|
|
+++ jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/Utils.java Tue Jun 03 14:19:34 2014 -0700
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
|
|
+ * Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved.
|
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
|
*
|
|
* This code is free software; you can redistribute it and/or modify it
|
|
@@ -31,6 +31,8 @@
|
|
import java.lang.reflect.InvocationTargetException;
|
|
import java.lang.reflect.Method;
|
|
import java.lang.reflect.Type;
|
|
+import java.security.AccessController;
|
|
+import java.security.PrivilegedAction;
|
|
import java.util.logging.Level;
|
|
import java.util.logging.Logger;
|
|
|
|
@@ -38,22 +40,32 @@
|
|
* Utils class.
|
|
* Has *package private* access to avoid inappropriate usage.
|
|
*/
|
|
-/* package */ final class Utils {
|
|
+final class Utils {
|
|
|
|
private static final Logger LOGGER = Logger.getLogger(Utils.class.getName());
|
|
|
|
/**
|
|
* static ReflectionNavigator field to avoid usage of reflection every time we use it.
|
|
*/
|
|
- /* package */ static final Navigator<Type, Class, Field, Method> REFLECTION_NAVIGATOR;
|
|
+ static final Navigator<Type, Class, Field, Method> REFLECTION_NAVIGATOR;
|
|
|
|
static { // we statically initializing REFLECTION_NAVIGATOR property
|
|
- Class refNav = null;
|
|
try {
|
|
- refNav = Class.forName("com.sun.xml.internal.bind.v2.model.nav.ReflectionNavigator");
|
|
+ Class refNav = Class.forName("com.sun.xml.internal.bind.v2.model.nav.ReflectionNavigator");
|
|
//noinspection unchecked
|
|
- Method getInstance = refNav.getDeclaredMethod("getInstance");
|
|
- getInstance.setAccessible(true);
|
|
+ final Method getInstance = refNav.getDeclaredMethod("getInstance");
|
|
+
|
|
+ // requires accessClassInPackage privilege
|
|
+ AccessController.doPrivileged(
|
|
+ new PrivilegedAction<Object>() {
|
|
+ @Override
|
|
+ public Object run() {
|
|
+ getInstance.setAccessible(true);
|
|
+ return null;
|
|
+ }
|
|
+ }
|
|
+ );
|
|
+
|
|
//noinspection unchecked
|
|
REFLECTION_NAVIGATOR = (Navigator<Type, Class, Field, Method>) getInstance.invoke(null);
|
|
} catch (ClassNotFoundException e) {
|
|
--- jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/property/Utils.java Tue Mar 11 13:02:38 2014 -0700
|
|
+++ jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/property/Utils.java Tue Jun 03 14:19:34 2014 -0700
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
|
|
+ * Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved.
|
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
|
*
|
|
* This code is free software; you can redistribute it and/or modify it
|
|
@@ -31,6 +31,8 @@
|
|
import java.lang.reflect.InvocationTargetException;
|
|
import java.lang.reflect.Method;
|
|
import java.lang.reflect.Type;
|
|
+import java.security.AccessController;
|
|
+import java.security.PrivilegedAction;
|
|
import java.util.logging.Level;
|
|
import java.util.logging.Logger;
|
|
|
|
@@ -38,22 +40,32 @@
|
|
* Utils class.
|
|
* Has *package private* access to avoid inappropriate usage.
|
|
*/
|
|
-/* package */ final class Utils {
|
|
+final class Utils {
|
|
|
|
private static final Logger LOGGER = Logger.getLogger(Utils.class.getName());
|
|
|
|
/**
|
|
* static ReflectionNavigator field to avoid usage of reflection every time we use it.
|
|
*/
|
|
- /* package */ static final Navigator<Type, Class, Field, Method> REFLECTION_NAVIGATOR;
|
|
+ static final Navigator<Type, Class, Field, Method> REFLECTION_NAVIGATOR;
|
|
|
|
static { // we statically initializing REFLECTION_NAVIGATOR property
|
|
- Class refNav = null;
|
|
try {
|
|
- refNav = Class.forName("com.sun.xml.internal.bind.v2.model.nav.ReflectionNavigator");
|
|
+ Class refNav = Class.forName("com.sun.xml.internal.bind.v2.model.nav.ReflectionNavigator");
|
|
//noinspection unchecked
|
|
- Method getInstance = refNav.getDeclaredMethod("getInstance");
|
|
- getInstance.setAccessible(true);
|
|
+ final Method getInstance = refNav.getDeclaredMethod("getInstance");
|
|
+
|
|
+ // requires accessClassInPackage privilege
|
|
+ AccessController.doPrivileged(
|
|
+ new PrivilegedAction<Object>() {
|
|
+ @Override
|
|
+ public Object run() {
|
|
+ getInstance.setAccessible(true);
|
|
+ return null;
|
|
+ }
|
|
+ }
|
|
+ );
|
|
+
|
|
//noinspection unchecked
|
|
REFLECTION_NAVIGATOR = (Navigator<Type, Class, Field, Method>) getInstance.invoke(null);
|
|
} catch (ClassNotFoundException e) {
|
|
--- jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/reflect/Utils.java Tue Mar 11 13:02:38 2014 -0700
|
|
+++ jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/reflect/Utils.java Tue Jun 03 14:19:34 2014 -0700
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
|
|
+ * Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved.
|
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
|
*
|
|
* This code is free software; you can redistribute it and/or modify it
|
|
@@ -31,6 +31,8 @@
|
|
import java.lang.reflect.InvocationTargetException;
|
|
import java.lang.reflect.Method;
|
|
import java.lang.reflect.Type;
|
|
+import java.security.AccessController;
|
|
+import java.security.PrivilegedAction;
|
|
import java.util.logging.Level;
|
|
import java.util.logging.Logger;
|
|
|
|
@@ -38,22 +40,32 @@
|
|
* Utils class.
|
|
* Has *package private* access to avoid inappropriate usage.
|
|
*/
|
|
-/* package */ final class Utils {
|
|
+final class Utils {
|
|
|
|
private static final Logger LOGGER = Logger.getLogger(Utils.class.getName());
|
|
|
|
/**
|
|
* static ReflectionNavigator field to avoid usage of reflection every time we use it.
|
|
*/
|
|
- /* package */ static final Navigator<Type, Class, Field, Method> REFLECTION_NAVIGATOR;
|
|
+ static final Navigator<Type, Class, Field, Method> REFLECTION_NAVIGATOR;
|
|
|
|
static { // we statically initializing REFLECTION_NAVIGATOR property
|
|
- Class refNav = null;
|
|
try {
|
|
- refNav = Class.forName("com.sun.xml.internal.bind.v2.model.nav.ReflectionNavigator");
|
|
+ Class refNav = Class.forName("com.sun.xml.internal.bind.v2.model.nav.ReflectionNavigator");
|
|
//noinspection unchecked
|
|
- Method getInstance = refNav.getDeclaredMethod("getInstance");
|
|
- getInstance.setAccessible(true);
|
|
+ final Method getInstance = refNav.getDeclaredMethod("getInstance");
|
|
+
|
|
+ // requires accessClassInPackage privilege
|
|
+ AccessController.doPrivileged(
|
|
+ new PrivilegedAction<Object>() {
|
|
+ @Override
|
|
+ public Object run() {
|
|
+ getInstance.setAccessible(true);
|
|
+ return null;
|
|
+ }
|
|
+ }
|
|
+ );
|
|
+
|
|
//noinspection unchecked
|
|
REFLECTION_NAVIGATOR = (Navigator<Type, Class, Field, Method>) getInstance.invoke(null);
|
|
} catch (ClassNotFoundException e) {
|
|
--- jaxws/src/share/jaxws_classes/com/sun/xml/internal/ws/model/Utils.java Tue Mar 11 13:02:38 2014 -0700
|
|
+++ jaxws/src/share/jaxws_classes/com/sun/xml/internal/ws/model/Utils.java Tue Jun 03 14:19:34 2014 -0700
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
|
|
+ * Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved.
|
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
|
*
|
|
* This code is free software; you can redistribute it and/or modify it
|
|
@@ -31,6 +31,8 @@
|
|
import java.lang.reflect.InvocationTargetException;
|
|
import java.lang.reflect.Method;
|
|
import java.lang.reflect.Type;
|
|
+import java.security.AccessController;
|
|
+import java.security.PrivilegedAction;
|
|
import java.util.logging.Level;
|
|
import java.util.logging.Logger;
|
|
|
|
@@ -41,22 +43,32 @@
|
|
*
|
|
* Has *package private* access to avoid inappropriate usage.
|
|
*/
|
|
-/* package */ final class Utils {
|
|
+final class Utils {
|
|
|
|
private static final Logger LOGGER = Logger.getLogger(Utils.class.getName());
|
|
|
|
/**
|
|
* static ReflectionNavigator field to avoid usage of reflection every time we use it.
|
|
*/
|
|
- /* package */ static final Navigator<Type, Class, Field, Method> REFLECTION_NAVIGATOR;
|
|
+ static final Navigator<Type, Class, Field, Method> REFLECTION_NAVIGATOR;
|
|
|
|
static { // we statically initializing REFLECTION_NAVIGATOR property
|
|
- Class refNav = null;
|
|
try {
|
|
- refNav = Class.forName("com.sun.xml.internal.bind.v2.model.nav.ReflectionNavigator");
|
|
+ Class refNav = Class.forName("com.sun.xml.internal.bind.v2.model.nav.ReflectionNavigator");
|
|
//noinspection unchecked
|
|
- Method getInstance = refNav.getDeclaredMethod("getInstance");
|
|
- getInstance.setAccessible(true);
|
|
+ final Method getInstance = refNav.getDeclaredMethod("getInstance");
|
|
+
|
|
+ // requires accessClassInPackage privilege
|
|
+ AccessController.doPrivileged(
|
|
+ new PrivilegedAction<Object>() {
|
|
+ @Override
|
|
+ public Object run() {
|
|
+ getInstance.setAccessible(true);
|
|
+ return null;
|
|
+ }
|
|
+ }
|
|
+ );
|
|
+
|
|
//noinspection unchecked
|
|
REFLECTION_NAVIGATOR = (Navigator<Type, Class, Field, Method>) getInstance.invoke(null);
|
|
} catch (ClassNotFoundException e) {
|
|
--- jaxws/src/share/jaxws_classes/com/sun/xml/internal/ws/spi/db/Utils.java Tue Mar 11 13:02:38 2014 -0700
|
|
+++ jaxws/src/share/jaxws_classes/com/sun/xml/internal/ws/spi/db/Utils.java Tue Jun 03 14:19:34 2014 -0700
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
|
|
+ * Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved.
|
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
|
*
|
|
* This code is free software; you can redistribute it and/or modify it
|
|
@@ -31,6 +31,8 @@
|
|
import java.lang.reflect.InvocationTargetException;
|
|
import java.lang.reflect.Method;
|
|
import java.lang.reflect.Type;
|
|
+import java.security.AccessController;
|
|
+import java.security.PrivilegedAction;
|
|
import java.util.logging.Level;
|
|
import java.util.logging.Logger;
|
|
|
|
@@ -41,22 +43,32 @@
|
|
*
|
|
* Has *package private* access to avoid inappropriate usage.
|
|
*/
|
|
-/* package */ final class Utils {
|
|
+final class Utils {
|
|
|
|
private static final Logger LOGGER = Logger.getLogger(Utils.class.getName());
|
|
|
|
/**
|
|
* static ReflectionNavigator field to avoid usage of reflection every time we use it.
|
|
*/
|
|
- /* package */ static final Navigator<Type, Class, Field, Method> REFLECTION_NAVIGATOR;
|
|
+ static final Navigator<Type, Class, Field, Method> REFLECTION_NAVIGATOR;
|
|
|
|
static { // we statically initializing REFLECTION_NAVIGATOR property
|
|
- Class refNav = null;
|
|
try {
|
|
- refNav = Class.forName("com.sun.xml.internal.bind.v2.model.nav.ReflectionNavigator");
|
|
+ Class refNav = Class.forName("com.sun.xml.internal.bind.v2.model.nav.ReflectionNavigator");
|
|
//noinspection unchecked
|
|
- Method getInstance = refNav.getDeclaredMethod("getInstance");
|
|
- getInstance.setAccessible(true);
|
|
+ final Method getInstance = refNav.getDeclaredMethod("getInstance");
|
|
+
|
|
+ // requires accessClassInPackage privilege
|
|
+ AccessController.doPrivileged(
|
|
+ new PrivilegedAction<Object>() {
|
|
+ @Override
|
|
+ public Object run() {
|
|
+ getInstance.setAccessible(true);
|
|
+ return null;
|
|
+ }
|
|
+ }
|
|
+ );
|
|
+
|
|
//noinspection unchecked
|
|
REFLECTION_NAVIGATOR = (Navigator<Type, Class, Field, Method>) getInstance.invoke(null);
|
|
} catch (ClassNotFoundException e) {
|
|
--- jdk/.hgtags Wed Mar 12 11:58:14 2014 +0000
|
|
+++ jdk/.hgtags Tue Jun 03 14:19:36 2014 -0700
|
|
@@ -258,6 +258,7 @@
|
|
343f4f8ba0982b3516e33c859b01634d919243c4 jdk8u5-b02
|
|
c35571198602a5856280d5c7c10bda4e7b769104 jdk8u5-b03
|
|
55e6175fb6904d771bfaec4ada4f5e20b54f4791 jdk8u5-b04
|
|
+911d590f34aaa7f7b9ef300d0c0a019e70a62d1d jdk8u11-b00
|
|
911d590f34aaa7f7b9ef300d0c0a019e70a62d1d jdk8u5-b05
|
|
94fe0ed14bfcca335ff72abd20cf871dab100e79 jdk8u5-b06
|
|
469c2c1a4885ddedc114e17902bb2f7f7326a4b7 jdk8u5-b07
|
|
@@ -266,3 +267,15 @@
|
|
7f905cc47d4951628d956c436c8aa95aeb8bd014 jdk8u5-b10
|
|
f4f3b7ccd2801a0a87dd4677332f5b93191d08f2 jdk8u5-b11
|
|
9ff7f7909e122bb54f7df80efd0fc7a03ce7efff jdk8u5-b12
|
|
+c6836440c427800a9f48168af29759b79857781d jdk8u5-b13
|
|
+5eff6b1060758eae51125156a6f9c7725905e64e jdk8u11-b01
|
|
+cb1b9eca5890807476935051b8a5f13f4d3e5c63 jdk8u11-b02
|
|
+5efce41be1c8637b399980ea227f19e0f98341bc jdk8u11-b03
|
|
+4af24a3f52aeb07b51d3860049b0d1504e400feb jdk8u11-b04
|
|
+726370d73baebc513d0d83df71bb7629703ef7d0 jdk8u11-b05
|
|
+dc8eb8ba138a53df4cc80f6379ed25ef20644667 jdk8u11-b06
|
|
+69ea8bc3ce29eda152d9c2ebea91a9ce233bde9e jdk8u11-b07
|
|
+bec9dcd4c06358154cce431c4b70da56530827de jdk8u11-b08
|
|
+801e730c85eb822ac3b00466b32d42e089cb7233 jdk8u11-b09
|
|
+105753f0465e534e3664d0935016f5a0d061829d jdk8u11-b10
|
|
+bd5f7651116e2634c09adf073609811c60a4d5e7 jdk8u11-b11
|
|
--- jdk/make/data/tzdata/VERSION Wed Mar 12 11:58:14 2014 +0000
|
|
+++ jdk/make/data/tzdata/VERSION Tue Jun 03 14:19:36 2014 -0700
|
|
@@ -21,4 +21,4 @@
|
|
# or visit www.oracle.com if you need additional information or have any
|
|
# questions.
|
|
#
|
|
-tzdata2013i
|
|
+tzdata2014c
|
|
--- jdk/make/data/tzdata/africa Wed Mar 12 11:58:14 2014 +0000
|
|
+++ jdk/make/data/tzdata/africa Tue Jun 03 14:19:36 2014 -0700
|
|
@@ -358,11 +358,54 @@
|
|
# http://www.worldtimezone.com/dst_news/dst_news_egypt02.html
|
|
# </a>
|
|
|
|
+# From Ahmad El-Dardiry (2014-05-07):
|
|
+# Egypt is to change back to Daylight system on May 15
|
|
+# http://english.ahram.org.eg/NewsContent/1/64/100735/Egypt/Politics-/Egypts-government-to-reapply-daylight-saving-time-.aspx
|
|
+
|
|
+# From Gunther Vermier (2015-05-13):
|
|
+# our Egypt office confirms that the change will be at 15 May "midnight" (24:00)
|
|
+
|
|
+# From Paul Eggert (2014-05-13):
|
|
+# Sarah El Deeb and Lee Keath of AP report that the Egyptian government says
|
|
+# the change is because of blackouts in Cairo, even though Ahram Online (cited
|
|
+# above) says DST had no affect on electricity consumption. The AP story says
|
|
+# DST will not be observed during Ramadan. There is no information about when
|
|
+# DST will end. See:
|
|
+# http://abcnews.go.com/International/wireStory/el-sissi-pushes-egyptians-line-23614833
|
|
+#
|
|
+# For now, guess that later transitions will use 2010's rules, and that
|
|
+# Egypt will agree with Morocco (see below) about the date Ramadan starts and
|
|
+# ends, though (unlike Morocco) it will switch at 00:00 standard time. In
|
|
+# Egypt the spring-forward transitions are removed for 2020-2022, when the
|
|
+# guessed spring-forward date falls during the estimated Ramadan, and all
|
|
+# transitions removed for 2023-2038, where the estimated Ramadan falls entirely
|
|
+# outside the guessed daylight-saving time. Ramadan intrudes on the guessed
|
|
+# DST starting in 2039, but that's beyond our somewhat-arbitrary cutoff.
|
|
+
|
|
Rule Egypt 2008 only - Aug lastThu 23:00s 0 -
|
|
Rule Egypt 2009 only - Aug 20 23:00s 0 -
|
|
Rule Egypt 2010 only - Aug 11 0:00 0 -
|
|
Rule Egypt 2010 only - Sep 10 0:00 1:00 S
|
|
Rule Egypt 2010 only - Sep lastThu 23:00s 0 -
|
|
+Rule Egypt 2014 only - May 15 24:00 1:00 S
|
|
+Rule Egypt 2014 only - Jun 29 0:00s 0 -
|
|
+Rule Egypt 2014 only - Jul 29 0:00s 1:00 S
|
|
+Rule Egypt 2014 max - Sep lastThu 23:00s 0 -
|
|
+Rule Egypt 2015 2019 - Apr lastFri 0:00s 1:00 S
|
|
+Rule Egypt 2015 only - Jun 18 0:00s 0 -
|
|
+Rule Egypt 2015 only - Jul 18 0:00s 1:00 S
|
|
+Rule Egypt 2016 only - Jun 7 0:00s 0 -
|
|
+Rule Egypt 2016 only - Jul 7 0:00s 1:00 S
|
|
+Rule Egypt 2017 only - May 27 0:00s 0 -
|
|
+Rule Egypt 2017 only - Jun 26 0:00s 1:00 S
|
|
+Rule Egypt 2018 only - May 16 0:00s 0 -
|
|
+Rule Egypt 2018 only - Jun 15 0:00s 1:00 S
|
|
+Rule Egypt 2019 only - May 6 0:00s 0 -
|
|
+Rule Egypt 2019 only - Jun 5 0:00s 1:00 S
|
|
+Rule Egypt 2020 only - May 24 0:00s 1:00 S
|
|
+Rule Egypt 2021 only - May 13 0:00s 1:00 S
|
|
+Rule Egypt 2022 only - May 3 0:00s 1:00 S
|
|
+Rule Egypt 2023 max - Apr lastFri 0:00s 1:00 S
|
|
|
|
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
|
Zone Africa/Cairo 2:05:09 - LMT 1900 Oct
|
|
@@ -891,7 +934,10 @@
|
|
# Another source (specifying the time for start and end in the decree):
|
|
# http://www.lemag.ma/Heure-d-ete-au-Maroc-jusqu-au-27-octobre_a75620.html
|
|
|
|
-# From Paul Eggert (2013-10-03):
|
|
+# From Sebastien Willemijns (2014-03-18):
|
|
+# http://www.afriquinfos.com/articles/2014/3/18/maroc-heure-dete-avancez-tous-horloges-247891.asp
|
|
+
|
|
+# From Paul Eggert (2014-03-19):
|
|
# To estimate what the Moroccan government will do in future years,
|
|
# transition dates for 2014 through 2038 were determined by running
|
|
# the following program under GNU Emacs 24.3:
|
|
--- jdk/make/data/tzdata/antarctica Wed Mar 12 11:58:14 2014 +0000
|
|
+++ jdk/make/data/tzdata/antarctica Tue Jun 03 14:19:36 2014 -0700
|
|
@@ -253,24 +253,41 @@
|
|
# year-round base
|
|
# Scott Base, Ross Island, since 1957-01.
|
|
# See Pacific/Auckland.
|
|
-#
|
|
-# These rules for New Zealand are stolen from the 'australasia' file.
|
|
-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
|
-Rule NZAQ 1974 only - Nov 3 2:00s 1:00 D
|
|
-Rule NZAQ 1975 1988 - Oct lastSun 2:00s 1:00 D
|
|
-Rule NZAQ 1989 only - Oct 8 2:00s 1:00 D
|
|
-Rule NZAQ 1990 2006 - Oct Sun>=1 2:00s 1:00 D
|
|
-Rule NZAQ 1975 only - Feb 23 2:00s 0 S
|
|
-Rule NZAQ 1976 1989 - Mar Sun>=1 2:00s 0 S
|
|
-Rule NZAQ 1990 2007 - Mar Sun>=15 2:00s 0 S
|
|
-Rule NZAQ 2007 max - Sep lastSun 2:00s 1:00 D
|
|
-Rule NZAQ 2008 max - Apr Sun>=1 2:00s 0 S
|
|
|
|
# Norway - territories
|
|
# Bouvet (never inhabited)
|
|
#
|
|
# claims
|
|
# Peter I Island (never inhabited)
|
|
+#
|
|
+# year-round base
|
|
+# Troll, Queen Maud Land, -720041+0023206, since 2005-02-12
|
|
+#
|
|
+# From Paul-Inge Flakstad (2014-03-10):
|
|
+# I recently had a long dialog about this with the developer of timegenie.com.
|
|
+# In the absence of specific dates, he decided to choose some likely ones:
|
|
+# GMT +1 - From March 1 to the last Sunday in March
|
|
+# GMT +2 - From the last Sunday in March until the last Sunday in October
|
|
+# GMT +1 - From the last Sunday in October until November 7
|
|
+# GMT +0 - From November 7 until March 1
|
|
+# The dates for switching to and from UTC+0 will probably not be absolutely
|
|
+# correct, but they should be quite close to the actual dates.
|
|
+#
|
|
+# From Paul Eggert (2014-03-21):
|
|
+# The CET-switching Troll rules require zic from tzcode 2014b or later, so as
|
|
+# suggested by Bengt-Inge Larsson comment them out for now, and approximate
|
|
+# with only UTC and CEST. Uncomment them when 2014b is more prevalent.
|
|
+#
|
|
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
|
+#Rule Troll 2005 max - Mar 1 1:00u 1:00 CET
|
|
+Rule Troll 2005 max - Mar lastSun 1:00u 2:00 CEST
|
|
+#Rule Troll 2005 max - Oct lastSun 1:00u 1:00 CET
|
|
+#Rule Troll 2004 max - Nov 7 1:00u 0:00 UTC
|
|
+# Remove the following line when uncommenting the above '#Rule' lines.
|
|
+Rule Troll 2004 max - Oct lastSun 1:00u 0:00 UTC
|
|
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
|
+Zone Antarctica/Troll 0 - zzz 2005 Feb 12
|
|
+ 0:00 Troll %s
|
|
|
|
# Poland - year-round base
|
|
# Arctowski, King George Island, -620945-0582745, since 1977
|
|
--- jdk/make/data/tzdata/asia Wed Mar 12 11:58:14 2014 +0000
|
|
+++ jdk/make/data/tzdata/asia Tue Jun 03 14:19:36 2014 -0700
|
|
@@ -1113,8 +1113,13 @@
|
|
Rule Zion 1986 only - Sep 7 0:00 0 S
|
|
Rule Zion 1987 only - Apr 15 0:00 1:00 D
|
|
Rule Zion 1987 only - Sep 13 0:00 0 S
|
|
-Rule Zion 1988 only - Apr 9 0:00 1:00 D
|
|
-Rule Zion 1988 only - Sep 3 0:00 0 S
|
|
+
|
|
+# From Avigdor Finkelstein (2014-03-05):
|
|
+# I check the Parliament (Knesset) records and there it's stated that the
|
|
+# [1988] transition should take place on Saturday night, when the Sabbath
|
|
+# ends and changes to Sunday.
|
|
+Rule Zion 1988 only - Apr 10 0:00 1:00 D
|
|
+Rule Zion 1988 only - Sep 4 0:00 0 S
|
|
|
|
# From Ephraim Silverberg
|
|
# (1997-03-04, 1998-03-16, 1998-12-28, 2000-01-17, 2000-07-25, 2004-12-22,
|
|
@@ -1365,22 +1370,6 @@
|
|
# "Jordan will switch to winter time on Friday, October 27".
|
|
#
|
|
|
|
-# From Phil Pizzey (2009-04-02):
|
|
-# ...I think I may have spotted an error in the timezone data for
|
|
-# Jordan.
|
|
-# The current (2009d) asia file shows Jordan going to daylight
|
|
-# saving
|
|
-# time on the last Thursday in March.
|
|
-#
|
|
-# Rule Jordan 2000 max - Mar lastThu 0:00s 1:00 S
|
|
-#
|
|
-# However timeanddate.com, which I usually find reliable, shows Jordan
|
|
-# going to daylight saving time on the last Friday in March since 2002.
|
|
-# Please see
|
|
-# <a href="http://www.timeanddate.com/worldclock/timezone.html?n=11">
|
|
-# http://www.timeanddate.com/worldclock/timezone.html?n=11
|
|
-# </a>
|
|
-
|
|
# From Steffen Thorsen (2009-04-02):
|
|
# This single one might be good enough, (2009-03-24, Arabic):
|
|
# <a href="http://petra.gov.jo/Artical.aspx?Lng=2&Section=8&Artical=95279">
|
|
--- jdk/make/data/tzdata/australasia Wed Mar 12 11:58:14 2014 +0000
|
|
+++ jdk/make/data/tzdata/australasia Tue Jun 03 14:19:36 2014 -0700
|
|
@@ -377,16 +377,18 @@
|
|
# http://www.fiji.gov.fj/index.php?option=com_content&view=article&id=6702&catid=71&Itemid=155
|
|
|
|
# From the Fijian Government Media Center (2013-08-30) via David Wheeler:
|
|
-# Fiji will start daylight savings on Sunday 27th October, 2013 and end at 3am
|
|
-# on Sunday 19th January, 2014.... move clocks forward by one hour from 2am
|
|
+# Fiji will start daylight savings on Sunday 27th October, 2013 ...
|
|
+# move clocks forward by one hour from 2am
|
|
# http://www.fiji.gov.fj/Media-Center/Press-Releases/DAYLIGHT-SAVING-STARTS-ON-SUNDAY,-27th-OCTOBER-201.aspx
|
|
-#
|
|
-# From Paul Eggert (2013-09-09):
|
|
+
|
|
+# From Steffen Thorsen (2013-01-10):
|
|
+# Fiji will end DST on 2014-01-19 02:00:
|
|
+# http://www.fiji.gov.fj/Media-Center/Press-Releases/DAYLIGHT-SAVINGS-TO-END-THIS-MONTH-%281%29.aspx
|
|
+
|
|
+# From Paul Eggert (2014-01-10):
|
|
# For now, guess that Fiji springs forward the Sunday before the fourth
|
|
-# Monday in October. This matches both recent practice and
|
|
-# timeanddate.com's current spring-forward prediction.
|
|
-# For the January 2014 transition we guessed right while timeanddate.com
|
|
-# guessed wrong, so leave the fall-back prediction alone.
|
|
+# Monday in October, and springs back the penultimate Sunday in January.
|
|
+# This is ad hoc, but matches recent practice.
|
|
|
|
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
|
Rule Fiji 1998 1999 - Nov Sun>=1 2:00 1:00 S
|
|
@@ -395,7 +397,8 @@
|
|
Rule Fiji 2010 only - Mar lastSun 3:00 0 -
|
|
Rule Fiji 2010 max - Oct Sun>=21 2:00 1:00 S
|
|
Rule Fiji 2011 only - Mar Sun>=1 3:00 0 -
|
|
-Rule Fiji 2012 max - Jan Sun>=18 3:00 0 -
|
|
+Rule Fiji 2012 2013 - Jan Sun>=18 3:00 0 -
|
|
+Rule Fiji 2014 max - Jan Sun>=18 2:00 0 -
|
|
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
|
Zone Pacific/Fiji 11:55:44 - LMT 1915 Oct 26 # Suva
|
|
12:00 Fiji FJ%sT # Fiji Time
|
|
@@ -783,14 +786,29 @@
|
|
|
|
# Johnston
|
|
#
|
|
-# From Paul Eggert (2013-09-03):
|
|
+# From Paul Eggert (2014-03-11):
|
|
+# Sometimes Johnston kept Hawaii time, and sometimes it was an hour behind.
|
|
+# Details are uncertain. We have no data for Johnston after 1970, so
|
|
+# treat it like Hawaii for now.
|
|
+#
|
|
# In his memoirs of June 6th to October 4, 1945
|
|
# <http://www.315bw.org/Herb_Bach.htm> (2005), Herbert C. Bach writes,
|
|
# "We started our letdown to Kwajalein Atoll and landed there at 5:00 AM
|
|
# Johnston time, 1:30 AM Kwajalein time." This was in June 1945, and
|
|
# confirms that Johnston kept the same time as Honolulu in summer 1945.
|
|
-# We have no better information, so for now, assume this has been true
|
|
-# indefinitely into the past.
|
|
+#
|
|
+# From Lyle McElhaney (2014-03-11):
|
|
+# [W]hen JI was being used for that [atomic bomb] testing, the time being used
|
|
+# was not Hawaiian time but rather the same time being used on the ships,
|
|
+# which had a GMT offset of -11 hours. This apparently applied to at least the
|
|
+# time from Operation Newsreel (Hardtack I/Teak shot, 1958-08-01) to the last
|
|
+# Operation Fishbowl shot (Tightrope, 1962-11-04).... [See] Herman Hoerlin,
|
|
+# "The United States High-Altitude Test Experience: A Review Emphasizing the
|
|
+# Impact on the Environment", Los Alamos LA-6405, Oct 1976
|
|
+# <http://www.fas.org/sgp/othergov/doe/lanl/docs1/00322994.pdf>.
|
|
+# See the table on page 4 where he lists GMT and local times for the tests; a
|
|
+# footnote for the JI tests reads that local time is "JI time = Hawaii Time
|
|
+# Minus One Hour".
|
|
#
|
|
# See 'northamerica' for Pacific/Johnston.
|
|
|
|
--- jdk/make/data/tzdata/europe Wed Mar 12 11:58:14 2014 +0000
|
|
+++ jdk/make/data/tzdata/europe Tue Jun 03 14:19:36 2014 -0700
|
|
@@ -2768,14 +2768,18 @@
|
|
# According to the articles linked below, Turkey will change into summer
|
|
# time zone (GMT+3) on March 28, 2011 at 3:00 a.m. instead of March 27.
|
|
# This change is due to a nationwide exam on 27th.
|
|
-#
|
|
-# <a href="http://www.worldbulletin.net/?aType=haber&ArticleID=70872">
|
|
# http://www.worldbulletin.net/?aType=haber&ArticleID=70872
|
|
-# </a>
|
|
# Turkish:
|
|
-# <a href="http://www.hurriyet.com.tr/ekonomi/17230464.asp?gid=373">
|
|
# http://www.hurriyet.com.tr/ekonomi/17230464.asp?gid=373
|
|
-# </a>
|
|
+
|
|
+# From Faruk Pasin (2014-02-14):
|
|
+# The DST for Turkey has been changed for this year because of the
|
|
+# Turkish Local election....
|
|
+# http://www.sabah.com.tr/Ekonomi/2014/02/12/yaz-saatinde-onemli-degisiklik
|
|
+# ... so Turkey will move clocks forward one hour on March 31 at 3:00 a.m.
|
|
+# From Paul Eggert (2014-02-17):
|
|
+# Here is an English-language source:
|
|
+# http://www.worldbulletin.net/turkey/129016/turkey-switches-to-daylight-saving-time-march-31
|
|
|
|
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
|
Rule Turkey 1916 only - May 1 0:00 1:00 S
|
|
@@ -2844,6 +2848,8 @@
|
|
2:00 Turkey EE%sT 2007
|
|
2:00 EU EE%sT 2011 Mar 27 1:00u
|
|
2:00 - EET 2011 Mar 28 1:00u
|
|
+ 2:00 EU EE%sT 2014 Mar 30 1:00u
|
|
+ 2:00 - EET 2014 Mar 31 1:00u
|
|
2:00 EU EE%sT
|
|
Link Europe/Istanbul Asia/Istanbul # Istanbul is in both continents.
|
|
|
|
@@ -2865,19 +2871,13 @@
|
|
# approval from 266 deputies.
|
|
#
|
|
# Ukraine abolishes transter back to the winter time (in Russian)
|
|
-# <a href="http://news.mail.ru/politics/6861560/">
|
|
# http://news.mail.ru/politics/6861560/
|
|
-# </a>
|
|
#
|
|
# The Ukrainians will no longer change the clock (in Russian)
|
|
-# <a href="http://www.segodnya.ua/news/14290482.html">
|
|
# http://www.segodnya.ua/news/14290482.html
|
|
-# </a>
|
|
#
|
|
# Deputies cancelled the winter time (in Russian)
|
|
-# <a href="http://www.pravda.com.ua/rus/news/2011/09/20/6600616/">
|
|
# http://www.pravda.com.ua/rus/news/2011/09/20/6600616/
|
|
-# </a>
|
|
#
|
|
# From Philip Pizzey (2011-10-18):
|
|
# Today my Ukrainian colleagues have informed me that the
|
|
@@ -2888,18 +2888,39 @@
|
|
# As far as I understand, the recent change to the Ukrainian time zone
|
|
# (Europe/Kiev) to introduce permanent daylight saving time (similar
|
|
# to Russia) was reverted today:
|
|
-#
|
|
-# <a href="http://portal.rada.gov.ua/rada/control/en/publish/article/info_left?art_id=287324&cat_id=105995">
|
|
# http://portal.rada.gov.ua/rada/control/en/publish/article/info_left?art_id=287324&cat_id=105995
|
|
-# </a>
|
|
#
|
|
# Also reported by Alexander Bokovoy (2011-10-18) who also noted:
|
|
# The law documents themselves are at
|
|
+# http://w1.c1.rada.gov.ua/pls/zweb_n/webproc4_1?id=&pf3511=41484
|
|
+
|
|
+# From Vladimir in Moscow via Alois Treindl re Kiev time 1991/2 (2014-02-28):
|
|
+# First in Ukraine they changed Time zone from UTC+3 to UTC+2 with DST:
|
|
+# 03 25 1990 02:00 -03.00 1 Time Zone 3 with DST
|
|
+# 07 01 1990 02:00 -02.00 1 Time Zone 2 with DST
|
|
+# * Ukrainian Government's Resolution of 18.06.1990, No. 134.
|
|
+# http://search.ligazakon.ua/l_doc2.nsf/link1/T001500.html
|
|
#
|
|
-# <a href="http://w1.c1.rada.gov.ua/pls/zweb_n/webproc4_1?id=&pf3511=41484">
|
|
-# http://w1.c1.rada.gov.ua/pls/zweb_n/webproc4_1?id=&pf3511=41484
|
|
-# </a>
|
|
-
|
|
+# They did not end DST in September, 1990 (according to the law,
|
|
+# "summer time" was still in action):
|
|
+# 09 30 1990 03:00 -02.00 1 Time Zone 2 with DST
|
|
+# * Ukrainian Government's Resolution of 21.09.1990, No. 272.
|
|
+# http://search.ligazakon.ua/l_doc2.nsf/link1/KP900272.html
|
|
+#
|
|
+# Again no change in March, 1991 ("summer time" in action):
|
|
+# 03 31 1991 02:00 -02.00 1 Time Zone 2 with DST
|
|
+#
|
|
+# DST ended in September 1991 ("summer time" ended):
|
|
+# 09 29 1991 03:00 -02.00 0 Time Zone 2, no DST
|
|
+# * Ukrainian Government's Resolution of 25.09.1991, No. 225.
|
|
+# http://www.uazakon.com/documents/date_21/pg_iwgdoc.htm
|
|
+# This is an answer.
|
|
+#
|
|
+# Since 1992 they had normal DST procedure:
|
|
+# 03 29 1992 02:00 -02.00 1 DST started
|
|
+# 09 27 1992 03:00 -02.00 0 DST ended
|
|
+# * Ukrainian Government's Resolution of 20.03.1992, No. 139.
|
|
+# http://www.uazakon.com/documents/date_8u/pg_grcasa.htm
|
|
|
|
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
|
# Most of Ukraine since 1970 has been like Kiev.
|
|
@@ -2910,9 +2931,8 @@
|
|
2:00 - EET 1930 Jun 21
|
|
3:00 - MSK 1941 Sep 20
|
|
1:00 C-Eur CE%sT 1943 Nov 6
|
|
- 3:00 Russia MSK/MSD 1990
|
|
- 3:00 - MSK 1990 Jul 1 2:00
|
|
- 2:00 - EET 1992
|
|
+ 3:00 Russia MSK/MSD 1990 Jul 1 2:00
|
|
+ 2:00 1:00 EEST 1991 Sep 29 3:00
|
|
2:00 E-Eur EE%sT 1995
|
|
2:00 EU EE%sT
|
|
# Ruthenia used CET 1990/1991.
|
|
@@ -2966,7 +2986,15 @@
|
|
# Assume it happened in March by not changing the clocks.
|
|
3:00 Russia MSK/MSD 1997
|
|
3:00 - MSK 1997 Mar lastSun 1:00u
|
|
- 2:00 EU EE%sT
|
|
+# From Alexander Krivenyshev (2014-03-17):
|
|
+# time change at 2:00 (2am) on March 30, 2014
|
|
+# http://vz.ru/news/2014/3/17/677464.html
|
|
+# From Paul Eggert (2014-03-30):
|
|
+# Simferopol and Sevastopol reportedly changed their central town clocks
|
|
+# late the previous day, but this appears to have been ceremonial
|
|
+# and the discrepancies are small enough to not worry about.
|
|
+ 2:00 EU EE%sT 2014 Mar 30 2:00
|
|
+ 4:00 - MSK
|
|
|
|
# Vatican City
|
|
# See Europe/Rome.
|
|
--- jdk/make/data/tzdata/leapseconds Wed Mar 12 11:58:14 2014 +0000
|
|
+++ jdk/make/data/tzdata/leapseconds Tue Jun 03 14:19:36 2014 -0700
|
|
@@ -20,7 +20,7 @@
|
|
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
|
# or visit www.oracle.com if you need additional information or have any
|
|
# questions.
|
|
-
|
|
+#
|
|
# Allowance for leapseconds added to each timezone file.
|
|
|
|
# This file is in the public domain.
|
|
--- jdk/make/data/tzdata/northamerica Wed Mar 12 11:58:14 2014 +0000
|
|
+++ jdk/make/data/tzdata/northamerica Tue Jun 03 14:19:36 2014 -0700
|
|
@@ -414,9 +414,10 @@
|
|
# US Pacific time, represented by Los Angeles
|
|
#
|
|
# California, northern Idaho (Benewah, Bonner, Boundary, Clearwater,
|
|
-# Idaho, Kootenai, Latah, Lewis, Nez Perce, and Shoshone counties,
|
|
-# and the northern three-quarters of Idaho county),
|
|
-# most of Nevada, most of Oregon, and Washington
|
|
+# Kootenai, Latah, Lewis, Nez Perce, and Shoshone counties, Idaho county
|
|
+# north of the Salmon River, and the towns of Burgdorf and Warren),
|
|
+# Nevada (except West Wendover), Oregon (except the northern 3/4 of
|
|
+# Malheur county), and Washington
|
|
#
|
|
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER
|
|
Rule CA 1948 only - Mar 14 2:00 1:00 D
|
|
--- jdk/make/data/tzdata/southamerica Wed Mar 12 11:58:14 2014 +0000
|
|
+++ jdk/make/data/tzdata/southamerica Tue Jun 03 14:19:36 2014 -0700
|
|
@@ -1298,6 +1298,13 @@
|
|
# start date is 2013-09-08 00:00....
|
|
# http://www.gob.cl/informa/2013/02/15/gobierno-anuncia-fechas-de-cambio-de-hora-para-el-ano-2013.htm
|
|
|
|
+# From Jose Miguel Garrido (2014-02-19):
|
|
+# Today appeared in the Diario Oficial a decree amending the time change
|
|
+# dates to 2014.
|
|
+# DST End: last Saturday of April 2014 (Sun 27 Apr 2014 03:00 UTC)
|
|
+# DST Start: first Saturday of September 2014 (Sun 07 Sep 2014 04:00 UTC)
|
|
+# http://www.diariooficial.interior.gob.cl//media/2014/02/19/do-20140219.pdf
|
|
+
|
|
# NOTE: ChileAQ rules for Antarctic bases are stored separately in the
|
|
# 'antarctica' file.
|
|
|
|
@@ -1631,6 +1638,9 @@
|
|
# From Carlos Raul Perasso (2013-03-15):
|
|
# The change in Paraguay is now final. Decree number 10780
|
|
# http://www.presidencia.gov.py/uploads/pdf/presidencia-3b86ff4b691c79d4f5927ca964922ec74772ce857c02ca054a52a37b49afc7fb.pdf
|
|
+# From Carlos Raul Perasso (2014-02-28):
|
|
+# Decree 1264 can be found at:
|
|
+# http://www.presidencia.gov.py/archivos/documentos/DECRETO1264_ey9r8zai.pdf
|
|
Rule Para 2013 max - Mar Sun>=22 0:00 0 -
|
|
|
|
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
|
@@ -1689,18 +1699,19 @@
|
|
Zone America/Port_of_Spain -4:06:04 - LMT 1912 Mar 2
|
|
-4:00 - AST
|
|
|
|
+# These all agree with Trinidad and Tobago since 1970.
|
|
Link America/Port_of_Spain America/Anguilla
|
|
Link America/Port_of_Spain America/Dominica
|
|
Link America/Port_of_Spain America/Grenada
|
|
Link America/Port_of_Spain America/Guadeloupe
|
|
-Link America/Port_of_Spain America/Marigot
|
|
+Link America/Port_of_Spain America/Marigot # St Martin (French part)
|
|
Link America/Port_of_Spain America/Montserrat
|
|
Link America/Port_of_Spain America/St_Barthelemy
|
|
-Link America/Port_of_Spain America/St_Kitts
|
|
+Link America/Port_of_Spain America/St_Kitts # St Kitts & Nevis
|
|
Link America/Port_of_Spain America/St_Lucia
|
|
-Link America/Port_of_Spain America/St_Thomas
|
|
+Link America/Port_of_Spain America/St_Thomas # Virgin Islands (US)
|
|
Link America/Port_of_Spain America/St_Vincent
|
|
-Link America/Port_of_Spain America/Tortola
|
|
+Link America/Port_of_Spain America/Tortola # Virgin Islands (UK)
|
|
|
|
# Uruguay
|
|
# From Paul Eggert (1993-11-18):
|
|
--- jdk/make/data/tzdata/zone.tab Wed Mar 12 11:58:14 2014 +0000
|
|
+++ jdk/make/data/tzdata/zone.tab Tue Jun 03 14:19:36 2014 -0700
|
|
@@ -74,6 +74,7 @@
|
|
AQ -7824+10654 Antarctica/Vostok Vostok Station, Lake Vostok
|
|
AQ -6640+14001 Antarctica/DumontDUrville Dumont-d'Urville Station, Terre Adelie
|
|
AQ -690022+0393524 Antarctica/Syowa Syowa Station, E Ongul I
|
|
+AQ -720041+0023206 Antarctica/Troll Troll Station, Queen Maud Land
|
|
AR -3436-05827 America/Argentina/Buenos_Aires Buenos Aires (BA, CF)
|
|
AR -3124-06411 America/Argentina/Cordoba most locations (CB, CC, CN, ER, FM, MN, SE, SF)
|
|
AR -2447-06525 America/Argentina/Salta (SA, LP, NQ, RN)
|
|
@@ -366,6 +367,7 @@
|
|
RU +5545+03735 Europe/Moscow Moscow+00 - west Russia
|
|
RU +4844+04425 Europe/Volgograd Moscow+00 - Caspian Sea
|
|
RU +5312+05009 Europe/Samara Moscow+00 - Samara, Udmurtia
|
|
+RU +4457+03406 Europe/Simferopol Moscow+00 - Crimea
|
|
RU +5651+06036 Asia/Yekaterinburg Moscow+02 - Urals
|
|
RU +5500+07324 Asia/Omsk Moscow+03 - west Siberia
|
|
RU +5502+08255 Asia/Novosibirsk Moscow+03 - Novosibirsk
|
|
@@ -421,7 +423,6 @@
|
|
UA +5026+03031 Europe/Kiev most locations
|
|
UA +4837+02218 Europe/Uzhgorod Ruthenia
|
|
UA +4750+03510 Europe/Zaporozhye Zaporozh'ye, E Lugansk / Zaporizhia, E Luhansk
|
|
-UA +4457+03406 Europe/Simferopol central Crimea
|
|
UG +0019+03225 Africa/Kampala
|
|
UM +1645-16931 Pacific/Johnston Johnston Atoll
|
|
UM +2813-17722 Pacific/Midway Midway Islands
|
|
--- jdk/make/mapfiles/libsunec/mapfile-vers Wed Mar 12 11:58:14 2014 +0000
|
|
+++ jdk/make/mapfiles/libsunec/mapfile-vers Tue Jun 03 14:19:36 2014 -0700
|
|
@@ -1,5 +1,5 @@
|
|
#
|
|
-# Copyright (c) 2009, 2013, Oracle and/or its affiliates. All rights reserved.
|
|
+# Copyright (c) 2009, 2014, Oracle and/or its affiliates. All rights reserved.
|
|
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
|
#
|
|
# This code is free software; you can redistribute it and/or modify it
|
|
@@ -28,10 +28,9 @@
|
|
SUNWprivate_1.1 {
|
|
global:
|
|
Java_sun_security_ec_ECKeyPairGenerator_generateECKeyPair;
|
|
- Java_sun_security_ec_ECKeyPairGenerator_getEncodedBytes;
|
|
- Java_sun_security_ec_ECDSASignature_signDigest;
|
|
- Java_sun_security_ec_ECDSASignature_verifySignedDigest;
|
|
- Java_sun_security_ec_ECDHKeyAgreement_deriveKey;
|
|
+ Java_sun_security_ec_ECDSASignature_signDigest;
|
|
+ Java_sun_security_ec_ECDSASignature_verifySignedDigest;
|
|
+ Java_sun_security_ec_ECDHKeyAgreement_deriveKey;
|
|
local:
|
|
*;
|
|
};
|
|
--- jdk/make/profile-includes.txt Wed Mar 12 11:58:14 2014 +0000
|
|
+++ jdk/make/profile-includes.txt Tue Jun 03 14:19:36 2014 -0700
|
|
@@ -73,6 +73,7 @@
|
|
rt.jar \
|
|
security/US_export_policy.jar \
|
|
security/blacklist \
|
|
+ security/blacklisted.certs \
|
|
security/cacerts \
|
|
security/java.policy \
|
|
security/java.security \
|
|
--- jdk/src/macosx/native/sun/awt/AWTWindow.m Wed Mar 12 11:58:14 2014 +0000
|
|
+++ jdk/src/macosx/native/sun/awt/AWTWindow.m Tue Jun 03 14:19:36 2014 -0700
|
|
@@ -261,7 +261,8 @@
|
|
|
|
// returns id for the topmost window under mouse
|
|
+ (NSInteger) getTopmostWindowUnderMouseID {
|
|
-
|
|
+ NSInteger result = -1;
|
|
+
|
|
NSRect screenRect = [[NSScreen mainScreen] frame];
|
|
NSPoint nsMouseLocation = [NSEvent mouseLocation];
|
|
CGPoint cgMouseLocation = CGPointMake(nsMouseLocation.x, screenRect.size.height - nsMouseLocation.y);
|
|
@@ -274,11 +275,13 @@
|
|
CGRect rect;
|
|
CGRectMakeWithDictionaryRepresentation((CFDictionaryRef)[window objectForKey:(id)kCGWindowBounds], &rect);
|
|
if (CGRectContainsPoint(rect, cgMouseLocation)) {
|
|
- return [[window objectForKey:(id)kCGWindowNumber] integerValue];
|
|
+ result = [[window objectForKey:(id)kCGWindowNumber] integerValue];
|
|
+ break;
|
|
}
|
|
}
|
|
}
|
|
- return -1;
|
|
+ [windows release];
|
|
+ return result;
|
|
}
|
|
|
|
// checks that this window is under the mouse cursor and this point is not overlapped by others windows
|
|
--- jdk/src/macosx/native/sun/awt/CGraphicsDevice.m Wed Mar 12 11:58:14 2014 +0000
|
|
+++ jdk/src/macosx/native/sun/awt/CGraphicsDevice.m Tue Jun 03 14:19:36 2014 -0700
|
|
@@ -66,7 +66,8 @@
|
|
CFArrayAppendValue(validModes, cRef);
|
|
}
|
|
}
|
|
-
|
|
+ CFRelease(allModes);
|
|
+
|
|
CGDisplayModeRef currentMode = CGDisplayCopyDisplayMode(displayID);
|
|
|
|
BOOL containsCurrentMode = NO;
|
|
@@ -81,6 +82,7 @@
|
|
if (!containsCurrentMode) {
|
|
CFArrayAppendValue(validModes, currentMode);
|
|
}
|
|
+ CGDisplayModeRelease(currentMode);
|
|
|
|
return validModes;
|
|
}
|
|
@@ -235,17 +237,19 @@
|
|
{
|
|
JNF_COCOA_ENTER(env);
|
|
CFArrayRef allModes = getAllValidDisplayModes(displayID);
|
|
-
|
|
CGDisplayModeRef closestMatch = getBestModeForParameters(allModes, (int)w, (int)h, (int)bpp, (int)refrate);
|
|
+
|
|
__block CGError retCode = kCGErrorSuccess;
|
|
if (closestMatch != NULL) {
|
|
- [JNFRunLoop performOnMainThreadWaiting:YES withBlock:^(){
|
|
+ CGDisplayModeRetain(closestMatch);
|
|
+ [ThreadUtilities performOnMainThreadWaiting:YES block:^(){
|
|
CGDisplayConfigRef config;
|
|
retCode = CGBeginDisplayConfiguration(&config);
|
|
if (retCode == kCGErrorSuccess) {
|
|
CGConfigureDisplayWithDisplayMode(config, displayID, closestMatch, NULL);
|
|
retCode = CGCompleteDisplayConfiguration(config, kCGConfigureForAppOnly);
|
|
}
|
|
+ CGDisplayModeRelease(closestMatch);
|
|
}];
|
|
} else {
|
|
[JNFException raise:env as:kIllegalArgumentException reason:"Invalid display mode"];
|
|
@@ -253,8 +257,7 @@
|
|
|
|
if (retCode != kCGErrorSuccess){
|
|
[JNFException raise:env as:kIllegalArgumentException reason:"Unable to set display mode!"];
|
|
- }
|
|
-
|
|
+ }
|
|
CFRelease(allModes);
|
|
JNF_COCOA_EXIT(env);
|
|
}
|
|
--- jdk/src/share/classes/com/sun/jmx/remote/security/SubjectDelegator.java Wed Mar 12 11:58:14 2014 +0000
|
|
+++ jdk/src/share/classes/com/sun/jmx/remote/security/SubjectDelegator.java Tue Jun 03 14:19:36 2014 -0700
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright (c) 2003, 2006, Oracle and/or its affiliates. All rights reserved.
|
|
+ * Copyright (c) 2003, 2014, Oracle and/or its affiliates. All rights reserved.
|
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
|
*
|
|
* This code is free software; you can redistribute it and/or modify it
|
|
@@ -34,22 +34,14 @@
|
|
|
|
import javax.management.remote.SubjectDelegationPermission;
|
|
|
|
-import com.sun.jmx.remote.util.CacheMap;
|
|
-import java.util.ArrayList;
|
|
-import java.util.Collection;
|
|
+import java.util.*;
|
|
|
|
public class SubjectDelegator {
|
|
- private static final int PRINCIPALS_CACHE_SIZE = 10;
|
|
- private static final int ACC_CACHE_SIZE = 10;
|
|
-
|
|
- private CacheMap<Subject, Principal[]> principalsCache;
|
|
- private CacheMap<Subject, AccessControlContext> accCache;
|
|
-
|
|
/* Return the AccessControlContext appropriate to execute an
|
|
operation on behalf of the delegatedSubject. If the
|
|
authenticatedAccessControlContext does not have permission to
|
|
delegate to that subject, throw SecurityException. */
|
|
- public synchronized AccessControlContext
|
|
+ public AccessControlContext
|
|
delegatedContext(AccessControlContext authenticatedACC,
|
|
Subject delegatedSubject,
|
|
boolean removeCallerContext)
|
|
@@ -58,56 +50,14 @@
|
|
if (System.getSecurityManager() != null && authenticatedACC == null) {
|
|
throw new SecurityException("Illegal AccessControlContext: null");
|
|
}
|
|
- if (principalsCache == null || accCache == null) {
|
|
- principalsCache =
|
|
- new CacheMap<>(PRINCIPALS_CACHE_SIZE);
|
|
- accCache =
|
|
- new CacheMap<>(ACC_CACHE_SIZE);
|
|
- }
|
|
-
|
|
- // Retrieve the principals for the given
|
|
- // delegated subject from the cache
|
|
- //
|
|
- Principal[] delegatedPrincipals = principalsCache.get(delegatedSubject);
|
|
-
|
|
- // Convert the set of principals stored in the
|
|
- // delegated subject into an array of principals
|
|
- // and store it in the cache
|
|
- //
|
|
- if (delegatedPrincipals == null) {
|
|
- delegatedPrincipals =
|
|
- delegatedSubject.getPrincipals().toArray(new Principal[0]);
|
|
- principalsCache.put(delegatedSubject, delegatedPrincipals);
|
|
- }
|
|
-
|
|
- // Retrieve the access control context for the
|
|
- // given delegated subject from the cache
|
|
- //
|
|
- AccessControlContext delegatedACC = accCache.get(delegatedSubject);
|
|
-
|
|
- // Build the access control context to be used
|
|
- // when executing code as the delegated subject
|
|
- // and store it in the cache
|
|
- //
|
|
- if (delegatedACC == null) {
|
|
- if (removeCallerContext) {
|
|
- delegatedACC =
|
|
- JMXSubjectDomainCombiner.getDomainCombinerContext(
|
|
- delegatedSubject);
|
|
- } else {
|
|
- delegatedACC =
|
|
- JMXSubjectDomainCombiner.getContext(delegatedSubject);
|
|
- }
|
|
- accCache.put(delegatedSubject, delegatedACC);
|
|
- }
|
|
|
|
// Check if the subject delegation permission allows the
|
|
// authenticated subject to assume the identity of each
|
|
// principal in the delegated subject
|
|
//
|
|
- final Principal[] dp = delegatedPrincipals;
|
|
- final Collection<Permission> permissions = new ArrayList<>(dp.length);
|
|
- for(Principal p : dp) {
|
|
+ Collection<Principal> ps = getSubjectPrincipals(delegatedSubject);
|
|
+ final Collection<Permission> permissions = new ArrayList<>(ps.size());
|
|
+ for(Principal p : ps) {
|
|
final String pname = p.getClass().getName() + "." + p.getName();
|
|
permissions.add(new SubjectDelegationPermission(pname));
|
|
}
|
|
@@ -122,7 +72,15 @@
|
|
};
|
|
AccessController.doPrivileged(action, authenticatedACC);
|
|
|
|
- return delegatedACC;
|
|
+ return getDelegatedAcc(delegatedSubject, removeCallerContext);
|
|
+ }
|
|
+
|
|
+ private AccessControlContext getDelegatedAcc(Subject delegatedSubject, boolean removeCallerContext) {
|
|
+ if (removeCallerContext) {
|
|
+ return JMXSubjectDomainCombiner.getDomainCombinerContext(delegatedSubject);
|
|
+ } else {
|
|
+ return JMXSubjectDomainCombiner.getContext(delegatedSubject);
|
|
+ }
|
|
}
|
|
|
|
/**
|
|
@@ -137,11 +95,9 @@
|
|
public static synchronized boolean
|
|
checkRemoveCallerContext(Subject subject) {
|
|
try {
|
|
- final Principal[] dp =
|
|
- subject.getPrincipals().toArray(new Principal[0]);
|
|
- for (int i = 0 ; i < dp.length ; i++) {
|
|
+ for (Principal p : getSubjectPrincipals(subject)) {
|
|
final String pname =
|
|
- dp[i].getClass().getName() + "." + dp[i].getName();
|
|
+ p.getClass().getName() + "." + p.getName();
|
|
final Permission sdp =
|
|
new SubjectDelegationPermission(pname);
|
|
AccessController.checkPermission(sdp);
|
|
@@ -151,4 +107,19 @@
|
|
}
|
|
return true;
|
|
}
|
|
+
|
|
+ /**
|
|
+ * Retrieves the {@linkplain Subject} principals
|
|
+ * @param subject The subject
|
|
+ * @return If the {@code Subject} is immutable it will return the principals directly.
|
|
+ * If the {@code Subject} is mutable it will create an unmodifiable copy.
|
|
+ */
|
|
+ private static Collection<Principal> getSubjectPrincipals(Subject subject) {
|
|
+ if (subject.isReadOnly()) {
|
|
+ return subject.getPrincipals();
|
|
+ }
|
|
+
|
|
+ List<Principal> principals = Arrays.asList(subject.getPrincipals().toArray(new Principal[0]));
|
|
+ return Collections.unmodifiableList(principals);
|
|
+ }
|
|
}
|
|
--- jdk/src/share/classes/com/sun/jmx/remote/util/CacheMap.java Wed Mar 12 11:58:14 2014 +0000
|
|
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
|
|
@@ -1,121 +0,0 @@
|
|
-/*
|
|
- * Copyright (c) 2003, 2006, Oracle and/or its affiliates. All rights reserved.
|
|
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
|
- *
|
|
- * This code is free software; you can redistribute it and/or modify it
|
|
- * under the terms of the GNU General Public License version 2 only, as
|
|
- * published by the Free Software Foundation. Oracle designates this
|
|
- * particular file as subject to the "Classpath" exception as provided
|
|
- * by Oracle in the LICENSE file that accompanied this code.
|
|
- *
|
|
- * This code is distributed in the hope that it will be useful, but WITHOUT
|
|
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
|
- * version 2 for more details (a copy is included in the LICENSE file that
|
|
- * accompanied this code).
|
|
- *
|
|
- * You should have received a copy of the GNU General Public License version
|
|
- * 2 along with this work; if not, write to the Free Software Foundation,
|
|
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
- *
|
|
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
|
- * or visit www.oracle.com if you need additional information or have any
|
|
- * questions.
|
|
- */
|
|
-
|
|
-package com.sun.jmx.remote.util;
|
|
-
|
|
-import java.lang.ref.SoftReference;
|
|
-import java.util.Iterator;
|
|
-import java.util.LinkedList;
|
|
-import java.util.List;
|
|
-import java.util.WeakHashMap;
|
|
-
|
|
-import com.sun.jmx.mbeanserver.Util;
|
|
-
|
|
-/**
|
|
- * <p>Like WeakHashMap, except that the keys of the <em>n</em> most
|
|
- * recently-accessed entries are kept as {@link SoftReference soft
|
|
- * references}. Accessing an element means creating it, or retrieving
|
|
- * it with {@link #get(Object) get}. Because these entries are kept
|
|
- * with soft references, they will tend to remain even if their keys
|
|
- * are not referenced elsewhere. But if memory is short, they will
|
|
- * be removed.</p>
|
|
- */
|
|
-public class CacheMap<K, V> extends WeakHashMap<K, V> {
|
|
- /**
|
|
- * <p>Create a <code>CacheMap</code> that can keep up to
|
|
- * <code>nSoftReferences</code> as soft references.</p>
|
|
- *
|
|
- * @param nSoftReferences Maximum number of keys to keep as soft
|
|
- * references. Access times for {@link #get(Object) get} and
|
|
- * {@link #put(Object, Object) put} have a component that scales
|
|
- * linearly with <code>nSoftReferences</code>, so this value
|
|
- * should not be too great.
|
|
- *
|
|
- * @throws IllegalArgumentException if
|
|
- * <code>nSoftReferences</code> is negative.
|
|
- */
|
|
- public CacheMap(int nSoftReferences) {
|
|
- if (nSoftReferences < 0) {
|
|
- throw new IllegalArgumentException("nSoftReferences = " +
|
|
- nSoftReferences);
|
|
- }
|
|
- this.nSoftReferences = nSoftReferences;
|
|
- }
|
|
-
|
|
- public V put(K key, V value) {
|
|
- cache(key);
|
|
- return super.put(key, value);
|
|
- }
|
|
-
|
|
- public V get(Object key) {
|
|
- cache(Util.<K>cast(key));
|
|
- return super.get(key);
|
|
- }
|
|
-
|
|
- /* We don't override remove(Object) or try to do something with
|
|
- the map's iterators to detect removal. So we may keep useless
|
|
- entries in the soft reference list for keys that have since
|
|
- been removed. The assumption is that entries are added to the
|
|
- cache but never removed. But the behavior is not wrong if
|
|
- they are in fact removed -- the caching is just less
|
|
- performant. */
|
|
-
|
|
- private void cache(K key) {
|
|
- Iterator<SoftReference<K>> it = cache.iterator();
|
|
- while (it.hasNext()) {
|
|
- SoftReference<K> sref = it.next();
|
|
- K key1 = sref.get();
|
|
- if (key1 == null)
|
|
- it.remove();
|
|
- else if (key.equals(key1)) {
|
|
- // Move this element to the head of the LRU list
|
|
- it.remove();
|
|
- cache.add(0, sref);
|
|
- return;
|
|
- }
|
|
- }
|
|
-
|
|
- int size = cache.size();
|
|
- if (size == nSoftReferences) {
|
|
- if (size == 0)
|
|
- return; // degenerate case, equivalent to WeakHashMap
|
|
- it.remove();
|
|
- }
|
|
-
|
|
- cache.add(0, new SoftReference<K>(key));
|
|
- }
|
|
-
|
|
- /* List of soft references for the most-recently referenced keys.
|
|
- The list is in most-recently-used order, i.e. the first element
|
|
- is the most-recently referenced key. There are never more than
|
|
- nSoftReferences elements of this list.
|
|
-
|
|
- If we didn't care about J2SE 1.3 compatibility, we could use
|
|
- LinkedHashSet in conjunction with a subclass of SoftReference
|
|
- whose equals and hashCode reflect the referent. */
|
|
- private final LinkedList<SoftReference<K>> cache =
|
|
- new LinkedList<SoftReference<K>>();
|
|
- private final int nSoftReferences;
|
|
-}
|
|
--- jdk/src/share/classes/com/sun/security/sasl/CramMD5Base.java Wed Mar 12 11:58:14 2014 +0000
|
|
+++ jdk/src/share/classes/com/sun/security/sasl/CramMD5Base.java Tue Jun 03 14:19:36 2014 -0700
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
|
|
+ * Copyright (c) 2003, 2014, Oracle and/or its affiliates. All rights reserved.
|
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
|
*
|
|
* This code is free software; you can redistribute it and/or modify it
|
|
@@ -32,6 +32,7 @@
|
|
import java.security.NoSuchAlgorithmException;
|
|
import java.security.MessageDigest;
|
|
|
|
+import java.util.Arrays;
|
|
import java.util.logging.Logger;
|
|
|
|
/**
|
|
@@ -159,7 +160,7 @@
|
|
MessageDigest md5 = MessageDigest.getInstance("MD5");
|
|
|
|
/* digest the key if longer than 64 bytes */
|
|
- if (key.length > 64) {
|
|
+ if (key.length > MD5_BLOCKSIZE) {
|
|
key = md5.digest(key);
|
|
}
|
|
|
|
@@ -169,13 +170,9 @@
|
|
int i;
|
|
|
|
/* store key in pads */
|
|
- for (i = 0; i < MD5_BLOCKSIZE; i++) {
|
|
- for ( ; i < key.length; i++) {
|
|
- ipad[i] = key[i];
|
|
- opad[i] = key[i];
|
|
- }
|
|
- ipad[i] = 0x00;
|
|
- opad[i] = 0x00;
|
|
+ for (i = 0; i < key.length; i++) {
|
|
+ ipad[i] = key[i];
|
|
+ opad[i] = key[i];
|
|
}
|
|
|
|
/* XOR key with pads */
|
|
@@ -207,6 +204,11 @@
|
|
}
|
|
}
|
|
|
|
+ Arrays.fill(ipad, (byte)0);
|
|
+ Arrays.fill(opad, (byte)0);
|
|
+ ipad = null;
|
|
+ opad = null;
|
|
+
|
|
return (digestString.toString());
|
|
}
|
|
|
|
--- jdk/src/share/classes/java/lang/ProcessBuilder.java Wed Mar 12 11:58:14 2014 +0000
|
|
+++ jdk/src/share/classes/java/lang/ProcessBuilder.java Tue Jun 03 14:19:36 2014 -0700
|
|
@@ -1019,6 +1019,12 @@
|
|
|
|
String dir = directory == null ? null : directory.toString();
|
|
|
|
+ for (int i = 1; i < cmdarray.length; i++) {
|
|
+ if (cmdarray[i].indexOf('\u0000') >= 0) {
|
|
+ throw new IOException("invalid null character in command");
|
|
+ }
|
|
+ }
|
|
+
|
|
try {
|
|
return ProcessImpl.start(cmdarray,
|
|
environment,
|
|
--- jdk/src/share/classes/java/lang/invoke/MethodHandles.java Wed Mar 12 11:58:14 2014 +0000
|
|
+++ jdk/src/share/classes/java/lang/invoke/MethodHandles.java Tue Jun 03 14:19:36 2014 -0700
|
|
@@ -39,7 +39,9 @@
|
|
import sun.security.util.SecurityConstants;
|
|
import static java.lang.invoke.MethodHandleStatics.*;
|
|
import static java.lang.invoke.MethodHandleNatives.Constants.*;
|
|
+
|
|
import java.util.concurrent.ConcurrentHashMap;
|
|
+
|
|
import sun.security.util.SecurityConstants;
|
|
|
|
/**
|
|
@@ -1504,6 +1506,10 @@
|
|
// that is *not* the bytecode behavior.
|
|
mods ^= Modifier.PROTECTED | Modifier.PUBLIC;
|
|
}
|
|
+ if (Modifier.isProtected(mods) && refKind == REF_newInvokeSpecial) {
|
|
+ // cannot "new" a protected ctor in a different package
|
|
+ mods ^= Modifier.PROTECTED;
|
|
+ }
|
|
if (Modifier.isFinal(mods) &&
|
|
MethodHandleNatives.refKindIsSetter(refKind))
|
|
throw m.makeAccessException("unexpected set of a final field", this);
|
|
--- jdk/src/share/classes/java/lang/reflect/Proxy.java Wed Mar 12 11:58:14 2014 +0000
|
|
+++ jdk/src/share/classes/java/lang/reflect/Proxy.java Tue Jun 03 14:19:36 2014 -0700
|
|
@@ -362,12 +362,13 @@
|
|
Class<?>... interfaces)
|
|
throws IllegalArgumentException
|
|
{
|
|
- SecurityManager sm = System.getSecurityManager();
|
|
+ final Class<?>[] intfs = interfaces.clone();
|
|
+ final SecurityManager sm = System.getSecurityManager();
|
|
if (sm != null) {
|
|
- checkProxyAccess(Reflection.getCallerClass(), loader, interfaces);
|
|
+ checkProxyAccess(Reflection.getCallerClass(), loader, intfs);
|
|
}
|
|
|
|
- return getProxyClass0(loader, interfaces);
|
|
+ return getProxyClass0(loader, intfs);
|
|
}
|
|
|
|
/*
|
|
@@ -706,15 +707,16 @@
|
|
{
|
|
Objects.requireNonNull(h);
|
|
|
|
+ final Class<?>[] intfs = interfaces.clone();
|
|
final SecurityManager sm = System.getSecurityManager();
|
|
if (sm != null) {
|
|
- checkProxyAccess(Reflection.getCallerClass(), loader, interfaces);
|
|
+ checkProxyAccess(Reflection.getCallerClass(), loader, intfs);
|
|
}
|
|
|
|
/*
|
|
* Look up or generate the designated proxy class.
|
|
*/
|
|
- Class<?> cl = getProxyClass0(loader, interfaces);
|
|
+ Class<?> cl = getProxyClass0(loader, intfs);
|
|
|
|
/*
|
|
* Invoke its constructor with the designated invocation handler.
|
|
--- jdk/src/share/classes/java/security/Provider.java Wed Mar 12 11:58:14 2014 +0000
|
|
+++ jdk/src/share/classes/java/security/Provider.java Tue Jun 03 14:19:36 2014 -0700
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright (c) 1996, 2013, Oracle and/or its affiliates. All rights reserved.
|
|
+ * Copyright (c) 1996, 2014, Oracle and/or its affiliates. All rights reserved.
|
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
|
*
|
|
* This code is free software; you can redistribute it and/or modify it
|
|
@@ -1372,7 +1372,7 @@
|
|
* <p>This class defines the methods {@link #supportsParameter
|
|
* supportsParameter()} and {@link #newInstance newInstance()}
|
|
* which are used by the Java security framework when it searches for
|
|
- * suitable services and instantes them. The valid arguments to those
|
|
+ * suitable services and instantiates them. The valid arguments to those
|
|
* methods depend on the type of service. For the service types defined
|
|
* within Java SE, see the
|
|
* <a href="../../../technotes/guides/security/crypto/CryptoSpec.html">
|
|
@@ -1562,7 +1562,7 @@
|
|
*
|
|
* @throws InvalidParameterException if the value of
|
|
* constructorParameter is invalid for this type of service.
|
|
- * @throws NoSuchAlgorithmException if instantation failed for
|
|
+ * @throws NoSuchAlgorithmException if instantiation failed for
|
|
* any other reason.
|
|
*/
|
|
public Object newInstance(Object constructorParameter)
|
|
@@ -1590,7 +1590,9 @@
|
|
+ " engines");
|
|
}
|
|
Class<?> clazz = getImplClass();
|
|
- return clazz.newInstance();
|
|
+ Class<?>[] empty = {};
|
|
+ Constructor<?> con = clazz.getConstructor(empty);
|
|
+ return con.newInstance();
|
|
} else {
|
|
Class<?> paramClass = cap.getConstructorParameterClass();
|
|
if (constructorParameter != null) {
|
|
@@ -1633,13 +1635,18 @@
|
|
} else {
|
|
clazz = cl.loadClass(className);
|
|
}
|
|
+ if (!Modifier.isPublic(clazz.getModifiers())) {
|
|
+ throw new NoSuchAlgorithmException
|
|
+ ("class configured for " + type + " (provider: " +
|
|
+ provider.getName() + ") is not public.");
|
|
+ }
|
|
classRef = new WeakReference<Class<?>>(clazz);
|
|
}
|
|
return clazz;
|
|
} catch (ClassNotFoundException e) {
|
|
throw new NoSuchAlgorithmException
|
|
- ("class configured for " + type + "(provider: " +
|
|
- provider.getName() + ")" + "cannot be found.", e);
|
|
+ ("class configured for " + type + " (provider: " +
|
|
+ provider.getName() + ") cannot be found.", e);
|
|
}
|
|
}
|
|
|
|
@@ -1652,15 +1659,21 @@
|
|
throws Exception {
|
|
Class<?> clazz = getImplClass();
|
|
if (constructorParameter == null) {
|
|
- Object o = clazz.newInstance();
|
|
- return o;
|
|
+ // create instance with public no-arg constructor if it exists
|
|
+ try {
|
|
+ Class<?>[] empty = {};
|
|
+ Constructor<?> con = clazz.getConstructor(empty);
|
|
+ return con.newInstance();
|
|
+ } catch (NoSuchMethodException e) {
|
|
+ throw new NoSuchAlgorithmException("No public no-arg "
|
|
+ + "constructor found in class " + className);
|
|
+ }
|
|
}
|
|
Class<?> argClass = constructorParameter.getClass();
|
|
Constructor[] cons = clazz.getConstructors();
|
|
// find first public constructor that can take the
|
|
// argument as parameter
|
|
- for (int i = 0; i < cons.length; i++) {
|
|
- Constructor<?> con = cons[i];
|
|
+ for (Constructor<?> con : cons) {
|
|
Class<?>[] paramTypes = con.getParameterTypes();
|
|
if (paramTypes.length != 1) {
|
|
continue;
|
|
@@ -1668,10 +1681,9 @@
|
|
if (paramTypes[0].isAssignableFrom(argClass) == false) {
|
|
continue;
|
|
}
|
|
- Object o = con.newInstance(new Object[] {constructorParameter});
|
|
- return o;
|
|
+ return con.newInstance(constructorParameter);
|
|
}
|
|
- throw new NoSuchAlgorithmException("No constructor matching "
|
|
+ throw new NoSuchAlgorithmException("No public constructor matching "
|
|
+ argClass.getName() + " found in class " + className);
|
|
}
|
|
|
|
--- jdk/src/share/classes/java/util/concurrent/atomic/AtomicReferenceFieldUpdater.java Wed Mar 12 11:58:14 2014 +0000
|
|
+++ jdk/src/share/classes/java/util/concurrent/atomic/AtomicReferenceFieldUpdater.java Tue Jun 03 14:19:36 2014 -0700
|
|
@@ -334,6 +334,8 @@
|
|
|
|
if (vclass != fieldClass)
|
|
throw new ClassCastException();
|
|
+ if (vclass.isPrimitive())
|
|
+ throw new IllegalArgumentException("Must be reference type");
|
|
|
|
if (!Modifier.isVolatile(modifiers))
|
|
throw new IllegalArgumentException("Must be volatile type");
|
|
--- jdk/src/share/classes/javax/swing/filechooser/FileSystemView.java Wed Mar 12 11:58:14 2014 +0000
|
|
+++ jdk/src/share/classes/javax/swing/filechooser/FileSystemView.java Tue Jun 03 14:19:36 2014 -0700
|
|
@@ -718,7 +718,8 @@
|
|
* @return the Desktop folder.
|
|
*/
|
|
public File getHomeDirectory() {
|
|
- return getRoots()[0];
|
|
+ File[] roots = getRoots();
|
|
+ return (roots.length == 0) ? null : roots[0];
|
|
}
|
|
|
|
/**
|
|
--- jdk/src/share/classes/sun/awt/AppContext.java Wed Mar 12 11:58:14 2014 +0000
|
|
+++ jdk/src/share/classes/sun/awt/AppContext.java Tue Jun 03 14:19:36 2014 -0700
|
|
@@ -329,6 +329,20 @@
|
|
while (context == null) {
|
|
threadGroup = threadGroup.getParent();
|
|
if (threadGroup == null) {
|
|
+ // We've got up to the root thread group and did not find an AppContext
|
|
+ // Try to get it from the security manager
|
|
+ SecurityManager securityManager = System.getSecurityManager();
|
|
+ if (securityManager != null) {
|
|
+ ThreadGroup smThreadGroup = securityManager.getThreadGroup();
|
|
+ if (smThreadGroup != null) {
|
|
+ /*
|
|
+ * If we get this far then it's likely that
|
|
+ * the ThreadGroup does not actually belong
|
|
+ * to the applet, so do not cache it.
|
|
+ */
|
|
+ return threadGroup2appContext.get(smThreadGroup);
|
|
+ }
|
|
+ }
|
|
return null;
|
|
}
|
|
context = threadGroup2appContext.get(threadGroup);
|
|
--- jdk/src/share/classes/sun/awt/FontConfiguration.java Wed Mar 12 11:58:14 2014 +0000
|
|
+++ jdk/src/share/classes/sun/awt/FontConfiguration.java Tue Jun 03 14:19:36 2014 -0700
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright (c) 1996, 2013, Oracle and/or its affiliates. All rights reserved.
|
|
+ * Copyright (c) 1996, 2014, Oracle and/or its affiliates. All rights reserved.
|
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
|
*
|
|
* This code is free software; you can redistribute it and/or modify it
|
|
@@ -867,7 +867,7 @@
|
|
return descriptors;
|
|
}
|
|
|
|
- private FontDescriptor[] buildFontDescriptors(int fontIndex, int styleIndex) {
|
|
+ protected FontDescriptor[] buildFontDescriptors(int fontIndex, int styleIndex) {
|
|
String fontName = fontNames[fontIndex];
|
|
String styleName = styleNames[styleIndex];
|
|
|
|
--- jdk/src/share/classes/sun/security/ec/ECKeyPairGenerator.java Wed Mar 12 11:58:14 2014 +0000
|
|
+++ jdk/src/share/classes/sun/security/ec/ECKeyPairGenerator.java Tue Jun 03 14:19:36 2014 -0700
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright (c) 2009, 2013, Oracle and/or its affiliates. All rights reserved.
|
|
+ * Copyright (c) 2009, 2014, Oracle and/or its affiliates. All rights reserved.
|
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
|
*
|
|
* This code is free software; you can redistribute it and/or modify it
|
|
@@ -125,19 +125,18 @@
|
|
|
|
try {
|
|
|
|
- long[] handles = generateECKeyPair(keySize, encodedParams, seed);
|
|
+ Object[] keyBytes = generateECKeyPair(keySize, encodedParams, seed);
|
|
|
|
// The 'params' object supplied above is equivalent to the native
|
|
// one so there is no need to fetch it.
|
|
-
|
|
- // handles[0] points to the native private key
|
|
- BigInteger s = new BigInteger(1, getEncodedBytes(handles[0]));
|
|
+ // keyBytes[0] is the encoding of the native private key
|
|
+ BigInteger s = new BigInteger(1, (byte[])keyBytes[0]);
|
|
|
|
PrivateKey privateKey =
|
|
new ECPrivateKeyImpl(s, (ECParameterSpec)params);
|
|
|
|
- // handles[1] points to the native public key
|
|
- ECPoint w = ECUtil.decodePoint(getEncodedBytes(handles[1]),
|
|
+ // keyBytes[1] is the encoding of the native public key
|
|
+ ECPoint w = ECUtil.decodePoint((byte[])keyBytes[1],
|
|
((ECParameterSpec)params).getCurve());
|
|
PublicKey publicKey =
|
|
new ECPublicKeyImpl(w, (ECParameterSpec)params);
|
|
@@ -162,14 +161,9 @@
|
|
}
|
|
|
|
/*
|
|
- * Generates the keypair and returns a 2-element array of handles.
|
|
- * The first handle points to the private key, the second to the public key.
|
|
+ * Generates the keypair and returns a 2-element array of encoding bytes.
|
|
+ * The first one is for the private key, the second for the public key.
|
|
*/
|
|
- private static native long[] generateECKeyPair(int keySize,
|
|
+ private static native Object[] generateECKeyPair(int keySize,
|
|
byte[] encodedParams, byte[] seed) throws GeneralSecurityException;
|
|
-
|
|
- /*
|
|
- * Extracts the encoded key data using the supplied handle.
|
|
- */
|
|
- private static native byte[] getEncodedBytes(long handle);
|
|
}
|
|
--- jdk/src/share/classes/sun/security/rsa/RSACore.java Wed Mar 12 11:58:14 2014 +0000
|
|
+++ jdk/src/share/classes/sun/security/rsa/RSACore.java Tue Jun 03 14:19:36 2014 -0700
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved.
|
|
+ * Copyright (c) 2003, 2014, Oracle and/or its affiliates. All rights reserved.
|
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
|
*
|
|
* This code is free software; you can redistribute it and/or modify it
|
|
@@ -50,6 +50,15 @@
|
|
*/
|
|
public final class RSACore {
|
|
|
|
+ // globally enable/disable use of blinding
|
|
+ private final static boolean ENABLE_BLINDING = true;
|
|
+
|
|
+ // cache for blinding parameters. Map<BigInteger, BlindingParameters>
|
|
+ // use a weak hashmap so that cached values are automatically cleared
|
|
+ // when the modulus is GC'ed
|
|
+ private final static Map<BigInteger, BlindingParameters>
|
|
+ blindingCache = new WeakHashMap<>();
|
|
+
|
|
private RSACore() {
|
|
// empty
|
|
}
|
|
@@ -100,12 +109,12 @@
|
|
if (key instanceof RSAPrivateCrtKey) {
|
|
return crtCrypt(msg, (RSAPrivateCrtKey)key);
|
|
} else {
|
|
- return crypt(msg, key.getModulus(), key.getPrivateExponent());
|
|
+ return priCrypt(msg, key.getModulus(), key.getPrivateExponent());
|
|
}
|
|
}
|
|
|
|
/**
|
|
- * RSA public key ops and non-CRT private key ops. Simple modPow().
|
|
+ * RSA public key ops. Simple modPow().
|
|
*/
|
|
private static byte[] crypt(byte[] msg, BigInteger n, BigInteger exp)
|
|
throws BadPaddingException {
|
|
@@ -115,22 +124,29 @@
|
|
}
|
|
|
|
/**
|
|
+ * RSA non-CRT private key operations.
|
|
+ */
|
|
+ private static byte[] priCrypt(byte[] msg, BigInteger n, BigInteger exp)
|
|
+ throws BadPaddingException {
|
|
+
|
|
+ BigInteger c = parseMsg(msg, n);
|
|
+ BlindingRandomPair brp = null;
|
|
+ BigInteger m;
|
|
+ if (ENABLE_BLINDING) {
|
|
+ brp = getBlindingRandomPair(null, exp, n);
|
|
+ c = c.multiply(brp.u).mod(n);
|
|
+ m = c.modPow(exp, n);
|
|
+ m = m.multiply(brp.v).mod(n);
|
|
+ } else {
|
|
+ m = c.modPow(exp, n);
|
|
+ }
|
|
+
|
|
+ return toByteArray(m, getByteLength(n));
|
|
+ }
|
|
+
|
|
+ /**
|
|
* RSA private key operations with CRT. Algorithm and variable naming
|
|
* are taken from PKCS#1 v2.1, section 5.1.2.
|
|
- *
|
|
- * The only difference is the addition of blinding to twart timing attacks.
|
|
- * This is described in the RSA Bulletin#2 (Jan 96) among other places.
|
|
- * This means instead of implementing RSA as
|
|
- * m = c ^ d mod n (or RSA in CRT variant)
|
|
- * we do
|
|
- * r = random(0, n-1)
|
|
- * c' = c * r^e mod n
|
|
- * m' = c' ^ d mod n (or RSA in CRT variant)
|
|
- * m = m' * r^-1 mod n (where r^-1 is the modular inverse of r mod n)
|
|
- * This works because r^(e*d) * r^-1 = r * r^-1 = 1 (all mod n)
|
|
- *
|
|
- * We do not generate new blinding parameters for each operation but reuse
|
|
- * them BLINDING_MAX_REUSE times (see definition below).
|
|
*/
|
|
private static byte[] crtCrypt(byte[] msg, RSAPrivateCrtKey key)
|
|
throws BadPaddingException {
|
|
@@ -141,13 +157,13 @@
|
|
BigInteger dP = key.getPrimeExponentP();
|
|
BigInteger dQ = key.getPrimeExponentQ();
|
|
BigInteger qInv = key.getCrtCoefficient();
|
|
+ BigInteger e = key.getPublicExponent();
|
|
+ BigInteger d = key.getPrivateExponent();
|
|
|
|
- BlindingParameters params;
|
|
+ BlindingRandomPair brp;
|
|
if (ENABLE_BLINDING) {
|
|
- params = getBlindingParameters(key);
|
|
- c = c.multiply(params.re).mod(n);
|
|
- } else {
|
|
- params = null;
|
|
+ brp = getBlindingRandomPair(e, d, n);
|
|
+ c = c.multiply(brp.u).mod(n);
|
|
}
|
|
|
|
// m1 = c ^ dP mod p
|
|
@@ -165,8 +181,8 @@
|
|
// m = m2 + q * h
|
|
BigInteger m = h.multiply(q).add(m2);
|
|
|
|
- if (params != null) {
|
|
- m = m.multiply(params.rInv).mod(n);
|
|
+ if (ENABLE_BLINDING) {
|
|
+ m = m.multiply(brp.v).mod(n);
|
|
}
|
|
|
|
return toByteArray(m, getByteLength(n));
|
|
@@ -208,82 +224,217 @@
|
|
return t;
|
|
}
|
|
|
|
- // globally enable/disable use of blinding
|
|
- private final static boolean ENABLE_BLINDING = true;
|
|
+ /**
|
|
+ * Parameters (u,v) for RSA Blinding. This is described in the RSA
|
|
+ * Bulletin#2 (Jan 96) and other places:
|
|
+ *
|
|
+ * ftp://ftp.rsa.com/pub/pdfs/bull-2.pdf
|
|
+ *
|
|
+ * The standard RSA Blinding decryption requires the public key exponent
|
|
+ * (e) and modulus (n), and converts ciphertext (c) to plaintext (p).
|
|
+ *
|
|
+ * Before the modular exponentiation operation, the input message should
|
|
+ * be multiplied by (u (mod n)), and afterward the result is corrected
|
|
+ * by multiplying with (v (mod n)). The system should reject messages
|
|
+ * equal to (0 (mod n)). That is:
|
|
+ *
|
|
+ * 1. Generate r between 0 and n-1, relatively prime to n.
|
|
+ * 2. Compute x = (c*u) mod n
|
|
+ * 3. Compute y = (x^d) mod n
|
|
+ * 4. Compute p = (y*v) mod n
|
|
+ *
|
|
+ * The Java APIs allows for either standard RSAPrivateKey or
|
|
+ * RSAPrivateCrtKey RSA keys.
|
|
+ *
|
|
+ * If the public exponent is available to us (e.g. RSAPrivateCrtKey),
|
|
+ * choose a random r, then let (u, v):
|
|
+ *
|
|
+ * u = r ^ e mod n
|
|
+ * v = r ^ (-1) mod n
|
|
+ *
|
|
+ * The proof follows:
|
|
+ *
|
|
+ * p = (((c * u) ^ d mod n) * v) mod n
|
|
+ * = ((c ^ d) * (u ^ d) * v) mod n
|
|
+ * = ((c ^ d) * (r ^ e) ^ d) * (r ^ (-1))) mod n
|
|
+ * = ((c ^ d) * (r ^ (e * d)) * (r ^ (-1))) mod n
|
|
+ * = ((c ^ d) * (r ^ 1) * (r ^ (-1))) mod n (see below)
|
|
+ * = (c ^ d) mod n
|
|
+ *
|
|
+ * because in RSA cryptosystem, d is the multiplicative inverse of e:
|
|
+ *
|
|
+ * (r^(e * d)) mod n
|
|
+ * = (r ^ 1) mod n
|
|
+ * = r mod n
|
|
+ *
|
|
+ * However, if the public exponent is not available (e.g. RSAPrivateKey),
|
|
+ * we mitigate the timing issue by using a similar random number blinding
|
|
+ * approach using the private key:
|
|
+ *
|
|
+ * u = r
|
|
+ * v = ((r ^ (-1)) ^ d) mod n
|
|
+ *
|
|
+ * This returns the same plaintext because:
|
|
+ *
|
|
+ * p = (((c * u) ^ d mod n) * v) mod n
|
|
+ * = ((c ^ d) * (u ^ d) * v) mod n
|
|
+ * = ((c ^ d) * (u ^ d) * ((u ^ (-1)) ^d)) mod n
|
|
+ * = (c ^ d) mod n
|
|
+ *
|
|
+ * Computing inverses mod n and random number generation is slow, so
|
|
+ * it is often not practical to generate a new random (u, v) pair for
|
|
+ * each new exponentiation. The calculation of parameters might even be
|
|
+ * subject to timing attacks. However, (u, v) pairs should not be
|
|
+ * reused since they themselves might be compromised by timing attacks,
|
|
+ * leaving the private exponent vulnerable. An efficient solution to
|
|
+ * this problem is update u and v before each modular exponentiation
|
|
+ * step by computing:
|
|
+ *
|
|
+ * u = u ^ 2
|
|
+ * v = v ^ 2
|
|
+ *
|
|
+ * The total performance cost is small.
|
|
+ */
|
|
+ private final static class BlindingRandomPair {
|
|
+ final BigInteger u;
|
|
+ final BigInteger v;
|
|
|
|
- // maximum number of times that we will use a set of blinding parameters
|
|
- // value suggested by Paul Kocher (quoted by NSS)
|
|
- private final static int BLINDING_MAX_REUSE = 50;
|
|
-
|
|
- // cache for blinding parameters. Map<BigInteger, BlindingParameters>
|
|
- // use a weak hashmap so that cached values are automatically cleared
|
|
- // when the modulus is GC'ed
|
|
- private final static Map<BigInteger, BlindingParameters> blindingCache =
|
|
- new WeakHashMap<>();
|
|
+ BlindingRandomPair(BigInteger u, BigInteger v) {
|
|
+ this.u = u;
|
|
+ this.v = v;
|
|
+ }
|
|
+ }
|
|
|
|
/**
|
|
* Set of blinding parameters for a given RSA key.
|
|
*
|
|
* The RSA modulus is usually unique, so we index by modulus in
|
|
- * blindingCache. However, to protect against the unlikely case of two
|
|
- * keys sharing the same modulus, we also store the public exponent.
|
|
- * This means we cannot cache blinding parameters for multiple keys that
|
|
- * share the same modulus, but since sharing moduli is fundamentally broken
|
|
- * an insecure, this does not matter.
|
|
+ * {@code blindingCache}. However, to protect against the unlikely
|
|
+ * case of two keys sharing the same modulus, we also store the public
|
|
+ * or the private exponent. This means we cannot cache blinding
|
|
+ * parameters for multiple keys that share the same modulus, but
|
|
+ * since sharing moduli is fundamentally broken and insecure, this
|
|
+ * does not matter.
|
|
*/
|
|
- private static final class BlindingParameters {
|
|
- // e (RSA public exponent)
|
|
- final BigInteger e;
|
|
- // r ^ e mod n
|
|
- final BigInteger re;
|
|
- // inverse of r mod n
|
|
- final BigInteger rInv;
|
|
- // how many more times this parameter object can be used
|
|
- private volatile int remainingUses;
|
|
- BlindingParameters(BigInteger e, BigInteger re, BigInteger rInv) {
|
|
+ private final static class BlindingParameters {
|
|
+ private final static BigInteger BIG_TWO = BigInteger.valueOf(2L);
|
|
+
|
|
+ // RSA public exponent
|
|
+ private final BigInteger e;
|
|
+
|
|
+ // hash code of RSA private exponent
|
|
+ private final BigInteger d;
|
|
+
|
|
+ // r ^ e mod n (CRT), or r mod n (Non-CRT)
|
|
+ private BigInteger u;
|
|
+
|
|
+ // r ^ (-1) mod n (CRT) , or ((r ^ (-1)) ^ d) mod n (Non-CRT)
|
|
+ private BigInteger v;
|
|
+
|
|
+ // e: the public exponent
|
|
+ // d: the private exponent
|
|
+ // n: the modulus
|
|
+ BlindingParameters(BigInteger e, BigInteger d, BigInteger n) {
|
|
+ this.u = null;
|
|
+ this.v = null;
|
|
this.e = e;
|
|
- this.re = re;
|
|
- this.rInv = rInv;
|
|
- // initialize remaining uses, subtract current use now
|
|
- remainingUses = BLINDING_MAX_REUSE - 1;
|
|
+ this.d = d;
|
|
+
|
|
+ int len = n.bitLength();
|
|
+ SecureRandom random = JCAUtil.getSecureRandom();
|
|
+ u = new BigInteger(len, random).mod(n);
|
|
+ // Although the possibility is very much limited that u is zero
|
|
+ // or is not relatively prime to n, we still want to be careful
|
|
+ // about the special value.
|
|
+ //
|
|
+ // Secure random generation is expensive, try to use BigInteger.ONE
|
|
+ // this time if this new generated random number is zero or is not
|
|
+ // relatively prime to n. Next time, new generated secure random
|
|
+ // number will be used instead.
|
|
+ if (u.equals(BigInteger.ZERO)) {
|
|
+ u = BigInteger.ONE; // use 1 this time
|
|
+ }
|
|
+
|
|
+ try {
|
|
+ // The call to BigInteger.modInverse() checks that u is
|
|
+ // relatively prime to n. Otherwise, ArithmeticException is
|
|
+ // thrown.
|
|
+ v = u.modInverse(n);
|
|
+ } catch (ArithmeticException ae) {
|
|
+ // if u is not relatively prime to n, use 1 this time
|
|
+ u = BigInteger.ONE;
|
|
+ v = BigInteger.ONE;
|
|
+ }
|
|
+
|
|
+ if (e != null) {
|
|
+ u = u.modPow(e, n); // e: the public exponent
|
|
+ // u: random ^ e
|
|
+ // v: random ^ (-1)
|
|
+ } else {
|
|
+ v = v.modPow(d, n); // d: the private exponent
|
|
+ // u: random
|
|
+ // v: random ^ (-d)
|
|
+ }
|
|
}
|
|
- boolean valid(BigInteger e) {
|
|
- int k = remainingUses--;
|
|
- return (k > 0) && this.e.equals(e);
|
|
+
|
|
+ // return null if need to reset the parameters
|
|
+ BlindingRandomPair getBlindingRandomPair(
|
|
+ BigInteger e, BigInteger d, BigInteger n) {
|
|
+
|
|
+ if ((this.e != null && this.e.equals(e)) ||
|
|
+ (this.d != null && this.d.equals(d))) {
|
|
+
|
|
+ BlindingRandomPair brp = null;
|
|
+ synchronized (this) {
|
|
+ if (!u.equals(BigInteger.ZERO) &&
|
|
+ !v.equals(BigInteger.ZERO)) {
|
|
+
|
|
+ brp = new BlindingRandomPair(u, v);
|
|
+ if (u.compareTo(BigInteger.ONE) <= 0 ||
|
|
+ v.compareTo(BigInteger.ONE) <= 0) {
|
|
+
|
|
+ // need to reset the random pair next time
|
|
+ u = BigInteger.ZERO;
|
|
+ v = BigInteger.ZERO;
|
|
+ } else {
|
|
+ u = u.modPow(BIG_TWO, n);
|
|
+ v = v.modPow(BIG_TWO, n);
|
|
+ }
|
|
+ } // Otherwise, need to reset the random pair.
|
|
+ }
|
|
+ return brp;
|
|
+ }
|
|
+
|
|
+ return null;
|
|
}
|
|
}
|
|
|
|
- /**
|
|
- * Return valid RSA blinding parameters for the given private key.
|
|
- * Use cached parameters if available. If not, generate new parameters
|
|
- * and cache.
|
|
- */
|
|
- private static BlindingParameters getBlindingParameters
|
|
- (RSAPrivateCrtKey key) {
|
|
- BigInteger modulus = key.getModulus();
|
|
- BigInteger e = key.getPublicExponent();
|
|
- BlindingParameters params;
|
|
- // we release the lock between get() and put()
|
|
- // that means threads might concurrently generate new blinding
|
|
- // parameters for the same modulus. this is only a slight waste
|
|
- // of cycles and seems preferable in terms of scalability
|
|
- // to locking out all threads while generating new parameters
|
|
+ private static BlindingRandomPair getBlindingRandomPair(
|
|
+ BigInteger e, BigInteger d, BigInteger n) {
|
|
+
|
|
+ BlindingParameters bps = null;
|
|
synchronized (blindingCache) {
|
|
- params = blindingCache.get(modulus);
|
|
+ bps = blindingCache.get(n);
|
|
}
|
|
- if ((params != null) && params.valid(e)) {
|
|
- return params;
|
|
+
|
|
+ if (bps == null) {
|
|
+ bps = new BlindingParameters(e, d, n);
|
|
+ synchronized (blindingCache) {
|
|
+ blindingCache.putIfAbsent(n, bps);
|
|
+ }
|
|
}
|
|
- int len = modulus.bitLength();
|
|
- SecureRandom random = JCAUtil.getSecureRandom();
|
|
- BigInteger r = new BigInteger(len, random).mod(modulus);
|
|
- BigInteger re = r.modPow(e, modulus);
|
|
- BigInteger rInv = r.modInverse(modulus);
|
|
- params = new BlindingParameters(e, re, rInv);
|
|
- synchronized (blindingCache) {
|
|
- blindingCache.put(modulus, params);
|
|
+
|
|
+ BlindingRandomPair brp = bps.getBlindingRandomPair(e, d, n);
|
|
+ if (brp == null) {
|
|
+ // need to reset the blinding parameters
|
|
+ bps = new BlindingParameters(e, d, n);
|
|
+ synchronized (blindingCache) {
|
|
+ blindingCache.replace(n, bps);
|
|
+ }
|
|
+ brp = bps.getBlindingRandomPair(e, d, n);
|
|
}
|
|
- return params;
|
|
+
|
|
+ return brp;
|
|
}
|
|
|
|
}
|
|
--- jdk/src/share/classes/sun/security/util/KeyUtil.java Wed Mar 12 11:58:14 2014 +0000
|
|
+++ jdk/src/share/classes/sun/security/util/KeyUtil.java Tue Jun 03 14:19:36 2014 -0700
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved.
|
|
+ * Copyright (c) 2012, 2014, Oracle and/or its affiliates. All rights reserved.
|
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
|
*
|
|
* This code is free software; you can redistribute it and/or modify it
|
|
@@ -198,7 +198,16 @@
|
|
"Diffie-Hellman public key is too large");
|
|
}
|
|
|
|
- // Don't bother to check against the y^q mod p if safe primes are used.
|
|
+ // y^q mod p == 1?
|
|
+ // Unable to perform this check as q is unknown in this circumstance.
|
|
+
|
|
+ // p is expected to be prime. However, it is too expensive to check
|
|
+ // that p is prime. Instead, in order to mitigate the impact of
|
|
+ // non-prime values, we check that y is not a factor of p.
|
|
+ BigInteger r = p.remainder(y);
|
|
+ if (r.equals(BigInteger.ZERO)) {
|
|
+ throw new InvalidKeyException("Invalid Diffie-Hellman parameters");
|
|
+ }
|
|
}
|
|
|
|
/**
|
|
--- jdk/src/share/classes/sun/util/resources/TimeZoneNames.java Wed Mar 12 11:58:14 2014 +0000
|
|
+++ jdk/src/share/classes/sun/util/resources/TimeZoneNames.java Tue Jun 03 14:19:36 2014 -0700
|
|
@@ -570,6 +570,9 @@
|
|
{"Antarctica/Syowa", new String[] {"Syowa Time", "SYOT",
|
|
"Syowa Summer Time", "SYOST",
|
|
"Syowa Time", "SYOT"}},
|
|
+ {"Antarctica/Troll", new String[] {"Coordinated Universal Time", "UTC",
|
|
+ "Central European Summer Time", "CEST",
|
|
+ "Troll Time", "ATT"}},
|
|
{"Antarctica/Vostok", new String[] {"Vostok Time", "VOST",
|
|
"Vostok Summer Time", "VOSST",
|
|
"Vostok Time", "VOST"}},
|
|
@@ -839,7 +842,7 @@
|
|
"Samara Time", "SAMT"}},
|
|
{"Europe/San_Marino", CET},
|
|
{"Europe/Sarajevo", CET},
|
|
- {"Europe/Simferopol", EET},
|
|
+ {"Europe/Simferopol", MSK},
|
|
{"Europe/Skopje", CET},
|
|
{"Europe/Sofia", EET},
|
|
{"Europe/Stockholm", CET},
|
|
--- jdk/src/share/classes/sun/util/resources/de/TimeZoneNames_de.java Wed Mar 12 11:58:14 2014 +0000
|
|
+++ jdk/src/share/classes/sun/util/resources/de/TimeZoneNames_de.java Tue Jun 03 14:19:36 2014 -0700
|
|
@@ -570,6 +570,9 @@
|
|
{"Antarctica/Syowa", new String[] {"Syowa Zeit", "SYOT",
|
|
"Syowa Sommerzeit", "SYOST",
|
|
"Syowa Zeit", "SYOT"}},
|
|
+ {"Antarctica/Troll", new String[] {"Koordinierte Universalzeit", "UTC",
|
|
+ "Mitteleurop\u00e4ische Sommerzeit", "MESZ",
|
|
+ "Troll Time", "ATT"}},
|
|
{"Antarctica/Vostok", new String[] {"Vostok Zeit", "VOST",
|
|
"Vostok Sommerzeit", "VOSST",
|
|
"Vostok Zeit", "VOST"}},
|
|
@@ -838,7 +841,7 @@
|
|
"Samarische Zeit", "SAMT"}},
|
|
{"Europe/San_Marino", CET},
|
|
{"Europe/Sarajevo", CET},
|
|
- {"Europe/Simferopol", EET},
|
|
+ {"Europe/Simferopol", MSK},
|
|
{"Europe/Skopje", CET},
|
|
{"Europe/Sofia", EET},
|
|
{"Europe/Stockholm", CET},
|
|
--- jdk/src/share/classes/sun/util/resources/es/TimeZoneNames_es.java Wed Mar 12 11:58:14 2014 +0000
|
|
+++ jdk/src/share/classes/sun/util/resources/es/TimeZoneNames_es.java Tue Jun 03 14:19:36 2014 -0700
|
|
@@ -570,6 +570,9 @@
|
|
{"Antarctica/Syowa", new String[] {"Hora de Syowa", "SYOT",
|
|
"Hora de verano de Syowa", "SYOST",
|
|
"Hora de Syowa", "SYOT"}},
|
|
+ {"Antarctica/Troll", new String[] {"Hora Universal Coordinada", "UTC",
|
|
+ "Hora de verano de Europa Central", "CEST",
|
|
+ "Troll Time", "ATT"}},
|
|
{"Antarctica/Vostok", new String[] {"Hora de Vostok", "VOST",
|
|
"Hora de verano de Vostok", "VOSST",
|
|
"Hora de Vostok", "VOST"}},
|
|
@@ -838,7 +841,7 @@
|
|
"Hora de Samara", "SAMT"}},
|
|
{"Europe/San_Marino", CET},
|
|
{"Europe/Sarajevo", CET},
|
|
- {"Europe/Simferopol", EET},
|
|
+ {"Europe/Simferopol", MSK},
|
|
{"Europe/Skopje", CET},
|
|
{"Europe/Sofia", EET},
|
|
{"Europe/Stockholm", CET},
|
|
--- jdk/src/share/classes/sun/util/resources/fr/TimeZoneNames_fr.java Wed Mar 12 11:58:14 2014 +0000
|
|
+++ jdk/src/share/classes/sun/util/resources/fr/TimeZoneNames_fr.java Tue Jun 03 14:19:36 2014 -0700
|
|
@@ -570,6 +570,9 @@
|
|
{"Antarctica/Syowa", new String[] {"Heure de Syowa", "SYOT",
|
|
"Heure d'\u00e9t\u00e9 de Syowa", "SYOST",
|
|
"Heure de Syowa", "SYOT"}},
|
|
+ {"Antarctica/Troll", new String[] {"Temps universel coordonn\u00e9", "UTC",
|
|
+ "Heure d'\u00e9t\u00e9 d'Europe centrale", "CEST",
|
|
+ "Troll Time", "ATT"}},
|
|
{"Antarctica/Vostok", new String[] {"Heure de Vostok", "VOST",
|
|
"Heure d'\u00e9t\u00e9 de Vostok", "VOSST",
|
|
"Heure de Vostok", "VOST"}},
|
|
@@ -838,7 +841,7 @@
|
|
"Heure de Samara", "SAMT"}},
|
|
{"Europe/San_Marino", CET},
|
|
{"Europe/Sarajevo", CET},
|
|
- {"Europe/Simferopol", EET},
|
|
+ {"Europe/Simferopol", MSK},
|
|
{"Europe/Skopje", CET},
|
|
{"Europe/Sofia", EET},
|
|
{"Europe/Stockholm", CET},
|
|
--- jdk/src/share/classes/sun/util/resources/it/TimeZoneNames_it.java Wed Mar 12 11:58:14 2014 +0000
|
|
+++ jdk/src/share/classes/sun/util/resources/it/TimeZoneNames_it.java Tue Jun 03 14:19:36 2014 -0700
|
|
@@ -570,6 +570,9 @@
|
|
{"Antarctica/Syowa", new String[] {"Ora di Syowa", "SYOT",
|
|
"Ora estiva di Syowa", "SYOST",
|
|
"Ora di Syowa", "SYOT"}},
|
|
+ {"Antarctica/Troll", new String[] {"Tempo universale coordinato", "UTC",
|
|
+ "Ora estiva dell'Europa centrale", "CEST",
|
|
+ "Troll Time", "ATT"}},
|
|
{"Antarctica/Vostok", new String[] {"Ora di Vostok", "VOST",
|
|
"Ora estiva di Vostok", "VOSST",
|
|
"Ora di Vostok", "VOST"}},
|
|
@@ -838,7 +841,7 @@
|
|
"Ora di Samara", "SAMT"}},
|
|
{"Europe/San_Marino", CET},
|
|
{"Europe/Sarajevo", CET},
|
|
- {"Europe/Simferopol", EET},
|
|
+ {"Europe/Simferopol", MSK},
|
|
{"Europe/Skopje", CET},
|
|
{"Europe/Sofia", EET},
|
|
{"Europe/Stockholm", CET},
|
|
--- jdk/src/share/classes/sun/util/resources/ja/TimeZoneNames_ja.java Wed Mar 12 11:58:14 2014 +0000
|
|
+++ jdk/src/share/classes/sun/util/resources/ja/TimeZoneNames_ja.java Tue Jun 03 14:19:36 2014 -0700
|
|
@@ -570,6 +570,9 @@
|
|
{"Antarctica/Syowa", new String[] {"\u662d\u548c\u57fa\u5730\u6642\u9593", "SYOT",
|
|
"\u662d\u548c\u57fa\u5730\u590f\u6642\u9593", "SYOST",
|
|
"\u662D\u548C\u57FA\u5730\u6642\u9593", "SYOT"}},
|
|
+ {"Antarctica/Troll", new String[] {"\u5354\u5b9a\u4e16\u754c\u6642", "UTC",
|
|
+ "\u4e2d\u90e8\u30e8\u30fc\u30ed\u30c3\u30d1\u590f\u6642\u9593", "CEST",
|
|
+ "Troll Time", "ATT"}},
|
|
{"Antarctica/Vostok", new String[] {"\u30dc\u30b9\u30c8\u30fc\u30af\u57fa\u5730\u6642\u9593", "VOST",
|
|
"\u30dc\u30b9\u30c8\u30fc\u30af\u57fa\u5730\u590f\u6642\u9593", "VOSST",
|
|
"\u30DC\u30B9\u30C8\u30FC\u30AF\u6642\u9593", "VOST"}},
|
|
@@ -838,7 +841,7 @@
|
|
"\u30B5\u30DE\u30E9\u6642\u9593", "SAMT"}},
|
|
{"Europe/San_Marino", CET},
|
|
{"Europe/Sarajevo", CET},
|
|
- {"Europe/Simferopol", EET},
|
|
+ {"Europe/Simferopol", MSK},
|
|
{"Europe/Skopje", CET},
|
|
{"Europe/Sofia", EET},
|
|
{"Europe/Stockholm", CET},
|
|
--- jdk/src/share/classes/sun/util/resources/ko/TimeZoneNames_ko.java Wed Mar 12 11:58:14 2014 +0000
|
|
+++ jdk/src/share/classes/sun/util/resources/ko/TimeZoneNames_ko.java Tue Jun 03 14:19:36 2014 -0700
|
|
@@ -570,6 +570,9 @@
|
|
{"Antarctica/Syowa", new String[] {"Syowa \uc2dc\uac04", "SYOT",
|
|
"Syowa \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "SYOST",
|
|
"\uC1FC\uC640 \uD45C\uC900\uC2DC", "SYOT"}},
|
|
+ {"Antarctica/Troll", new String[] {"\uc138\uacc4 \ud45c\uc900\uc2dc", "UTC",
|
|
+ "\uc911\uc559 \uc720\ub7fd \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "CEST",
|
|
+ "Troll Time", "ATT"}},
|
|
{"Antarctica/Vostok", new String[] {"Vostok \uc2dc\uac04", "VOST",
|
|
"Vostok \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "VOSST",
|
|
"\uBCF4\uC2A4\uD1A1 \uD45C\uC900\uC2DC", "VOST"}},
|
|
@@ -838,7 +841,7 @@
|
|
"\uC0AC\uB9C8\uB77C \uD45C\uC900\uC2DC", "SAMT"}},
|
|
{"Europe/San_Marino", CET},
|
|
{"Europe/Sarajevo", CET},
|
|
- {"Europe/Simferopol", EET},
|
|
+ {"Europe/Simferopol", MSK},
|
|
{"Europe/Skopje", CET},
|
|
{"Europe/Sofia", EET},
|
|
{"Europe/Stockholm", CET},
|
|
--- jdk/src/share/classes/sun/util/resources/pt/TimeZoneNames_pt_BR.java Wed Mar 12 11:58:14 2014 +0000
|
|
+++ jdk/src/share/classes/sun/util/resources/pt/TimeZoneNames_pt_BR.java Tue Jun 03 14:19:36 2014 -0700
|
|
@@ -570,6 +570,9 @@
|
|
{"Antarctica/Syowa", new String[] {"Fuso hor\u00e1rio de Syowa", "SYOT",
|
|
"Fuso hor\u00e1rio de ver\u00e3o de Syowa", "SYOST",
|
|
"Hor\u00E1rio de Syowa", "SYOT"}},
|
|
+ {"Antarctica/Troll", new String[] {"Tempo universal coordenado", "UTC",
|
|
+ "Fuso hor\u00e1rio de ver\u00e3o da Europa Central", "CEST",
|
|
+ "Troll Time", "ATT"}},
|
|
{"Antarctica/Vostok", new String[] {"Fuso hor\u00e1rio de Vostok", "VOST",
|
|
"Fuso hor\u00e1rio de ver\u00e3o de Vostok", "VOSST",
|
|
"Hor\u00E1rio de Vostok", "VOST"}},
|
|
@@ -838,7 +841,7 @@
|
|
"Hor\u00E1rio de Samara", "SAMT"}},
|
|
{"Europe/San_Marino", CET},
|
|
{"Europe/Sarajevo", CET},
|
|
- {"Europe/Simferopol", EET},
|
|
+ {"Europe/Simferopol", MSK},
|
|
{"Europe/Skopje", CET},
|
|
{"Europe/Sofia", EET},
|
|
{"Europe/Stockholm", CET},
|
|
--- jdk/src/share/classes/sun/util/resources/sv/TimeZoneNames_sv.java Wed Mar 12 11:58:14 2014 +0000
|
|
+++ jdk/src/share/classes/sun/util/resources/sv/TimeZoneNames_sv.java Tue Jun 03 14:19:36 2014 -0700
|
|
@@ -570,6 +570,9 @@
|
|
{"Antarctica/Syowa", new String[] {"Syowa, normaltid", "SYOT",
|
|
"Syowa, sommartid", "SYOST",
|
|
"Syowa-tid", "SYOT"}},
|
|
+ {"Antarctica/Troll", new String[] {"Koordinerad universell tid", "UTC",
|
|
+ "Centraleuropeisk sommartid", "CEST",
|
|
+ "Troll Time", "ATT"}},
|
|
{"Antarctica/Vostok", new String[] {"Vostok, normaltid", "VOST",
|
|
"Vostok, sommartid", "VOSST",
|
|
"Vostok-tid", "VOST"}},
|
|
@@ -838,7 +841,7 @@
|
|
"Samara-tid", "SAMT"}},
|
|
{"Europe/San_Marino", CET},
|
|
{"Europe/Sarajevo", CET},
|
|
- {"Europe/Simferopol", EET},
|
|
+ {"Europe/Simferopol", MSK},
|
|
{"Europe/Skopje", CET},
|
|
{"Europe/Sofia", EET},
|
|
{"Europe/Stockholm", CET},
|
|
--- jdk/src/share/classes/sun/util/resources/zh/TimeZoneNames_zh_CN.java Wed Mar 12 11:58:14 2014 +0000
|
|
+++ jdk/src/share/classes/sun/util/resources/zh/TimeZoneNames_zh_CN.java Tue Jun 03 14:19:36 2014 -0700
|
|
@@ -570,6 +570,9 @@
|
|
{"Antarctica/Syowa", new String[] {"Syowa \u65f6\u95f4", "SYOT",
|
|
"Syowa \u590f\u4ee4\u65f6", "SYOST",
|
|
"Syowa \u65F6\u95F4", "SYOT"}},
|
|
+ {"Antarctica/Troll", new String[] {"\u534f\u8c03\u4e16\u754c\u65f6\u95f4", "UTC",
|
|
+ "\u4e2d\u6b27\u590f\u4ee4\u65f6", "CEST",
|
|
+ "Troll Time", "ATT"}},
|
|
{"Antarctica/Vostok", new String[] {"\u83ab\u65af\u6258\u514b\u65f6\u95f4", "VOST",
|
|
"\u83ab\u65af\u6258\u514b\u590f\u4ee4\u65f6", "VOSST",
|
|
"\u83AB\u65AF\u6258\u514B\u65F6\u95F4", "VOST"}},
|
|
@@ -838,7 +841,7 @@
|
|
"\u6C99\u9A6C\u62C9\u65F6\u95F4", "SAMT"}},
|
|
{"Europe/San_Marino", CET},
|
|
{"Europe/Sarajevo", CET},
|
|
- {"Europe/Simferopol", EET},
|
|
+ {"Europe/Simferopol", MSK},
|
|
{"Europe/Skopje", CET},
|
|
{"Europe/Sofia", EET},
|
|
{"Europe/Stockholm", CET},
|
|
--- jdk/src/share/classes/sun/util/resources/zh/TimeZoneNames_zh_TW.java Wed Mar 12 11:58:14 2014 +0000
|
|
+++ jdk/src/share/classes/sun/util/resources/zh/TimeZoneNames_zh_TW.java Tue Jun 03 14:19:36 2014 -0700
|
|
@@ -570,6 +570,9 @@
|
|
{"Antarctica/Syowa", new String[] {"\u5915\u6b50\u74e6 (Syowa) \u6642\u9593", "SYOT",
|
|
"\u5915\u6b50\u74e6 (Syowa) \u590f\u4ee4\u6642\u9593", "SYOST",
|
|
"\u5915\u6B50\u74E6 (Syowa) \u6642\u9593", "SYOT"}},
|
|
+ {"Antarctica/Troll", new String[] {"\u5354\u8abf\u4e16\u754c\u6642\u9593", "UTC",
|
|
+ "\u4e2d\u6b50\u590f\u4ee4\u6642\u9593", "CEST",
|
|
+ "Troll Time", "ATT"}},
|
|
{"Antarctica/Vostok", new String[] {"\u4f5b\u65af\u6258 (Vostok) \u6642\u9593", "VOST",
|
|
"\u4f5b\u65af\u6258 (Vostok) \u590f\u4ee4\u6642\u9593", "VOSST",
|
|
"\u4F5B\u65AF\u6258 (Vostok) \u6642\u9593", "VOST"}},
|
|
@@ -840,7 +843,7 @@
|
|
"\u6C99\u99AC\u62C9\u6642\u9593", "SAMT"}},
|
|
{"Europe/San_Marino", CET},
|
|
{"Europe/Sarajevo", CET},
|
|
- {"Europe/Simferopol", EET},
|
|
+ {"Europe/Simferopol", MSK},
|
|
{"Europe/Skopje", CET},
|
|
{"Europe/Sofia", EET},
|
|
{"Europe/Stockholm", CET},
|
|
--- jdk/src/share/lib/security/java.security-linux Wed Mar 12 11:58:14 2014 +0000
|
|
+++ jdk/src/share/lib/security/java.security-linux Tue Jun 03 14:19:36 2014 -0700
|
|
@@ -210,8 +210,8 @@
|
|
org.jcp.xml.dsig.internal.,\
|
|
jdk.internal.,\
|
|
jdk.nashorn.internal.,\
|
|
- jdk.nashorn.tools.
|
|
-
|
|
+ jdk.nashorn.tools.,\
|
|
+ com.sun.activation.registries.
|
|
|
|
#
|
|
# List of comma-separated packages that start with or equal this string
|
|
@@ -257,8 +257,8 @@
|
|
org.jcp.xml.dsig.internal.,\
|
|
jdk.internal.,\
|
|
jdk.nashorn.internal.,\
|
|
- jdk.nashorn.tools.
|
|
-
|
|
+ jdk.nashorn.tools.,\
|
|
+ com.sun.activation.registries.
|
|
|
|
#
|
|
# Determines whether this properties file can be appended to
|
|
--- jdk/src/share/lib/security/java.security-macosx Wed Mar 12 11:58:14 2014 +0000
|
|
+++ jdk/src/share/lib/security/java.security-macosx Tue Jun 03 14:19:36 2014 -0700
|
|
@@ -212,6 +212,7 @@
|
|
jdk.internal.,\
|
|
jdk.nashorn.internal.,\
|
|
jdk.nashorn.tools.,\
|
|
+ com.sun.activation.registries.,\
|
|
apple.
|
|
|
|
#
|
|
@@ -259,6 +260,7 @@
|
|
jdk.internal.,\
|
|
jdk.nashorn.internal.,\
|
|
jdk.nashorn.tools.,\
|
|
+ com.sun.activation.registries.,\
|
|
apple.
|
|
|
|
#
|
|
--- jdk/src/share/lib/security/java.security-solaris Wed Mar 12 11:58:14 2014 +0000
|
|
+++ jdk/src/share/lib/security/java.security-solaris Tue Jun 03 14:19:36 2014 -0700
|
|
@@ -212,7 +212,8 @@
|
|
org.jcp.xml.dsig.internal.,\
|
|
jdk.internal.,\
|
|
jdk.nashorn.internal.,\
|
|
- jdk.nashorn.tools.
|
|
+ jdk.nashorn.tools.,\
|
|
+ com.sun.activation.registries.
|
|
|
|
#
|
|
# List of comma-separated packages that start with or equal this string
|
|
@@ -258,7 +259,8 @@
|
|
org.jcp.xml.dsig.internal.,\
|
|
jdk.internal.,\
|
|
jdk.nashorn.internal.,\
|
|
- jdk.nashorn.tools.
|
|
+ jdk.nashorn.tools.,\
|
|
+ com.sun.activation.registries.
|
|
|
|
#
|
|
# Determines whether this properties file can be appended to
|
|
--- jdk/src/share/lib/security/java.security-windows Wed Mar 12 11:58:14 2014 +0000
|
|
+++ jdk/src/share/lib/security/java.security-windows Tue Jun 03 14:19:36 2014 -0700
|
|
@@ -212,6 +212,7 @@
|
|
jdk.internal.,\
|
|
jdk.nashorn.internal.,\
|
|
jdk.nashorn.tools.,\
|
|
+ com.sun.activation.registries.,\
|
|
com.sun.java.accessibility.
|
|
|
|
#
|
|
@@ -259,6 +260,7 @@
|
|
jdk.internal.,\
|
|
jdk.nashorn.internal.,\
|
|
jdk.nashorn.tools.,\
|
|
+ com.sun.activation.registries.,\
|
|
com.sun.java.accessibility.
|
|
|
|
#
|
|
--- jdk/src/share/native/com/sun/java/util/jar/pack/defines.h Wed Mar 12 11:58:14 2014 +0000
|
|
+++ jdk/src/share/native/com/sun/java/util/jar/pack/defines.h Tue Jun 03 14:19:36 2014 -0700
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
|
|
+ * Copyright (c) 2001, 2014, Oracle and/or its affiliates. All rights reserved.
|
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
|
*
|
|
* This code is free software; you can redistribute it and/or modify it
|
|
@@ -79,6 +79,7 @@
|
|
#define ERROR_RESOURCE "Cannot extract resource file"
|
|
#define ERROR_OVERFLOW "Internal buffer overflow"
|
|
#define ERROR_INTERNAL "Internal error"
|
|
+#define ERROR_INIT "cannot init class members"
|
|
|
|
#define LOGFILE_STDOUT "-"
|
|
#define LOGFILE_STDERR ""
|
|
--- jdk/src/share/native/com/sun/java/util/jar/pack/jni.cpp Wed Mar 12 11:58:14 2014 +0000
|
|
+++ jdk/src/share/native/com/sun/java/util/jar/pack/jni.cpp Tue Jun 03 14:19:36 2014 -0700
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
|
|
+ * Copyright (c) 2003, 2014, Oracle and/or its affiliates. All rights reserved.
|
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
|
*
|
|
* This code is free software; you can redistribute it and/or modify it
|
|
@@ -56,6 +56,45 @@
|
|
|
|
#define THROW_IOE(x) JNU_ThrowIOException(env,x)
|
|
|
|
+#define CHECK_EXCEPTION_RETURN_VOID_THROW_IOE(CERVTI_exception, CERVTI_message) \
|
|
+ do { \
|
|
+ if ((env)->ExceptionOccurred()) { \
|
|
+ THROW_IOE(CERVTI_message); \
|
|
+ return; \
|
|
+ } \
|
|
+ if ((CERVTI_exception) == NULL) { \
|
|
+ THROW_IOE(CERVTI_message); \
|
|
+ return; \
|
|
+ } \
|
|
+ } while (JNI_FALSE)
|
|
+
|
|
+
|
|
+#define CHECK_EXCEPTION_RETURN_VALUE(CERL_exception, CERL_return_value) \
|
|
+ do { \
|
|
+ if ((env)->ExceptionOccurred()) { \
|
|
+ return CERL_return_value; \
|
|
+ } \
|
|
+ if ((CERL_exception) == NULL) { \
|
|
+ return CERL_return_value; \
|
|
+ } \
|
|
+ } while (JNI_FALSE)
|
|
+
|
|
+
|
|
+// If these useful macros aren't defined in jni_util.h then define them here
|
|
+#ifndef CHECK_NULL_RETURN
|
|
+#define CHECK_NULL_RETURN(x, y) \
|
|
+ do { \
|
|
+ if ((x) == NULL) return (y); \
|
|
+ } while (JNI_FALSE)
|
|
+#endif
|
|
+
|
|
+#ifndef CHECK_EXCEPTION_RETURN
|
|
+#define CHECK_EXCEPTION_RETURN(env, y) \
|
|
+ do { \
|
|
+ if ((*env)->ExceptionCheck(env)) return (y); \
|
|
+ } while (JNI_FALSE)
|
|
+#endif
|
|
+
|
|
static jlong read_input_via_jni(unpacker* self,
|
|
void* buf, jlong minlen, jlong maxlen);
|
|
|
|
@@ -92,9 +131,11 @@
|
|
vm->GetEnv(&envRaw, JNI_VERSION_1_1);
|
|
JNIEnv* env = (JNIEnv*) envRaw;
|
|
//fprintf(stderr, "get_unpacker() env=%p\n", env);
|
|
- if (env == null)
|
|
- return null;
|
|
+ CHECK_NULL_RETURN(env, NULL);
|
|
jobject pObj = env->CallStaticObjectMethod(NIclazz, currentInstMID);
|
|
+ // We should check upon the known non-null variable because here we want to check
|
|
+ // only for pending exceptions. If pObj is null we'll deal with it later.
|
|
+ CHECK_EXCEPTION_RETURN_VALUE(env, NULL);
|
|
//fprintf(stderr, "get_unpacker0() pObj=%p\n", pObj);
|
|
if (pObj != null) {
|
|
// Got pObj and env; now do it the easy way.
|
|
@@ -137,20 +178,20 @@
|
|
while( dbg != null) { sleep(10); }
|
|
#endif
|
|
NIclazz = (jclass) env->NewGlobalRef(clazz);
|
|
+
|
|
unpackerPtrFID = env->GetFieldID(clazz, "unpackerPtr", "J");
|
|
+ CHECK_EXCEPTION_RETURN_VOID_THROW_IOE(unpackerPtrFID, ERROR_INIT);
|
|
+
|
|
currentInstMID = env->GetStaticMethodID(clazz, "currentInstance",
|
|
"()Ljava/lang/Object;");
|
|
+ CHECK_EXCEPTION_RETURN_VOID_THROW_IOE(currentInstMID, ERROR_INIT);
|
|
+
|
|
readInputMID = env->GetMethodID(clazz, "readInputFn",
|
|
"(Ljava/nio/ByteBuffer;J)J");
|
|
+ CHECK_EXCEPTION_RETURN_VOID_THROW_IOE(readInputMID, ERROR_INIT);
|
|
+
|
|
getUnpackerPtrMID = env->GetMethodID(clazz, "getUnpackerPtr", "()J");
|
|
-
|
|
- if (unpackerPtrFID == null ||
|
|
- currentInstMID == null ||
|
|
- readInputMID == null ||
|
|
- NIclazz == null ||
|
|
- getUnpackerPtrMID == null) {
|
|
- THROW_IOE("cannot init class members");
|
|
- }
|
|
+ CHECK_EXCEPTION_RETURN_VOID_THROW_IOE(getUnpackerPtrMID, ERROR_INIT);
|
|
}
|
|
|
|
JNIEXPORT jlong JNICALL
|
|
@@ -160,9 +201,7 @@
|
|
// valid object pointers and env is intact, if not now is good time to bail.
|
|
unpacker* uPtr = get_unpacker();
|
|
//fprintf(stderr, "start(%p) uPtr=%p initializing\n", pObj, uPtr);
|
|
- if (uPtr == null) {
|
|
- return -1;
|
|
- }
|
|
+ CHECK_EXCEPTION_RETURN_VALUE(uPtr, -1);
|
|
// redirect our io to the default log file or whatever.
|
|
uPtr->redirect_stdio();
|
|
|
|
@@ -200,6 +239,7 @@
|
|
jobjectArray pParts) {
|
|
|
|
unpacker* uPtr = get_unpacker(env, pObj);
|
|
+ CHECK_EXCEPTION_RETURN_VALUE(uPtr, false);
|
|
unpacker::file* filep = uPtr->get_next_file();
|
|
|
|
if (uPtr->aborting()) {
|
|
@@ -207,32 +247,38 @@
|
|
return false;
|
|
}
|
|
|
|
- if (filep == null) {
|
|
- return false; // end of the sequence
|
|
- }
|
|
+ CHECK_NULL_RETURN(filep, false);
|
|
assert(filep == &uPtr->cur_file);
|
|
|
|
int pidx = 0, iidx = 0;
|
|
jintArray pIntParts = (jintArray) env->GetObjectArrayElement(pParts, pidx++);
|
|
+ CHECK_EXCEPTION_RETURN_VALUE(pIntParts, false);
|
|
jint* intParts = env->GetIntArrayElements(pIntParts, null);
|
|
intParts[iidx++] = (jint)( (julong)filep->size >> 32 );
|
|
intParts[iidx++] = (jint)( (julong)filep->size >> 0 );
|
|
intParts[iidx++] = filep->modtime;
|
|
intParts[iidx++] = filep->deflate_hint() ? 1 : 0;
|
|
env->ReleaseIntArrayElements(pIntParts, intParts, JNI_COMMIT);
|
|
-
|
|
- env->SetObjectArrayElement(pParts, pidx++, env->NewStringUTF(filep->name));
|
|
-
|
|
+ jstring filename = env->NewStringUTF(filep->name);
|
|
+ CHECK_EXCEPTION_RETURN_VALUE(filename, false);
|
|
+ env->SetObjectArrayElement(pParts, pidx++, filename);
|
|
+ CHECK_EXCEPTION_RETURN_VALUE(uPtr, false);
|
|
jobject pDataBuf = null;
|
|
- if (filep->data[0].len > 0)
|
|
+ if (filep->data[0].len > 0) {
|
|
pDataBuf = env->NewDirectByteBuffer(filep->data[0].ptr,
|
|
filep->data[0].len);
|
|
+ CHECK_EXCEPTION_RETURN_VALUE(pDataBuf, false);
|
|
+ }
|
|
env->SetObjectArrayElement(pParts, pidx++, pDataBuf);
|
|
+ CHECK_EXCEPTION_RETURN_VALUE(uPtr, false);
|
|
pDataBuf = null;
|
|
- if (filep->data[1].len > 0)
|
|
+ if (filep->data[1].len > 0) {
|
|
pDataBuf = env->NewDirectByteBuffer(filep->data[1].ptr,
|
|
filep->data[1].len);
|
|
+ CHECK_EXCEPTION_RETURN_VALUE(pDataBuf, false);
|
|
+ }
|
|
env->SetObjectArrayElement(pParts, pidx++, pDataBuf);
|
|
+ CHECK_EXCEPTION_RETURN_VALUE(uPtr, false);
|
|
|
|
return true;
|
|
}
|
|
@@ -241,6 +287,7 @@
|
|
JNIEXPORT jobject JNICALL
|
|
Java_com_sun_java_util_jar_pack_NativeUnpack_getUnusedInput(JNIEnv *env, jobject pObj) {
|
|
unpacker* uPtr = get_unpacker(env, pObj);
|
|
+ CHECK_EXCEPTION_RETURN_VALUE(uPtr, NULL);
|
|
unpacker::file* filep = &uPtr->cur_file;
|
|
|
|
if (uPtr->aborting()) {
|
|
@@ -263,7 +310,7 @@
|
|
JNIEXPORT jlong JNICALL
|
|
Java_com_sun_java_util_jar_pack_NativeUnpack_finish(JNIEnv *env, jobject pObj) {
|
|
unpacker* uPtr = get_unpacker(env, pObj, false);
|
|
- if (uPtr == null) return 0;
|
|
+ CHECK_EXCEPTION_RETURN_VALUE(uPtr, NULL);
|
|
size_t consumed = uPtr->input_consumed();
|
|
free_unpacker(env, pObj, uPtr);
|
|
return consumed;
|
|
@@ -274,7 +321,9 @@
|
|
jstring pProp, jstring pValue) {
|
|
unpacker* uPtr = get_unpacker(env, pObj);
|
|
const char* prop = env->GetStringUTFChars(pProp, JNI_FALSE);
|
|
+ CHECK_EXCEPTION_RETURN_VALUE(prop, false);
|
|
const char* value = env->GetStringUTFChars(pValue, JNI_FALSE);
|
|
+ CHECK_EXCEPTION_RETURN_VALUE(value, false);
|
|
jboolean retval = uPtr->set_option(prop, value);
|
|
env->ReleaseStringUTFChars(pProp, prop);
|
|
env->ReleaseStringUTFChars(pValue, value);
|
|
@@ -286,9 +335,11 @@
|
|
jstring pProp) {
|
|
|
|
unpacker* uPtr = get_unpacker(env, pObj);
|
|
+ CHECK_EXCEPTION_RETURN_VALUE(uPtr, NULL);
|
|
const char* prop = env->GetStringUTFChars(pProp, JNI_FALSE);
|
|
+ CHECK_EXCEPTION_RETURN_VALUE(prop, NULL);
|
|
const char* value = uPtr->get_option(prop);
|
|
+ CHECK_EXCEPTION_RETURN_VALUE(value, NULL);
|
|
env->ReleaseStringUTFChars(pProp, prop);
|
|
- if (value == null) return null;
|
|
return env->NewStringUTF(value);
|
|
}
|
|
--- jdk/src/share/native/sun/awt/medialib/awt_ImagingLib.c Wed Mar 12 11:58:14 2014 +0000
|
|
+++ jdk/src/share/native/sun/awt/medialib/awt_ImagingLib.c Tue Jun 03 14:19:36 2014 -0700
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
|
|
+ * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
|
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
|
*
|
|
* This code is free software; you can redistribute it and/or modify it
|
|
@@ -373,14 +373,14 @@
|
|
|
|
|
|
/* Parse the source image */
|
|
- if ((status = awt_parseImage(env, jsrc, &srcImageP, FALSE)) <= 0) {
|
|
+ if (awt_parseImage(env, jsrc, &srcImageP, FALSE) <= 0) {
|
|
/* Can't handle any custom images */
|
|
free(dkern);
|
|
return 0;
|
|
}
|
|
|
|
/* Parse the destination image */
|
|
- if ((status = awt_parseImage(env, jdst, &dstImageP, FALSE)) <= 0) {
|
|
+ if (awt_parseImage(env, jdst, &dstImageP, FALSE) <= 0) {
|
|
/* Can't handle any custom images */
|
|
awt_freeParsedImage(srcImageP, TRUE);
|
|
free(dkern);
|
|
@@ -627,7 +627,7 @@
|
|
}
|
|
|
|
/* Parse the source raster */
|
|
- if ((status = awt_parseRaster(env, jsrc, srcRasterP)) <= 0) {
|
|
+ if (awt_parseRaster(env, jsrc, srcRasterP) <= 0) {
|
|
/* Can't handle any custom rasters */
|
|
free(srcRasterP);
|
|
free(dstRasterP);
|
|
@@ -636,7 +636,7 @@
|
|
}
|
|
|
|
/* Parse the destination raster */
|
|
- if ((status = awt_parseRaster(env, jdst, dstRasterP)) <= 0) {
|
|
+ if (awt_parseRaster(env, jdst, dstRasterP) <= 0) {
|
|
/* Can't handle any custom images */
|
|
awt_freeParsedRaster(srcRasterP, TRUE);
|
|
free(dstRasterP);
|
|
@@ -839,13 +839,13 @@
|
|
(*env)->ReleasePrimitiveArrayCritical(env, jmatrix, matrix, JNI_ABORT);
|
|
|
|
/* Parse the source image */
|
|
- if ((status = awt_parseImage(env, jsrc, &srcImageP, FALSE)) <= 0) {
|
|
+ if (awt_parseImage(env, jsrc, &srcImageP, FALSE) <= 0) {
|
|
/* Can't handle any custom images */
|
|
return 0;
|
|
}
|
|
|
|
/* Parse the destination image */
|
|
- if ((status = awt_parseImage(env, jdst, &dstImageP, FALSE)) <= 0) {
|
|
+ if (awt_parseImage(env, jdst, &dstImageP, FALSE) <= 0) {
|
|
/* Can't handle any custom images */
|
|
awt_freeParsedImage(srcImageP, TRUE);
|
|
return 0;
|
|
@@ -1059,7 +1059,7 @@
|
|
(*env)->ReleasePrimitiveArrayCritical(env, jmatrix, matrix, JNI_ABORT);
|
|
|
|
/* Parse the source raster */
|
|
- if ((status = awt_parseRaster(env, jsrc, srcRasterP)) <= 0) {
|
|
+ if (awt_parseRaster(env, jsrc, srcRasterP) <= 0) {
|
|
/* Can't handle any custom rasters */
|
|
free(srcRasterP);
|
|
free(dstRasterP);
|
|
@@ -1067,7 +1067,7 @@
|
|
}
|
|
|
|
/* Parse the destination raster */
|
|
- if ((status = awt_parseRaster(env, jdst, dstRasterP)) <= 0) {
|
|
+ if (awt_parseRaster(env, jdst, dstRasterP) <= 0) {
|
|
/* Can't handle any custom images */
|
|
awt_freeParsedRaster(srcRasterP, TRUE);
|
|
free(dstRasterP);
|
|
@@ -1305,13 +1305,13 @@
|
|
if (s_timeIt) (*start_timer)(3600);
|
|
|
|
/* Parse the source image */
|
|
- if ((status = awt_parseImage(env, jsrc, &srcImageP, FALSE)) <= 0) {
|
|
+ if (awt_parseImage(env, jsrc, &srcImageP, FALSE) <= 0) {
|
|
/* Can't handle any custom images */
|
|
return 0;
|
|
}
|
|
|
|
/* Parse the destination image */
|
|
- if ((status = awt_parseImage(env, jdst, &dstImageP, FALSE)) <= 0) {
|
|
+ if (awt_parseImage(env, jdst, &dstImageP, FALSE) <= 0) {
|
|
/* Can't handle any custom images */
|
|
awt_freeParsedImage(srcImageP, TRUE);
|
|
return 0;
|
|
@@ -1553,14 +1553,14 @@
|
|
}
|
|
|
|
/* Parse the source raster - reject custom images */
|
|
- if ((status = awt_parseRaster(env, jsrc, srcRasterP)) <= 0) {
|
|
+ if (awt_parseRaster(env, jsrc, srcRasterP) <= 0) {
|
|
free(srcRasterP);
|
|
free(dstRasterP);
|
|
return 0;
|
|
}
|
|
|
|
/* Parse the destination image - reject custom images */
|
|
- if ((status = awt_parseRaster(env, jdst, dstRasterP)) <= 0) {
|
|
+ if (awt_parseRaster(env, jdst, dstRasterP) <= 0) {
|
|
awt_freeParsedRaster(srcRasterP, TRUE);
|
|
free(dstRasterP);
|
|
return 0;
|
|
--- jdk/src/share/native/sun/font/freetypeScaler.c Wed Mar 12 11:58:14 2014 +0000
|
|
+++ jdk/src/share/native/sun/font/freetypeScaler.c Tue Jun 03 14:19:36 2014 -0700
|
|
@@ -177,18 +177,10 @@
|
|
if (numBytes > FILEDATACACHESIZE) {
|
|
bBuffer = (*env)->NewDirectByteBuffer(env, destBuffer, numBytes);
|
|
if (bBuffer != NULL) {
|
|
- /* Loop until the read succeeds (or EOF).
|
|
- * This should improve robustness in the event of a problem in
|
|
- * the I/O system. If we find that we ever end up spinning here
|
|
- * we are going to have to do some serious work to recover.
|
|
- * Just returning without reading the data will cause a crash.
|
|
- */
|
|
- while (bread == 0) {
|
|
- bread = (*env)->CallIntMethod(env,
|
|
- scalerInfo->font2D,
|
|
- sunFontIDs.ttReadBlockMID,
|
|
- bBuffer, offset, numBytes);
|
|
- }
|
|
+ bread = (*env)->CallIntMethod(env,
|
|
+ scalerInfo->font2D,
|
|
+ sunFontIDs.ttReadBlockMID,
|
|
+ bBuffer, offset, numBytes);
|
|
return bread;
|
|
} else {
|
|
/* We probably hit bug bug 4845371. For reasons that
|
|
@@ -224,19 +216,10 @@
|
|
(offset + FILEDATACACHESIZE > scalerInfo->fileSize) ?
|
|
scalerInfo->fileSize - offset : FILEDATACACHESIZE;
|
|
bBuffer = scalerInfo->directBuffer;
|
|
- /* Loop until all the read succeeds (or EOF).
|
|
- * This should improve robustness in the event of a problem in
|
|
- * the I/O system. If we find that we ever end up spinning here
|
|
- * we are going to have to do some serious work to recover.
|
|
- * Just returning without reading the data will cause a crash.
|
|
- */
|
|
- while (bread == 0) {
|
|
- bread = (*env)->CallIntMethod(env, scalerInfo->font2D,
|
|
- sunFontIDs.ttReadBlockMID,
|
|
- bBuffer, offset,
|
|
- scalerInfo->fontDataLength);
|
|
- }
|
|
-
|
|
+ bread = (*env)->CallIntMethod(env, scalerInfo->font2D,
|
|
+ sunFontIDs.ttReadBlockMID,
|
|
+ bBuffer, offset,
|
|
+ scalerInfo->fontDataLength);
|
|
memcpy(destBuffer, scalerInfo->fontData, numBytes);
|
|
return numBytes;
|
|
}
|
|
--- jdk/src/share/native/sun/management/GcInfoBuilder.c Wed Mar 12 11:58:14 2014 +0000
|
|
+++ jdk/src/share/native/sun/management/GcInfoBuilder.c Tue Jun 03 14:19:36 2014 -0700
|
|
@@ -190,7 +190,7 @@
|
|
|
|
if (ext_att_count <= 0) {
|
|
JNU_ThrowIllegalArgumentException(env, "Invalid ext_att_count");
|
|
- return;
|
|
+ return 0;
|
|
}
|
|
|
|
gc_stat.usage_before_gc = usageBeforeGC;
|
|
--- jdk/src/share/native/sun/security/ec/ECC_JNI.cpp Wed Mar 12 11:58:14 2014 +0000
|
|
+++ jdk/src/share/native/sun/security/ec/ECC_JNI.cpp Tue Jun 03 14:19:36 2014 -0700
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright (c) 2009, 2011, Oracle and/or its affiliates. All rights reserved.
|
|
+ * Copyright (c) 2009, 2014, Oracle and/or its affiliates. All rights reserved.
|
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
|
*
|
|
* This code is free software; you can redistribute it and/or modify it
|
|
@@ -64,22 +64,40 @@
|
|
free(ecparams);
|
|
}
|
|
|
|
+jbyteArray getEncodedBytes(JNIEnv *env, SECItem *hSECItem)
|
|
+{
|
|
+ SECItem *s = (SECItem *)hSECItem;
|
|
+
|
|
+ jbyteArray jEncodedBytes = env->NewByteArray(s->len);
|
|
+ if (jEncodedBytes == NULL) {
|
|
+ return NULL;
|
|
+ }
|
|
+ // Copy bytes from a native SECItem buffer to Java byte array
|
|
+ env->SetByteArrayRegion(jEncodedBytes, 0, s->len, (jbyte *)s->data);
|
|
+ if (env->ExceptionCheck()) { // should never happen
|
|
+ return NULL;
|
|
+ }
|
|
+ return jEncodedBytes;
|
|
+}
|
|
+
|
|
+
|
|
/*
|
|
* Class: sun_security_ec_ECKeyPairGenerator
|
|
* Method: generateECKeyPair
|
|
- * Signature: (I[B[B)[J
|
|
+ * Signature: (I[B[B)[[B
|
|
*/
|
|
-JNIEXPORT jlongArray
|
|
+JNIEXPORT jobjectArray
|
|
JNICALL Java_sun_security_ec_ECKeyPairGenerator_generateECKeyPair
|
|
(JNIEnv *env, jclass clazz, jint keySize, jbyteArray encodedParams, jbyteArray seed)
|
|
{
|
|
- ECPrivateKey *privKey; /* contains both public and private values */
|
|
+ ECPrivateKey *privKey = NULL; // contains both public and private values
|
|
ECParams *ecparams = NULL;
|
|
SECKEYECParams params_item;
|
|
jint jSeedLength;
|
|
jbyte* pSeedBuffer = NULL;
|
|
- jlongArray result = NULL;
|
|
- jlong* resultElements = NULL;
|
|
+ jobjectArray result = NULL;
|
|
+ jclass baCls = NULL;
|
|
+ jbyteArray jba;
|
|
|
|
// Initialize the ECParams struct
|
|
params_item.len = env->GetArrayLength(encodedParams);
|
|
@@ -106,61 +124,61 @@
|
|
}
|
|
|
|
jboolean isCopy;
|
|
- result = env->NewLongArray(2);
|
|
- resultElements = env->GetLongArrayElements(result, &isCopy);
|
|
+ baCls = env->FindClass("[B");
|
|
+ if (baCls == NULL) {
|
|
+ goto cleanup;
|
|
+ }
|
|
+ result = env->NewObjectArray(2, baCls, NULL);
|
|
+ if (result == NULL) {
|
|
+ goto cleanup;
|
|
+ }
|
|
+ jba = getEncodedBytes(env, &(privKey->privateValue));
|
|
+ if (jba == NULL) {
|
|
+ result = NULL;
|
|
+ goto cleanup;
|
|
+ }
|
|
+ env->SetObjectArrayElement(result, 0, jba); // big integer
|
|
+ if (env->ExceptionCheck()) { // should never happen
|
|
+ result = NULL;
|
|
+ goto cleanup;
|
|
+ }
|
|
|
|
- resultElements[0] = (jlong) &(privKey->privateValue); // private big integer
|
|
- resultElements[1] = (jlong) &(privKey->publicValue); // encoded ec point
|
|
-
|
|
- // If the array is a copy then we must write back our changes
|
|
- if (isCopy == JNI_TRUE) {
|
|
- env->ReleaseLongArrayElements(result, resultElements, 0);
|
|
+ jba = getEncodedBytes(env, &(privKey->publicValue));
|
|
+ if (jba == NULL) {
|
|
+ result = NULL;
|
|
+ goto cleanup;
|
|
+ }
|
|
+ env->SetObjectArrayElement(result, 1, jba); // encoded ec point
|
|
+ if (env->ExceptionCheck()) { // should never happen
|
|
+ result = NULL;
|
|
+ goto cleanup;
|
|
}
|
|
|
|
cleanup:
|
|
{
|
|
- if (params_item.data)
|
|
+ if (params_item.data) {
|
|
env->ReleaseByteArrayElements(encodedParams,
|
|
(jbyte *) params_item.data, JNI_ABORT);
|
|
-
|
|
- if (ecparams)
|
|
+ }
|
|
+ if (ecparams) {
|
|
FreeECParams(ecparams, true);
|
|
-
|
|
+ }
|
|
if (privKey) {
|
|
FreeECParams(&privKey->ecParams, false);
|
|
SECITEM_FreeItem(&privKey->version, B_FALSE);
|
|
- // Don't free privKey->privateValue and privKey->publicValue
|
|
+ SECITEM_FreeItem(&privKey->privateValue, B_FALSE);
|
|
+ SECITEM_FreeItem(&privKey->publicValue, B_FALSE);
|
|
+ free(privKey);
|
|
}
|
|
-
|
|
- if (pSeedBuffer)
|
|
+ if (pSeedBuffer) {
|
|
delete [] pSeedBuffer;
|
|
+ }
|
|
}
|
|
|
|
return result;
|
|
}
|
|
|
|
/*
|
|
- * Class: sun_security_ec_ECKeyPairGenerator
|
|
- * Method: getEncodedBytes
|
|
- * Signature: (J)[B
|
|
- */
|
|
-JNIEXPORT jbyteArray
|
|
-JNICALL Java_sun_security_ec_ECKeyPairGenerator_getEncodedBytes
|
|
- (JNIEnv *env, jclass clazz, jlong hSECItem)
|
|
-{
|
|
- SECItem *s = (SECItem *)hSECItem;
|
|
- jbyteArray jEncodedBytes = env->NewByteArray(s->len);
|
|
-
|
|
- // Copy bytes from a native SECItem buffer to Java byte array
|
|
- env->SetByteArrayRegion(jEncodedBytes, 0, s->len, (jbyte *)s->data);
|
|
-
|
|
- // Use B_FALSE to free only the SECItem->data
|
|
- SECITEM_FreeItem(s, B_FALSE);
|
|
-
|
|
- return jEncodedBytes;
|
|
-}
|
|
-
|
|
-/*
|
|
* Class: sun_security_ec_ECDSASignature
|
|
* Method: signDigest
|
|
* Signature: ([B[B[B[B)[B
|
|
@@ -234,21 +252,26 @@
|
|
|
|
cleanup:
|
|
{
|
|
- if (params_item.data)
|
|
+ if (params_item.data) {
|
|
env->ReleaseByteArrayElements(encodedParams,
|
|
(jbyte *) params_item.data, JNI_ABORT);
|
|
-
|
|
- if (pDigestBuffer)
|
|
+ }
|
|
+ if (privKey.privateValue.data) {
|
|
+ env->ReleaseByteArrayElements(privateKey,
|
|
+ (jbyte *) privKey.privateValue.data, JNI_ABORT);
|
|
+ }
|
|
+ if (pDigestBuffer) {
|
|
delete [] pDigestBuffer;
|
|
-
|
|
- if (pSignedDigestBuffer)
|
|
+ }
|
|
+ if (pSignedDigestBuffer) {
|
|
delete [] pSignedDigestBuffer;
|
|
-
|
|
- if (pSeedBuffer)
|
|
+ }
|
|
+ if (pSeedBuffer) {
|
|
delete [] pSeedBuffer;
|
|
-
|
|
- if (ecparams)
|
|
+ }
|
|
+ if (ecparams) {
|
|
FreeECParams(ecparams, true);
|
|
+ }
|
|
}
|
|
|
|
return jSignedDigest;
|
|
--- jdk/src/solaris/classes/sun/font/FcFontConfiguration.java Wed Mar 12 11:58:14 2014 +0000
|
|
+++ jdk/src/solaris/classes/sun/font/FcFontConfiguration.java Tue Jun 03 14:19:36 2014 -0700
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright (c) 2008, 2012, Oracle and/or its affiliates. All rights reserved.
|
|
+ * Copyright (c) 2008, 2014, Oracle and/or its affiliates. All rights reserved.
|
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
|
*
|
|
* This code is free software; you can redistribute it and/or modify it
|
|
@@ -33,6 +33,7 @@
|
|
import java.net.InetAddress;
|
|
import java.net.UnknownHostException;
|
|
import java.nio.charset.Charset;
|
|
+import java.nio.charset.StandardCharsets;
|
|
import java.nio.file.Files;
|
|
import java.util.HashMap;
|
|
import java.util.HashSet;
|
|
@@ -173,8 +174,16 @@
|
|
}
|
|
|
|
@Override
|
|
- public FontDescriptor[] getFontDescriptors(String fontName, int style) {
|
|
- return new FontDescriptor[0];
|
|
+ protected FontDescriptor[] buildFontDescriptors(int fontIndex, int styleIndex) {
|
|
+ CompositeFontDescriptor[] cfi = get2DCompositeFontInfo();
|
|
+ int idx = fontIndex * NUM_STYLES + styleIndex;
|
|
+ String[] componentFaceNames = cfi[idx].getComponentFaceNames();
|
|
+ FontDescriptor[] ret = new FontDescriptor[componentFaceNames.length];
|
|
+ for (int i = 0; i < componentFaceNames.length; i++) {
|
|
+ ret[i] = new FontDescriptor(componentFaceNames[i], StandardCharsets.UTF_8.newEncoder(), new int[0]);
|
|
+ }
|
|
+
|
|
+ return ret;
|
|
}
|
|
|
|
@Override
|
|
@@ -250,10 +259,12 @@
|
|
}
|
|
|
|
String[] fileNames = new String[numFonts];
|
|
+ String[] faceNames = new String[numFonts];
|
|
|
|
int index;
|
|
for (index = 0; index < fcFonts.length; index++) {
|
|
fileNames[index] = fcFonts[index].fontFile;
|
|
+ faceNames[index] = fcFonts[index].familyName;
|
|
}
|
|
|
|
if (installedFallbackFontFiles != null) {
|
|
@@ -266,7 +277,7 @@
|
|
= new CompositeFontDescriptor(
|
|
faceName,
|
|
1,
|
|
- null,
|
|
+ faceNames,
|
|
fileNames,
|
|
null, null);
|
|
}
|
|
--- jdk/src/solaris/native/java/net/PlainDatagramSocketImpl.c Wed Mar 12 11:58:14 2014 +0000
|
|
+++ jdk/src/solaris/native/java/net/PlainDatagramSocketImpl.c Tue Jun 03 14:19:36 2014 -0700
|
|
@@ -517,6 +517,8 @@
|
|
} else if (ret == JVM_IO_ERR) {
|
|
if (errno == EBADF) {
|
|
JNU_ThrowByName(env, JNU_JAVANETPKG "SocketException", "Socket closed");
|
|
+ } else if (errno == ENOMEM) {
|
|
+ JNU_ThrowOutOfMemoryError(env, "NET_Timeout native heap allocation failed");
|
|
} else {
|
|
NET_ThrowByNameWithLastError(env, JNU_JAVANETPKG "SocketException", "Peek failed");
|
|
}
|
|
@@ -617,15 +619,18 @@
|
|
"Receive timed out");
|
|
return -1;
|
|
} else if (ret == JVM_IO_ERR) {
|
|
+ if (errno == ENOMEM) {
|
|
+ JNU_ThrowOutOfMemoryError(env, "NET_Timeout native heap allocation failed");
|
|
#ifdef __linux__
|
|
- if (errno == EBADF) {
|
|
+ } else if (errno == EBADF) {
|
|
JNU_ThrowByName(env, JNU_JAVANETPKG "SocketException", "Socket closed");
|
|
} else {
|
|
NET_ThrowByNameWithLastError(env, JNU_JAVANETPKG "SocketException", "Receive failed");
|
|
+#else
|
|
+ } else {
|
|
+ JNU_ThrowByName(env, JNU_JAVANETPKG "SocketException", "Socket closed");
|
|
+#endif
|
|
}
|
|
-#else
|
|
- JNU_ThrowByName(env, JNU_JAVANETPKG "SocketException", "Socket closed");
|
|
-#endif
|
|
return -1;
|
|
} else if (ret == JVM_IO_INTR) {
|
|
JNU_ThrowByName(env, JNU_JAVAIOPKG "InterruptedIOException",
|
|
@@ -835,15 +840,18 @@
|
|
JNU_ThrowByName(env, JNU_JAVANETPKG "SocketTimeoutException",
|
|
"Receive timed out");
|
|
} else if (ret == JVM_IO_ERR) {
|
|
+ if (errno == ENOMEM) {
|
|
+ JNU_ThrowOutOfMemoryError(env, "NET_Timeout native heap allocation failed");
|
|
#ifdef __linux__
|
|
- if (errno == EBADF) {
|
|
+ } else if (errno == EBADF) {
|
|
JNU_ThrowByName(env, JNU_JAVANETPKG "SocketException", "Socket closed");
|
|
} else {
|
|
NET_ThrowByNameWithLastError(env, JNU_JAVANETPKG "SocketException", "Receive failed");
|
|
+#else
|
|
+ } else {
|
|
+ JNU_ThrowByName(env, JNU_JAVANETPKG "SocketException", "Socket closed");
|
|
+#endif
|
|
}
|
|
-#else
|
|
- JNU_ThrowByName(env, JNU_JAVANETPKG "SocketException", "Socket closed");
|
|
-#endif
|
|
} else if (ret == JVM_IO_INTR) {
|
|
JNU_ThrowByName(env, JNU_JAVAIOPKG "InterruptedIOException",
|
|
"operation interrupted");
|
|
--- jdk/src/solaris/native/java/net/PlainSocketImpl.c Wed Mar 12 11:58:14 2014 +0000
|
|
+++ jdk/src/solaris/native/java/net/PlainSocketImpl.c Tue Jun 03 14:19:36 2014 -0700
|
|
@@ -708,7 +708,6 @@
|
|
} else {
|
|
ret = NET_Timeout(fd, timeout);
|
|
}
|
|
-
|
|
if (ret == 0) {
|
|
JNU_ThrowByName(env, JNU_JAVANETPKG "SocketTimeoutException",
|
|
"Accept timed out");
|
|
@@ -716,6 +715,8 @@
|
|
} else if (ret == JVM_IO_ERR) {
|
|
if (errno == EBADF) {
|
|
JNU_ThrowByName(env, JNU_JAVANETPKG "SocketException", "Socket closed");
|
|
+ } else if (errno == ENOMEM) {
|
|
+ JNU_ThrowOutOfMemoryError(env, "NET_Timeout native heap allocation failed");
|
|
} else {
|
|
NET_ThrowByNameWithLastError(env, JNU_JAVANETPKG "SocketException", "Accept failed");
|
|
}
|
|
--- jdk/src/solaris/native/java/net/SocketInputStream.c Wed Mar 12 11:58:14 2014 +0000
|
|
+++ jdk/src/solaris/native/java/net/SocketInputStream.c Tue Jun 03 14:19:36 2014 -0700
|
|
@@ -108,6 +108,8 @@
|
|
} else if (nread == JVM_IO_ERR) {
|
|
if (errno == EBADF) {
|
|
JNU_ThrowByName(env, JNU_JAVANETPKG "SocketException", "Socket closed");
|
|
+ } else if (errno == ENOMEM) {
|
|
+ JNU_ThrowOutOfMemoryError(env, "NET_Timeout native heap allocation failed");
|
|
} else {
|
|
NET_ThrowByNameWithLastError(env, JNU_JAVANETPKG "SocketException",
|
|
"select/poll failed");
|
|
--- jdk/src/solaris/native/java/net/bsd_close.c Wed Mar 12 11:58:14 2014 +0000
|
|
+++ jdk/src/solaris/native/java/net/bsd_close.c Tue Jun 03 14:19:36 2014 -0700
|
|
@@ -25,6 +25,7 @@
|
|
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
+#include <sys/param.h>
|
|
#include <signal.h>
|
|
#include <pthread.h>
|
|
#include <sys/types.h>
|
|
@@ -35,7 +36,6 @@
|
|
#include <sys/uio.h>
|
|
#include <unistd.h>
|
|
#include <errno.h>
|
|
-
|
|
#include <sys/poll.h>
|
|
|
|
/*
|
|
@@ -347,6 +347,10 @@
|
|
int NET_Timeout(int s, long timeout) {
|
|
long prevtime = 0, newtime;
|
|
struct timeval t, *tp = &t;
|
|
+ fd_set fds;
|
|
+ fd_set* fdsp = NULL;
|
|
+ int allocated = 0;
|
|
+ threadEntry_t self;
|
|
fdEntry_t *fdEntry = getFdEntry(s);
|
|
|
|
/*
|
|
@@ -376,20 +380,29 @@
|
|
t.tv_usec = 0;
|
|
}
|
|
|
|
+ if (s < FD_SETSIZE) {
|
|
+ fdsp = &fds;
|
|
+ FD_ZERO(fdsp);
|
|
+ } else {
|
|
+ int length = (howmany(s+1, NFDBITS)) * sizeof(int);
|
|
+ fdsp = (fd_set *) calloc(1, length);
|
|
+ if (fdsp == NULL) {
|
|
+ return -1; // errno will be set to ENOMEM
|
|
+ }
|
|
+ allocated = 1;
|
|
+ }
|
|
+ FD_SET(s, fdsp);
|
|
+
|
|
for(;;) {
|
|
- fd_set rfds;
|
|
int rv;
|
|
- threadEntry_t self;
|
|
|
|
/*
|
|
* call select on the fd. If interrupted by our wakeup signal
|
|
* errno will be set to EBADF.
|
|
*/
|
|
- FD_ZERO(&rfds);
|
|
- FD_SET(s, &rfds);
|
|
|
|
startOp(fdEntry, &self);
|
|
- rv = select(s+1, &rfds, 0, 0, tp);
|
|
+ rv = select(s+1, fdsp, 0, 0, tp);
|
|
endOp(fdEntry, &self);
|
|
|
|
/*
|
|
@@ -403,6 +416,8 @@
|
|
newtime = now.tv_sec * 1000 + now.tv_usec / 1000;
|
|
timeout -= newtime - prevtime;
|
|
if (timeout <= 0) {
|
|
+ if (allocated != 0)
|
|
+ free(fdsp);
|
|
return 0;
|
|
}
|
|
prevtime = newtime;
|
|
@@ -410,6 +425,8 @@
|
|
t.tv_usec = (timeout % 1000) * 1000;
|
|
}
|
|
} else {
|
|
+ if (allocated != 0)
|
|
+ free(fdsp);
|
|
return rv;
|
|
}
|
|
|
|
--- jdk/src/solaris/native/java/net/linux_close.c Wed Mar 12 11:58:14 2014 +0000
|
|
+++ jdk/src/solaris/native/java/net/linux_close.c Tue Jun 03 14:19:36 2014 -0700
|
|
@@ -34,7 +34,6 @@
|
|
#include <sys/uio.h>
|
|
#include <unistd.h>
|
|
#include <errno.h>
|
|
-
|
|
#include <sys/poll.h>
|
|
|
|
/*
|
|
--- jdk/src/windows/bin/java_md.c Wed Mar 12 11:58:14 2014 +0000
|
|
+++ jdk/src/windows/bin/java_md.c Tue Jun 03 14:19:36 2014 -0700
|
|
@@ -1301,6 +1301,14 @@
|
|
/* save path length */
|
|
jrePathLen = JLI_StrLen(libraryPath);
|
|
|
|
+ if (jrePathLen + JLI_StrLen("\\bin\\verify.dll") >= MAXPATHLEN) {
|
|
+ /* jre path is too long, the library path will not fit there;
|
|
+ * report and abort preloading
|
|
+ */
|
|
+ JLI_ReportErrorMessage(JRE_ERROR11);
|
|
+ break;
|
|
+ }
|
|
+
|
|
/* load msvcrt 1st */
|
|
LoadMSVCRT();
|
|
|
|
--- jdk/src/windows/classes/sun/awt/shell/Win32ShellFolder2.java Wed Mar 12 11:58:14 2014 +0000
|
|
+++ jdk/src/windows/classes/sun/awt/shell/Win32ShellFolder2.java Tue Jun 03 14:19:36 2014 -0700
|
|
@@ -583,11 +583,18 @@
|
|
|
|
// Needs to be accessible to Win32ShellFolderManager2
|
|
static String getFileSystemPath(final int csidl) throws IOException, InterruptedException {
|
|
- return invoke(new Callable<String>() {
|
|
+ String path = invoke(new Callable<String>() {
|
|
public String call() throws IOException {
|
|
return getFileSystemPath0(csidl);
|
|
}
|
|
}, IOException.class);
|
|
+ if (path != null) {
|
|
+ SecurityManager security = System.getSecurityManager();
|
|
+ if (security != null) {
|
|
+ security.checkRead(path);
|
|
+ }
|
|
+ }
|
|
+ return path;
|
|
}
|
|
|
|
// NOTE: this method uses COM and must be called on the 'COM thread'. See ComInvoker for the details
|
|
--- jdk/src/windows/classes/sun/awt/shell/Win32ShellFolderManager2.java Wed Mar 12 11:58:14 2014 +0000
|
|
+++ jdk/src/windows/classes/sun/awt/shell/Win32ShellFolderManager2.java Tue Jun 03 14:19:36 2014 -0700
|
|
@@ -142,6 +142,8 @@
|
|
if (desktop == null) {
|
|
try {
|
|
desktop = new Win32ShellFolder2(DESKTOP);
|
|
+ } catch (SecurityException e) {
|
|
+ // Ignore error
|
|
} catch (IOException e) {
|
|
// Ignore error
|
|
} catch (InterruptedException e) {
|
|
@@ -155,6 +157,8 @@
|
|
if (drives == null) {
|
|
try {
|
|
drives = new Win32ShellFolder2(DRIVES);
|
|
+ } catch (SecurityException e) {
|
|
+ // Ignore error
|
|
} catch (IOException e) {
|
|
// Ignore error
|
|
} catch (InterruptedException e) {
|
|
@@ -171,6 +175,8 @@
|
|
if (path != null) {
|
|
recent = createShellFolder(getDesktop(), new File(path));
|
|
}
|
|
+ } catch (SecurityException e) {
|
|
+ // Ignore error
|
|
} catch (InterruptedException e) {
|
|
// Ignore error
|
|
} catch (IOException e) {
|
|
@@ -184,6 +190,8 @@
|
|
if (network == null) {
|
|
try {
|
|
network = new Win32ShellFolder2(NETWORK);
|
|
+ } catch (SecurityException e) {
|
|
+ // Ignore error
|
|
} catch (IOException e) {
|
|
// Ignore error
|
|
} catch (InterruptedException e) {
|
|
@@ -207,6 +215,8 @@
|
|
personal.setIsPersonal();
|
|
}
|
|
}
|
|
+ } catch (SecurityException e) {
|
|
+ // Ignore error
|
|
} catch (InterruptedException e) {
|
|
// Ignore error
|
|
} catch (IOException e) {
|
|
--- jdk/src/windows/classes/sun/awt/windows/ThemeReader.java Wed Mar 12 11:58:14 2014 +0000
|
|
+++ jdk/src/windows/classes/sun/awt/windows/ThemeReader.java Tue Jun 03 14:19:36 2014 -0700
|
|
@@ -56,18 +56,12 @@
|
|
new ReentrantReadWriteLock();
|
|
private static final Lock readLock = readWriteLock.readLock();
|
|
private static final Lock writeLock = readWriteLock.writeLock();
|
|
+ private static volatile boolean valid = false;
|
|
|
|
static void flush() {
|
|
- writeLock.lock();
|
|
- try {
|
|
- // Close old themes.
|
|
- for (Long value : widgetToTheme.values()) {
|
|
- closeTheme(value.longValue());
|
|
- }
|
|
- widgetToTheme.clear();
|
|
- } finally {
|
|
- writeLock.unlock();
|
|
- }
|
|
+ // Could be called on Toolkit thread, so do not try to aquire locks
|
|
+ // to avoid deadlock with theme initialization
|
|
+ valid = false;
|
|
}
|
|
|
|
public native static boolean isThemed();
|
|
@@ -94,6 +88,24 @@
|
|
// returns theme value
|
|
// this method should be invoked with readLock locked
|
|
private static Long getTheme(String widget) {
|
|
+ if (!valid) {
|
|
+ readLock.unlock();
|
|
+ writeLock.lock();
|
|
+ try {
|
|
+ if (!valid) {
|
|
+ // Close old themes.
|
|
+ for (Long value : widgetToTheme.values()) {
|
|
+ closeTheme(value);
|
|
+ }
|
|
+ widgetToTheme.clear();
|
|
+ valid = true;
|
|
+ }
|
|
+ } finally {
|
|
+ readLock.lock();
|
|
+ writeLock.unlock();
|
|
+ }
|
|
+ }
|
|
+
|
|
// mostly copied from the javadoc for ReentrantReadWriteLock
|
|
Long theme = widgetToTheme.get(widget);
|
|
if (theme == null) {
|
|
--- jdk/src/windows/classes/sun/awt/windows/WToolkit.java Wed Mar 12 11:58:14 2014 +0000
|
|
+++ jdk/src/windows/classes/sun/awt/windows/WToolkit.java Tue Jun 03 14:19:36 2014 -0700
|
|
@@ -38,6 +38,7 @@
|
|
import java.security.PrivilegedAction;
|
|
import sun.awt.AWTAutoShutdown;
|
|
import sun.awt.LightweightFrame;
|
|
+import sun.awt.AppContext;
|
|
import sun.awt.SunToolkit;
|
|
import sun.misc.ThreadGroupUtils;
|
|
import sun.awt.Win32GraphicsDevice;
|
|
@@ -866,11 +867,16 @@
|
|
* Windows doesn't always send WM_SETTINGCHANGE when it should.
|
|
*/
|
|
private void windowsSettingChange() {
|
|
- EventQueue.invokeLater(new Runnable() {
|
|
- public void run() {
|
|
- updateProperties();
|
|
- }
|
|
- });
|
|
+ if (AppContext.getAppContext() == null) {
|
|
+ // We cannot post the update to any EventQueue. Listeners will
|
|
+ // be called on EDTs by DesktopPropertyChangeSupport
|
|
+ updateProperties();
|
|
+ } else {
|
|
+ // Cannot update on Toolkit thread.
|
|
+ // DesktopPropertyChangeSupport will call listeners on Toolkit
|
|
+ // thread if it has AppContext (standalone mode)
|
|
+ EventQueue.invokeLater(this::updateProperties);
|
|
+ }
|
|
}
|
|
|
|
private synchronized void updateProperties() {
|
|
--- jdk/src/windows/classes/sun/awt/windows/WWindowPeer.java Wed Mar 12 11:58:14 2014 +0000
|
|
+++ jdk/src/windows/classes/sun/awt/windows/WWindowPeer.java Tue Jun 03 14:19:36 2014 -0700
|
|
@@ -436,6 +436,7 @@
|
|
@SuppressWarnings("unchecked")
|
|
public static long[] getActiveWindowHandles() {
|
|
AppContext appContext = AppContext.getAppContext();
|
|
+ if (appContext == null) return null;
|
|
synchronized (appContext) {
|
|
List<WWindowPeer> l = (List<WWindowPeer>)appContext.get(ACTIVE_WINDOWS_KEY);
|
|
if (l == null) {
|
|
--- jdk/src/windows/native/sun/windows/awt_Component.cpp Wed Mar 12 11:58:14 2014 +0000
|
|
+++ jdk/src/windows/native/sun/windows/awt_Component.cpp Tue Jun 03 14:19:36 2014 -0700
|
|
@@ -1719,9 +1719,11 @@
|
|
case WM_IME_SETCONTEXT:
|
|
// lParam is passed as pointer and it can be modified.
|
|
mr = WmImeSetContext(static_cast<BOOL>(wParam), &lParam);
|
|
+ CallProxyDefWindowProc(message, wParam, lParam, retValue, mr);
|
|
break;
|
|
case WM_IME_NOTIFY:
|
|
mr = WmImeNotify(wParam, lParam);
|
|
+ CallProxyDefWindowProc(message, wParam, lParam, retValue, mr);
|
|
break;
|
|
case WM_IME_STARTCOMPOSITION:
|
|
mr = WmImeStartComposition();
|
|
@@ -4070,7 +4072,7 @@
|
|
{
|
|
if (mr != mrConsume) {
|
|
HWND proxy = GetProxyFocusOwner();
|
|
- if (proxy != NULL) {
|
|
+ if (proxy != NULL && ::IsWindowEnabled(proxy)) {
|
|
retVal = ComCtl32Util::GetInstance().DefWindowProc(NULL, proxy, message, wParam, lParam);
|
|
mr = mrConsume;
|
|
}
|
|
--- jdk/src/windows/native/sun/windows/awt_Frame.cpp Wed Mar 12 11:58:14 2014 +0000
|
|
+++ jdk/src/windows/native/sun/windows/awt_Frame.cpp Tue Jun 03 14:19:36 2014 -0700
|
|
@@ -342,6 +342,8 @@
|
|
case WM_IME_STARTCOMPOSITION:
|
|
case WM_IME_ENDCOMPOSITION:
|
|
case WM_IME_COMPOSITION:
|
|
+ case WM_IME_SETCONTEXT:
|
|
+ case WM_IME_NOTIFY:
|
|
case WM_IME_CONTROL:
|
|
case WM_IME_COMPOSITIONFULL:
|
|
case WM_IME_SELECT:
|
|
--- jdk/test/java/awt/DataFlavor/MissedHtmlAndRtfBug/InterprocessMessages.java Wed Mar 12 11:58:14 2014 +0000
|
|
+++ jdk/test/java/awt/DataFlavor/MissedHtmlAndRtfBug/InterprocessMessages.java Tue Jun 03 14:19:36 2014 -0700
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
|
|
+ * Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved.
|
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
|
*
|
|
* This code is free software; you can redistribute it and/or modify it
|
|
@@ -24,5 +24,6 @@
|
|
interface InterprocessMessages {
|
|
final static int EXECUTION_IS_SUCCESSFULL = 0;
|
|
final static int DATA_IS_CORRUPTED = 212;
|
|
+ final static int NO_DROP_HAPPENED = 112;
|
|
}
|
|
|
|
--- jdk/test/java/awt/DataFlavor/MissedHtmlAndRtfBug/MissedHtmlAndRtfBug.html Wed Mar 12 11:58:14 2014 +0000
|
|
+++ jdk/test/java/awt/DataFlavor/MissedHtmlAndRtfBug/MissedHtmlAndRtfBug.html Tue Jun 03 14:19:36 2014 -0700
|
|
@@ -1,5 +1,5 @@
|
|
<!--
|
|
- Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
|
|
+ Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved.
|
|
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
|
|
|
This code is free software; you can redistribute it and/or modify it
|
|
@@ -24,7 +24,7 @@
|
|
<html>
|
|
<!--
|
|
@test
|
|
- @bug 8005932
|
|
+ @bug 8005932 8017456
|
|
@summary Java 7 on mac os x only provides text clipboard formats
|
|
@author mikhail.cherkasov@oracle.com
|
|
@library ../../regtesthelpers
|
|
--- jdk/test/java/awt/DataFlavor/MissedHtmlAndRtfBug/MissedHtmlAndRtfBug.java Wed Mar 12 11:58:14 2014 +0000
|
|
+++ jdk/test/java/awt/DataFlavor/MissedHtmlAndRtfBug/MissedHtmlAndRtfBug.java Tue Jun 03 14:19:36 2014 -0700
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
|
|
+ * Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved.
|
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
|
*
|
|
* This code is free software; you can redistribute it and/or modify it
|
|
@@ -21,17 +21,6 @@
|
|
* questions.
|
|
*/
|
|
|
|
-/*
|
|
- @bug 8005932
|
|
- @summary Java 7 on mac os x only provides text clipboard formats
|
|
- @author mikhail.cherkasov@oracle.com
|
|
- @library ../../regtesthelpers
|
|
- @library ../../regtesthelpers/process
|
|
- @build Util
|
|
- @build ProcessResults ProcessCommunicator
|
|
- @run applet/othervm MissedHtmlAndRtfBug.html
|
|
-*/
|
|
-
|
|
import java.awt.*;
|
|
import java.awt.datatransfer.DataFlavor;
|
|
import java.awt.event.*;
|
|
@@ -47,6 +36,7 @@
|
|
import static java.lang.Thread.sleep;
|
|
|
|
public class MissedHtmlAndRtfBug extends Applet {
|
|
+
|
|
public void init() {
|
|
setLayout(new BorderLayout());
|
|
}//End init()
|
|
@@ -82,9 +72,6 @@
|
|
args.add(concatStrings(DataFlavorSearcher.RICH_TEXT_NAMES));
|
|
|
|
ProcessResults processResults =
|
|
-// ProcessCommunicator.executeChildProcess(this.getClass(), "/Users/mcherkasov/ws/clipboard/DataFlover/out/production/DataFlover" +
|
|
-// " -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005 ",
|
|
-// args.toArray(new String[0]));
|
|
ProcessCommunicator.executeChildProcess(this.getClass(),
|
|
"." + File.separator + System.getProperty("java.class.path"), args.toArray(new String[]{}));
|
|
|
|
@@ -117,6 +104,13 @@
|
|
throw new RuntimeException("TEST IS FAILED: Target has received" +
|
|
" corrupted data.");
|
|
}
|
|
+ if (InterprocessMessages.NO_DROP_HAPPENED ==
|
|
+ processResults.getExitValue()) {
|
|
+ processResults.printProcessErrorOutput(System.err);
|
|
+ throw new RuntimeException("Error. Drop did not happen." +
|
|
+ " Target frame is possibly covered by a window of other application." +
|
|
+ " Please, rerun the test with all windows minimized.");
|
|
+ }
|
|
processResults.verifyStdErr(System.err);
|
|
processResults.verifyProcessExitValue(System.err);
|
|
processResults.printProcessStandartOutput(System.out);
|
|
@@ -184,7 +178,7 @@
|
|
}
|
|
}
|
|
|
|
- public static void main(String[] args) {
|
|
+ public static void main(String[] args) throws InterruptedException {
|
|
Point dragSourcePoint = new Point(InterprocessArguments.DRAG_SOURCE_POINT_X_ARGUMENT.extractInt(args),
|
|
InterprocessArguments.DRAG_SOURCE_POINT_Y_ARGUMENT.extractInt(args));
|
|
Point targetFrameLocation = new Point(InterprocessArguments.TARGET_FRAME_X_POSITION_ARGUMENT.extractInt(args),
|
|
@@ -197,6 +191,8 @@
|
|
} catch (InterruptedException e) {
|
|
e.printStackTrace();
|
|
}
|
|
+ sleep(5000);
|
|
+ System.exit(InterprocessMessages.NO_DROP_HAPPENED);
|
|
}
|
|
|
|
|
|
--- jdk/test/java/awt/Frame/7024749/bug7024749.java Wed Mar 12 11:58:14 2014 +0000
|
|
+++ jdk/test/java/awt/Frame/7024749/bug7024749.java Tue Jun 03 14:19:36 2014 -0700
|
|
@@ -23,7 +23,7 @@
|
|
|
|
/*
|
|
* @test
|
|
- * @bug 7024749
|
|
+ * @bug 7024749 8019990
|
|
* @summary JDK7 b131---a crash in: Java_sun_awt_windows_ThemeReader_isGetThemeTransitionDurationDefined+0x75
|
|
* @library ../../regtesthelpers
|
|
* @build Util
|
|
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
|
|
+++ jdk/test/java/awt/FullScreen/DisplayChangeVITest/DisplayChangeVITest.java Tue Jun 03 14:19:36 2014 -0700
|
|
@@ -0,0 +1,245 @@
|
|
+/*
|
|
+ * Copyright (c) 2006, 2014, Oracle and/or its affiliates. All rights reserved.
|
|
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
|
+ *
|
|
+ * This code is free software; you can redistribute it and/or modify it
|
|
+ * under the terms of the GNU General Public License version 2 only, as
|
|
+ * published by the Free Software Foundation.
|
|
+ *
|
|
+ * This code is distributed in the hope that it will be useful, but WITHOUT
|
|
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
|
+ * version 2 for more details (a copy is included in the LICENSE file that
|
|
+ * accompanied this code).
|
|
+ *
|
|
+ * You should have received a copy of the GNU General Public License version
|
|
+ * 2 along with this work; if not, write to the Free Software Foundation,
|
|
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
+ *
|
|
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
|
+ * or visit www.oracle.com if you need additional information or have any
|
|
+ * questions.
|
|
+ */
|
|
+
|
|
+/**
|
|
+ * @test
|
|
+ * @bug 6366359
|
|
+ * @summary Test that we don't crash when changing from 8 to 16/32 bit modes
|
|
+ * @author Dmitri.Trembovetski@Sun.COM area=FullScreen
|
|
+ * @run main/othervm/timeout=200 DisplayChangeVITest
|
|
+ * @run main/othervm/timeout=200 -Dsun.java2d.d3d=false DisplayChangeVITest
|
|
+ * @run main/othervm/timeout=200 -Dsun.java2d.opengl=true DisplayChangeVITest
|
|
+ */
|
|
+
|
|
+import java.awt.Color;
|
|
+import java.awt.DisplayMode;
|
|
+import java.awt.Graphics;
|
|
+import java.awt.GraphicsDevice;
|
|
+import java.awt.GraphicsEnvironment;
|
|
+import java.awt.event.KeyAdapter;
|
|
+import java.awt.event.KeyEvent;
|
|
+import java.awt.image.BufferedImage;
|
|
+import java.awt.image.VolatileImage;
|
|
+import java.lang.Exception;
|
|
+import java.lang.Thread;
|
|
+import java.util.ArrayList;
|
|
+import java.util.Random;
|
|
+import javax.swing.JFrame;
|
|
+
|
|
+/**
|
|
+ * The test enters fullscreen mode (if it's supported) and then tries
|
|
+ * to switch between display moes with different depths and dimensions
|
|
+ * while doing both rendering to the screen (via a VolatileImage)
|
|
+ * and Swing repainting just to make things more chaotic.
|
|
+ *
|
|
+ * The procedure is repeated TEST_REPS times (3 by default).
|
|
+ *
|
|
+ * Don't pay attention to what happens on the screen, it won't be pretty.
|
|
+ * If the test doesn't crash or throw exceptions, it passes, otherwise
|
|
+ * it fails.
|
|
+ */
|
|
+public class DisplayChangeVITest extends JFrame implements Runnable {
|
|
+
|
|
+ private final Random rnd = new Random();
|
|
+ private VolatileImage bb;
|
|
+ private BufferedImage sprite;
|
|
+ private VolatileImage volSprite;
|
|
+
|
|
+ private static boolean done = false;
|
|
+ private static final Object lock = new Object();
|
|
+ private static final int TEST_REPS = 3;
|
|
+
|
|
+ private ArrayList<DisplayMode> dms;
|
|
+
|
|
+ DisplayChangeVITest() {
|
|
+ selectDisplayModes();
|
|
+ addKeyListener(new KeyAdapter() {
|
|
+ public void keyPressed(KeyEvent e) {
|
|
+ if (e.getKeyCode() == KeyEvent.VK_ESCAPE) {
|
|
+ synchronized (lock) {
|
|
+ done = true;
|
|
+ }
|
|
+ }
|
|
+ }
|
|
+ });
|
|
+ sprite = new BufferedImage(200, 200, BufferedImage.TYPE_INT_RGB);
|
|
+ sprite.getRaster().getDataBuffer();
|
|
+ Graphics g = sprite.getGraphics();
|
|
+ g.setColor(Color.yellow);
|
|
+ g.fillRect(0, 0, sprite.getWidth(), sprite.getHeight());
|
|
+ }
|
|
+
|
|
+ void render(Graphics g) {
|
|
+ do {
|
|
+ // volatile images validated here
|
|
+ initBackbuffer();
|
|
+
|
|
+ g.setColor(Color.black);
|
|
+ g.fillRect(0, 0, getWidth(), getHeight());
|
|
+
|
|
+ Graphics gg = bb.getGraphics();
|
|
+ gg.setColor(new Color(rnd.nextInt(0x00ffffff)));
|
|
+ gg.fillRect(0, 0, bb.getWidth(), bb.getHeight());
|
|
+ for (int x = 0; x < 10; x++) {
|
|
+ gg.drawImage(sprite, x*200, 0, null);
|
|
+ gg.drawImage(volSprite, x*200, 500, null);
|
|
+ }
|
|
+
|
|
+ g.drawImage(bb, 0, 0, null);
|
|
+ } while (bb.contentsLost());
|
|
+ }
|
|
+
|
|
+ private static void sleep(long msec) {
|
|
+ try { Thread.sleep(msec); } catch (InterruptedException e) {}
|
|
+ }
|
|
+
|
|
+ private int reps = 0;
|
|
+ public void run() {
|
|
+ GraphicsDevice gd = getGraphicsConfiguration().getDevice();
|
|
+ if (gd.isDisplayChangeSupported() && dms.size() > 0) {
|
|
+ while (!done && reps++ < TEST_REPS) {
|
|
+ for (DisplayMode dm : dms) {
|
|
+ System.err.printf("Entering DisplayMode[%dx%dx%d]\n",
|
|
+ dm.getWidth(), dm.getHeight(), dm.getBitDepth());
|
|
+ gd.setDisplayMode(dm);
|
|
+
|
|
+ initBackbuffer();
|
|
+ for (int i = 0; i < 10; i++) {
|
|
+ // render to the screen
|
|
+ render(getGraphics());
|
|
+ // ask Swing to repaint
|
|
+ repaint();
|
|
+ sleep(100);
|
|
+ }
|
|
+ sleep(1500);
|
|
+ }
|
|
+ }
|
|
+ } else {
|
|
+ System.err.println("Display mode change " +
|
|
+ "not supported. Test passed.");
|
|
+ }
|
|
+ dispose();
|
|
+ synchronized (lock) {
|
|
+ done = true;
|
|
+ lock.notify();
|
|
+ }
|
|
+ }
|
|
+
|
|
+ private void createBackbuffer() {
|
|
+ if (bb == null ||
|
|
+ bb.getWidth() != getWidth() || bb.getHeight() != getHeight())
|
|
+ {
|
|
+ bb = createVolatileImage(getWidth(), getHeight());
|
|
+ }
|
|
+ }
|
|
+
|
|
+ private void initBackbuffer() {
|
|
+ createBackbuffer();
|
|
+
|
|
+ int res = bb.validate(getGraphicsConfiguration());
|
|
+ if (res == VolatileImage.IMAGE_INCOMPATIBLE) {
|
|
+ bb = null;
|
|
+ createBackbuffer();
|
|
+ bb.validate(getGraphicsConfiguration());
|
|
+ res = VolatileImage.IMAGE_RESTORED;
|
|
+ }
|
|
+ if (res == VolatileImage.IMAGE_RESTORED) {
|
|
+ Graphics g = bb.getGraphics();
|
|
+ g.setColor(new Color(rnd.nextInt(0x00ffffff)));
|
|
+ g.fillRect(0, 0, bb.getWidth(), bb.getHeight());
|
|
+
|
|
+ volSprite = createVolatileImage(100, 100);
|
|
+ }
|
|
+ volSprite.validate(getGraphicsConfiguration());
|
|
+ }
|
|
+
|
|
+ private void selectDisplayModes() {
|
|
+ GraphicsDevice gd =
|
|
+ GraphicsEnvironment.getLocalGraphicsEnvironment().
|
|
+ getDefaultScreenDevice();
|
|
+ dms = new ArrayList<DisplayMode>();
|
|
+ DisplayMode dmArray[] = gd.getDisplayModes();
|
|
+ boolean found8 = false, found16 = false,
|
|
+ found24 = false, found32 = false;
|
|
+ for (DisplayMode dm : dmArray) {
|
|
+ if (!found8 &&
|
|
+ (dm.getBitDepth() == 8 ||
|
|
+ dm.getBitDepth() == DisplayMode.BIT_DEPTH_MULTI) &&
|
|
+ (dm.getWidth() >= 800 && dm.getWidth() < 1024))
|
|
+ {
|
|
+ dms.add(dm);
|
|
+ found8 = true;
|
|
+ continue;
|
|
+ }
|
|
+ if (!found32 &&
|
|
+ (dm.getBitDepth() == 32 ||
|
|
+ dm.getBitDepth() == DisplayMode.BIT_DEPTH_MULTI) &&
|
|
+ dm.getWidth() >= 1280)
|
|
+ {
|
|
+ dms.add(dm);
|
|
+ found32 = true;
|
|
+ continue;
|
|
+ }
|
|
+ if (!found16 &&
|
|
+ dm.getBitDepth() == 16 &&
|
|
+ (dm.getWidth() >= 1024 && dm.getWidth() < 1280))
|
|
+ {
|
|
+ dms.add(dm);
|
|
+ found16 = true;
|
|
+ continue;
|
|
+ }
|
|
+ if (found8 && found16 && found32) {
|
|
+ break;
|
|
+ }
|
|
+ }
|
|
+ System.err.println("Found display modes:");
|
|
+ for (DisplayMode dm : dms) {
|
|
+ System.err.printf("DisplayMode[%dx%dx%d]\n",
|
|
+ dm.getWidth(), dm.getHeight(), dm.getBitDepth());
|
|
+ }
|
|
+ }
|
|
+
|
|
+ public static void main(String[] args) throws Exception {
|
|
+ DisplayChangeVITest test = new DisplayChangeVITest();
|
|
+ GraphicsDevice gd =
|
|
+ GraphicsEnvironment.getLocalGraphicsEnvironment().
|
|
+ getDefaultScreenDevice();
|
|
+ if (gd.isFullScreenSupported()) {
|
|
+ gd.setFullScreenWindow(test);
|
|
+ Thread t = new Thread(test);
|
|
+ t.run();
|
|
+ synchronized (lock) {
|
|
+ while (!done) {
|
|
+ try {
|
|
+ lock.wait(50);
|
|
+ } catch (InterruptedException ex) {
|
|
+ ex.printStackTrace();
|
|
+ }
|
|
+ }
|
|
+ }
|
|
+ System.err.println("Test Passed.");
|
|
+ } else {
|
|
+ System.err.println("Full screen not supported. Test passed.");
|
|
+ }
|
|
+ }
|
|
+}
|
|
--- jdk/test/java/awt/regtesthelpers/process/ProcessCommunicator.java Wed Mar 12 11:58:14 2014 +0000
|
|
+++ jdk/test/java/awt/regtesthelpers/process/ProcessCommunicator.java Tue Jun 03 14:19:36 2014 -0700
|
|
@@ -81,7 +81,7 @@
|
|
public static ProcessResults executeChildProcess(final Class classToExecute,
|
|
final String [] args)
|
|
{
|
|
- return executeChildProcess(classToExecute, " ", args);
|
|
+ return executeChildProcess(classToExecute, System.getProperty("java.class.path"), args);
|
|
}
|
|
|
|
/**
|
|
--- jdk/test/java/lang/SecurityManager/CheckPackageAccess.java Wed Mar 12 11:58:14 2014 +0000
|
|
+++ jdk/test/java/lang/SecurityManager/CheckPackageAccess.java Tue Jun 03 14:19:36 2014 -0700
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved.
|
|
+ * Copyright (c) 2012, 2014, Oracle and/or its affiliates. All rights reserved.
|
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
|
*
|
|
* This code is free software; you can redistribute it and/or modify it
|
|
@@ -23,7 +23,7 @@
|
|
|
|
/*
|
|
* @test
|
|
- * @bug 6741606 7146431 8000450 8019830 8022945
|
|
+ * @bug 6741606 7146431 8000450 8019830 8022945 8027144 8041633
|
|
* @summary Make sure all restricted packages listed in the package.access
|
|
* property in the java.security file are blocked
|
|
* @run main/othervm CheckPackageAccess
|
|
@@ -84,7 +84,8 @@
|
|
"org.jcp.xml.dsig.internal.",
|
|
"jdk.internal.",
|
|
"jdk.nashorn.internal.",
|
|
- "jdk.nashorn.tools."
|
|
+ "jdk.nashorn.tools.",
|
|
+ "com.sun.activation.registries."
|
|
};
|
|
|
|
public static void main(String[] args) throws Exception {
|
|
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
|
|
+++ jdk/test/java/net/ServerSocket/AnotherSelectFdsLimit.java Tue Jun 03 14:19:36 2014 -0700
|
|
@@ -0,0 +1,78 @@
|
|
+/*
|
|
+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
|
|
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
|
+ *
|
|
+ * This code is free software; you can redistribute it and/or modify it
|
|
+ * under the terms of the GNU General Public License version 2 only, as
|
|
+ * published by the Free Software Foundation.
|
|
+ *
|
|
+ * This code is distributed in the hope that it will be useful, but WITHOUT
|
|
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
|
+ * version 2 for more details (a copy is included in the LICENSE file that
|
|
+ * accompanied this code).
|
|
+ *
|
|
+ * You should have received a copy of the GNU General Public License version
|
|
+ * 2 along with this work; if not, write to the Free Software Foundation,
|
|
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
+ *
|
|
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
|
+ * or visit www.oracle.com if you need additional information or have any
|
|
+ * questions.
|
|
+ */
|
|
+
|
|
+/*
|
|
+ * @test
|
|
+ * @bug 8035897
|
|
+ * @summary FD_SETSIZE should be set on macosx
|
|
+ * @run main/othervm AnotherSelectFdsLimit 1023
|
|
+ * @run main/othervm AnotherSelectFdsLimit 1024
|
|
+ * @run main/othervm AnotherSelectFdsLimit 1025
|
|
+ * @run main/othervm AnotherSelectFdsLimit 1600
|
|
+ */
|
|
+
|
|
+import java.io.IOException;
|
|
+import java.net.ServerSocket;
|
|
+import java.net.SocketTimeoutException;
|
|
+import java.util.ArrayList;
|
|
+import java.util.List;
|
|
+
|
|
+public class AnotherSelectFdsLimit {
|
|
+ static final int DEFAULT_FDS_TO_USE = 1600;
|
|
+
|
|
+ public static void main(String [] args) throws Exception {
|
|
+ if (!System.getProperty("os.name").contains("OS X")) {
|
|
+ System.out.println("Test only run on MAC. Exiting.");
|
|
+ return;
|
|
+ }
|
|
+
|
|
+ int fdsToUse = DEFAULT_FDS_TO_USE;
|
|
+ if (args.length == 1)
|
|
+ fdsToUse = Integer.parseInt(args[0]);
|
|
+
|
|
+ System.out.println("Using " + fdsToUse + " fds.");
|
|
+
|
|
+ List<Thread> threads = new ArrayList<>();
|
|
+ for (int i=0; i<fdsToUse; i++)
|
|
+ threads.add(new WorkerThread());
|
|
+
|
|
+ for (Thread t : threads)
|
|
+ t.start();
|
|
+
|
|
+ for (Thread t : threads)
|
|
+ t.join();
|
|
+ }
|
|
+
|
|
+ static class WorkerThread extends Thread {
|
|
+ public void run() {
|
|
+ try (ServerSocket ss = new ServerSocket(0)) {
|
|
+ ss.setSoTimeout(2000);
|
|
+ ss.accept();
|
|
+ } catch (SocketTimeoutException x) {
|
|
+ // expected
|
|
+ } catch (IOException x) {
|
|
+ throw new java.io.UncheckedIOException(x);
|
|
+ }
|
|
+ }
|
|
+ }
|
|
+}
|
|
--- jdk/test/java/nio/channels/Selector/ByteServer.java Wed Mar 12 11:58:14 2014 +0000
|
|
+++ jdk/test/java/nio/channels/Selector/ByteServer.java Tue Jun 03 14:19:36 2014 -0700
|
|
@@ -22,52 +22,54 @@
|
|
*/
|
|
|
|
/**
|
|
- *
|
|
- * Utility class for tests. A simple server, which waits for a connection,
|
|
- * writes out n bytes and waits.
|
|
+ * Utility class for tests. A simple "in-thread" server to accept connections
|
|
+ * and write bytes.
|
|
* @author kladko
|
|
*/
|
|
|
|
import java.net.Socket;
|
|
import java.net.ServerSocket;
|
|
+import java.net.SocketAddress;
|
|
+import java.net.InetSocketAddress;
|
|
+import java.io.IOException;
|
|
+import java.io.Closeable;
|
|
|
|
-public class ByteServer {
|
|
+public class ByteServer implements Closeable {
|
|
|
|
- public static final String LOCALHOST = "localhost";
|
|
- private int bytecount;
|
|
- private Socket socket;
|
|
- private ServerSocket serversocket;
|
|
- private Thread serverthread;
|
|
- volatile Exception savedException;
|
|
+ private final ServerSocket ss;
|
|
+ private Socket s;
|
|
|
|
- public ByteServer(int bytecount) throws Exception{
|
|
- this.bytecount = bytecount;
|
|
- serversocket = new ServerSocket(0);
|
|
+ ByteServer() throws IOException {
|
|
+ this.ss = new ServerSocket(0);
|
|
}
|
|
|
|
- public int port() {
|
|
- return serversocket.getLocalPort();
|
|
+ SocketAddress address() {
|
|
+ return new InetSocketAddress(ss.getInetAddress(), ss.getLocalPort());
|
|
}
|
|
|
|
- public void start() {
|
|
- serverthread = new Thread() {
|
|
- public void run() {
|
|
- try {
|
|
- socket = serversocket.accept();
|
|
- socket.getOutputStream().write(new byte[bytecount]);
|
|
- socket.getOutputStream().flush();
|
|
- } catch (Exception e) {
|
|
- System.err.println("Exception in ByteServer: " + e);
|
|
- System.exit(1);
|
|
- }
|
|
- }
|
|
- };
|
|
- serverthread.start();
|
|
+ void acceptConnection() throws IOException {
|
|
+ if (s != null)
|
|
+ throw new IllegalStateException("already connected");
|
|
+ this.s = ss.accept();
|
|
}
|
|
|
|
- public void exit() throws Exception {
|
|
- serverthread.join();
|
|
- socket.close();
|
|
- serversocket.close();
|
|
+ void closeConnection() throws IOException {
|
|
+ Socket s = this.s;
|
|
+ if (s != null) {
|
|
+ this.s = null;
|
|
+ s.close();
|
|
+ }
|
|
+ }
|
|
+
|
|
+ void write(int count) throws IOException {
|
|
+ if (s == null)
|
|
+ throw new IllegalStateException("no connection");
|
|
+ s.getOutputStream().write(new byte[count]);
|
|
+ }
|
|
+
|
|
+ public void close() throws IOException {
|
|
+ if (s != null)
|
|
+ s.close();
|
|
+ ss.close();
|
|
}
|
|
}
|
|
--- jdk/test/java/nio/channels/Selector/ReadAfterConnect.java Wed Mar 12 11:58:14 2014 +0000
|
|
+++ jdk/test/java/nio/channels/Selector/ReadAfterConnect.java Tue Jun 03 14:19:36 2014 -0700
|
|
@@ -27,27 +27,25 @@
|
|
* @author kladko
|
|
*/
|
|
|
|
-import java.net.*;
|
|
-import java.nio.*;
|
|
-import java.nio.channels.*;
|
|
+import java.nio.channels.Selector;
|
|
+import java.nio.channels.SelectionKey;
|
|
+import java.nio.channels.SocketChannel;
|
|
|
|
public class ReadAfterConnect {
|
|
+ public static void main(String[] argv) throws Exception {
|
|
+ try (ByteServer server = new ByteServer();
|
|
+ SocketChannel sc = SocketChannel.open(server.address())) {
|
|
|
|
- public static void main(String[] argv) throws Exception {
|
|
- ByteServer server = new ByteServer(0); // server: accept connection and do nothing
|
|
- server.start();
|
|
- InetSocketAddress isa = new InetSocketAddress(
|
|
- InetAddress.getByName(ByteServer.LOCALHOST), server.port());
|
|
- Selector sel = Selector.open();
|
|
- SocketChannel sc = SocketChannel.open();
|
|
- sc.connect(isa);
|
|
- sc.configureBlocking(false);
|
|
- sc.register(sel, SelectionKey.OP_READ);
|
|
- // Previously channel would get selected here, although there is nothing to read
|
|
- if (sel.selectNow() != 0)
|
|
- throw new Exception("Select returned nonzero value");
|
|
- sc.close();
|
|
- server.exit();
|
|
+ server.acceptConnection();
|
|
+
|
|
+ try (Selector sel = Selector.open()) {
|
|
+ sc.configureBlocking(false);
|
|
+ sc.register(sel, SelectionKey.OP_READ);
|
|
+ // Previously channel would get selected here, although there is nothing to read
|
|
+ if (sel.selectNow() != 0)
|
|
+ throw new Exception("Select returned nonzero value");
|
|
+ }
|
|
+ }
|
|
}
|
|
|
|
}
|
|
--- jdk/test/java/nio/channels/Selector/SelectAfterRead.java Wed Mar 12 11:58:14 2014 +0000
|
|
+++ jdk/test/java/nio/channels/Selector/SelectAfterRead.java Tue Jun 03 14:19:36 2014 -0700
|
|
@@ -28,60 +28,62 @@
|
|
* @author kladko
|
|
*/
|
|
|
|
-import java.net.*;
|
|
-import java.nio.*;
|
|
-import java.nio.channels.*;
|
|
+import java.nio.ByteBuffer;
|
|
+import java.nio.channels.Selector;
|
|
+import java.nio.channels.SelectionKey;
|
|
+import java.nio.channels.SocketChannel;
|
|
|
|
public class SelectAfterRead {
|
|
|
|
- final static int TIMEOUT = 1000;
|
|
+ private static final int TIMEOUT = 1000;
|
|
|
|
public static void main(String[] argv) throws Exception {
|
|
- InetAddress lh = InetAddress.getByName(ByteServer.LOCALHOST);
|
|
|
|
// server: accept connection and write one byte
|
|
- ByteServer server = new ByteServer(1);
|
|
- server.start();
|
|
- Selector sel = Selector.open();
|
|
- SocketChannel sc = SocketChannel.open();
|
|
- sc.connect(new InetSocketAddress(lh, server.port()));
|
|
- sc.read(ByteBuffer.allocate(1));
|
|
- sc.configureBlocking(false);
|
|
- sc.register(sel, SelectionKey.OP_READ);
|
|
- // previously on Windows select would select channel here, although there was
|
|
- // nothing to read
|
|
- if (sel.selectNow() != 0)
|
|
- throw new Exception("Select returned nonzero value");
|
|
- sc.close();
|
|
- sel.close();
|
|
- server.exit();
|
|
+ try (ByteServer server = new ByteServer();
|
|
+ SocketChannel sc = SocketChannel.open(server.address())) {
|
|
+
|
|
+ server.acceptConnection();
|
|
+ server.write(1);
|
|
+
|
|
+ try (Selector sel = Selector.open()) {
|
|
+ sc.read(ByteBuffer.allocate(1));
|
|
+ sc.configureBlocking(false);
|
|
+ sc.register(sel, SelectionKey.OP_READ);
|
|
+ // previously on Windows select would select channel here, although there was
|
|
+ // nothing to read
|
|
+ if (sel.selectNow() != 0)
|
|
+ throw new Exception("Select returned nonzero value");
|
|
+ }
|
|
+ }
|
|
|
|
// Now we will test a two reads combination
|
|
// server: accept connection and write two bytes
|
|
- server = new ByteServer(2);
|
|
- server.start();
|
|
- sc = SocketChannel.open();
|
|
- sc.connect(new InetSocketAddress(lh, server.port()));
|
|
- sc.configureBlocking(false);
|
|
- sel = Selector.open();
|
|
- sc.register(sel, SelectionKey.OP_READ);
|
|
- if (sel.select(TIMEOUT) != 1)
|
|
- throw new Exception("One selected key expected");
|
|
- sel.selectedKeys().clear();
|
|
- // previously on Windows a channel would get selected only once
|
|
- if (sel.selectNow() != 1)
|
|
- throw new Exception("One selected key expected");
|
|
- // Previously on Windows two consequent reads would cause select()
|
|
- // to select a channel, although there was nothing remaining to
|
|
- // read in the channel
|
|
- if (sc.read(ByteBuffer.allocate(1)) != 1)
|
|
- throw new Exception("One byte expected");
|
|
- if (sc.read(ByteBuffer.allocate(1)) != 1)
|
|
- throw new Exception("One byte expected");
|
|
- if (sel.selectNow() != 0)
|
|
- throw new Exception("Select returned nonzero value");
|
|
- sc.close();
|
|
- sel.close();
|
|
- server.exit();
|
|
+ try (ByteServer server = new ByteServer();
|
|
+ SocketChannel sc = SocketChannel.open(server.address())) {
|
|
+
|
|
+ server.acceptConnection();
|
|
+ server.write(2);
|
|
+
|
|
+ try (Selector sel = Selector.open()) {
|
|
+ sc.configureBlocking(false);
|
|
+ sc.register(sel, SelectionKey.OP_READ);
|
|
+ if (sel.select(TIMEOUT) != 1)
|
|
+ throw new Exception("One selected key expected");
|
|
+ sel.selectedKeys().clear();
|
|
+ // previously on Windows a channel would get selected only once
|
|
+ if (sel.selectNow() != 1)
|
|
+ throw new Exception("One selected key expected");
|
|
+ // Previously on Windows two consequent reads would cause select()
|
|
+ // to select a channel, although there was nothing remaining to
|
|
+ // read in the channel
|
|
+ if (sc.read(ByteBuffer.allocate(1)) != 1)
|
|
+ throw new Exception("One byte expected");
|
|
+ if (sc.read(ByteBuffer.allocate(1)) != 1)
|
|
+ throw new Exception("One byte expected");
|
|
+ if (sel.selectNow() != 0)
|
|
+ throw new Exception("Select returned nonzero value");
|
|
+ }
|
|
+ }
|
|
}
|
|
}
|
|
--- jdk/test/java/nio/channels/Selector/SelectWrite.java Wed Mar 12 11:58:14 2014 +0000
|
|
+++ jdk/test/java/nio/channels/Selector/SelectWrite.java Tue Jun 03 14:19:36 2014 -0700
|
|
@@ -22,36 +22,33 @@
|
|
*/
|
|
|
|
/* @test
|
|
- @bug 4645302
|
|
- @summary Socket with OP_WRITE would get selected only once
|
|
- @author kladko
|
|
+ * @bug 4645302
|
|
+ * @summary Socket with OP_WRITE would get selected only once
|
|
+ * @author kladko
|
|
*/
|
|
|
|
-import java.net.*;
|
|
-import java.nio.*;
|
|
-import java.nio.channels.*;
|
|
-
|
|
+import java.nio.channels.Selector;
|
|
+import java.nio.channels.SelectionKey;
|
|
+import java.nio.channels.SocketChannel;
|
|
|
|
public class SelectWrite {
|
|
|
|
public static void main(String[] argv) throws Exception {
|
|
- ByteServer server = new ByteServer(0);
|
|
- // server: accept connection and do nothing
|
|
- server.start();
|
|
- InetSocketAddress isa = new InetSocketAddress(
|
|
- InetAddress.getByName(ByteServer.LOCALHOST), server.port());
|
|
- Selector sel = Selector.open();
|
|
- SocketChannel sc = SocketChannel.open();
|
|
- sc.connect(isa);
|
|
- sc.configureBlocking(false);
|
|
- sc.register(sel, SelectionKey.OP_WRITE);
|
|
- sel.select();
|
|
- sel.selectedKeys().clear();
|
|
- if (sel.select() == 0) {
|
|
- throw new Exception("Select returned zero");
|
|
+ try (ByteServer server = new ByteServer();
|
|
+ SocketChannel sc = SocketChannel.open(server.address())) {
|
|
+
|
|
+ server.acceptConnection();
|
|
+
|
|
+ try (Selector sel = Selector.open()) {
|
|
+ sc.configureBlocking(false);
|
|
+ sc.register(sel, SelectionKey.OP_WRITE);
|
|
+ sel.select();
|
|
+ sel.selectedKeys().clear();
|
|
+ if (sel.select() == 0) {
|
|
+ throw new Exception("Select returned zero");
|
|
+ }
|
|
+ }
|
|
}
|
|
- sc.close();
|
|
- sel.close();
|
|
}
|
|
|
|
}
|
|
--- jdk/test/javax/management/remote/mandatory/util/CacheMapTest.java Wed Mar 12 11:58:14 2014 +0000
|
|
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
|
|
@@ -1,110 +0,0 @@
|
|
-/*
|
|
- * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
|
|
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
|
- *
|
|
- * This code is free software; you can redistribute it and/or modify it
|
|
- * under the terms of the GNU General Public License version 2 only, as
|
|
- * published by the Free Software Foundation.
|
|
- *
|
|
- * This code is distributed in the hope that it will be useful, but WITHOUT
|
|
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
|
- * version 2 for more details (a copy is included in the LICENSE file that
|
|
- * accompanied this code).
|
|
- *
|
|
- * You should have received a copy of the GNU General Public License version
|
|
- * 2 along with this work; if not, write to the Free Software Foundation,
|
|
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
- *
|
|
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
|
- * or visit www.oracle.com if you need additional information or have any
|
|
- * questions.
|
|
- */
|
|
-
|
|
-/*
|
|
- * @test
|
|
- * @bug 7654321
|
|
- * @summary Tests the CacheMap class.
|
|
- * @author Eamonn McManus
|
|
- * @run clean CacheMapTest
|
|
- * @run build CacheMapTest
|
|
- * @run main CacheMapTest
|
|
- */
|
|
-
|
|
-import java.util.Iterator;
|
|
-import java.util.Map;
|
|
-
|
|
-import com.sun.jmx.remote.util.CacheMap;
|
|
-
|
|
-public class CacheMapTest {
|
|
- public static void main(String[] args) {
|
|
- try {
|
|
- boolean ok = test(5) && test(100);
|
|
- if (ok) {
|
|
- System.out.println("Test completed");
|
|
- return;
|
|
- } else {
|
|
- System.out.println("Test failed!");
|
|
- System.exit(1);
|
|
- }
|
|
- } catch (Exception e) {
|
|
- System.err.println("Unexpected exception: " + e);
|
|
- e.printStackTrace();
|
|
- System.exit(1);
|
|
- }
|
|
- }
|
|
-
|
|
- private static boolean test(int cacheSize) throws Exception {
|
|
- System.out.println("CacheMap test with cache size " + cacheSize);
|
|
- CacheMap map = new CacheMap(cacheSize);
|
|
- int size = 0;
|
|
- int maxIterations = cacheSize * 10;
|
|
- while (map.size() == size && size < maxIterations) {
|
|
- Integer key = new Integer(size);
|
|
- Object x = map.put(key, "x");
|
|
- if (x != null) {
|
|
- System.out.println("Map already had entry " + key + "!");
|
|
- return false;
|
|
- }
|
|
- x = map.get(key);
|
|
- if (!"x".equals(x)) {
|
|
- System.out.println("Got back surprising value: " + x);
|
|
- return false;
|
|
- }
|
|
- size++;
|
|
- }
|
|
- System.out.println("Map size is " + map.size() + " after inserting " +
|
|
- size + " elements");
|
|
- do {
|
|
- System.gc();
|
|
- Thread.sleep(1);
|
|
- System.out.println("Map size is " + map.size() + " after GC");
|
|
- } while (map.size() > cacheSize);
|
|
- if (map.size() < cacheSize) {
|
|
- System.out.println("Map shrank to less than cache size: " +
|
|
- map.size() + " (surprising but not wrong)");
|
|
- } else
|
|
- System.out.println("Map shrank to cache size as expected");
|
|
- int lowest = size - cacheSize;
|
|
- // lowest value that can still be in cache if LRU is respected
|
|
- for (Iterator it = map.entrySet().iterator(); it.hasNext(); ) {
|
|
- Map.Entry entry = (Map.Entry) it.next();
|
|
- Integer x = (Integer) entry.getKey();
|
|
- int xx = x.intValue();
|
|
- if (xx < lowest || xx >= size) {
|
|
- System.out.println("Old value remained (" + x + "), " +
|
|
- "expected none earlier than " + lowest);
|
|
- return false;
|
|
- }
|
|
- Object xxx = entry.getValue();
|
|
- if (!"x".equals(xxx)) {
|
|
- System.out.println("Got back surprising value: " + xxx);
|
|
- return false;
|
|
- }
|
|
- }
|
|
- if (map.size() > 0)
|
|
- System.out.println("Remaining elements are the most recent ones");
|
|
- System.out.println("Test passed");
|
|
- return true;
|
|
- }
|
|
-}
|
|
--- jdk/test/sun/misc/Version/Version.java Wed Mar 12 11:58:14 2014 +0000
|
|
+++ jdk/test/sun/misc/Version/Version.java Tue Jun 03 14:19:36 2014 -0700
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright (c) 2010, 2011, Oracle and/or its affiliates. All rights reserved.
|
|
+ * Copyright (c) 2010, 2014, Oracle and/or its affiliates. All rights reserved.
|
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
|
*
|
|
* This code is free software; you can redistribute it and/or modify it
|
|
@@ -116,10 +116,16 @@
|
|
} else if (Character.isDigit(cs.charAt(0)) &&
|
|
Character.isDigit(cs.charAt(1)) && cs.charAt(2) == '.' &&
|
|
Character.isDigit(cs.charAt(3))) {
|
|
- // HSX has nn.n (major.minor) version
|
|
+ // HSX has nn.n[n] (major.minor) version
|
|
major = Integer.valueOf(version.substring(0, 2)).intValue();
|
|
- minor = Character.digit(cs.charAt(3), 10);
|
|
- cs = cs.subSequence(4, cs.length());
|
|
+ if (Character.isDigit(cs.charAt(4))) {
|
|
+ minor = Integer.valueOf(version.substring(3, 5)).intValue();
|
|
+ cs = cs.subSequence(5, cs.length());
|
|
+ }
|
|
+ else {
|
|
+ minor = Character.digit(cs.charAt(3), 10);
|
|
+ cs = cs.subSequence(4, cs.length());
|
|
+ }
|
|
}
|
|
if (cs.charAt(0) == '_' && cs.length() >= 3 &&
|
|
Character.isDigit(cs.charAt(1)) &&
|
|
--- jdk/test/sun/util/calendar/zi/Zoneinfo.java Wed Mar 12 11:58:14 2014 +0000
|
|
+++ jdk/test/sun/util/calendar/zi/Zoneinfo.java Tue Jun 03 14:19:36 2014 -0700
|
|
@@ -372,6 +372,7 @@
|
|
ZoneRec zrec = zone.get(zone.size()-1);
|
|
tz.getOffsetIndex(zrec.getGmtOffset());
|
|
|
|
+ int lastGmtOffsetValue = -1;
|
|
int currentSave = 0;
|
|
boolean usedZone;
|
|
for (int zindex = 0; zindex < zone.size(); zindex++) {
|
|
@@ -380,9 +381,12 @@
|
|
gmtOffset = zrec.getGmtOffset();
|
|
int stdOffset = zrec.getDirectSave();
|
|
|
|
+ if (gmtOffset != lastGmtOffsetValue) {
|
|
+ tz.setRawOffset(gmtOffset, fromTime);
|
|
+ lastGmtOffsetValue = gmtOffset;
|
|
+ }
|
|
// If this is the last zone record, take the last rule info.
|
|
if (!zrec.hasUntil()) {
|
|
- tz.setRawOffset(gmtOffset, fromTime);
|
|
if (zrec.hasRuleReference()) {
|
|
tz.setLastRules(zrec.getRuleRef().getLastRules());
|
|
} else if (stdOffset != 0) {
|
|
--- jdk/test/sun/util/calendar/zi/tzdata/VERSION Wed Mar 12 11:58:14 2014 +0000
|
|
+++ jdk/test/sun/util/calendar/zi/tzdata/VERSION Tue Jun 03 14:19:36 2014 -0700
|
|
@@ -21,4 +21,4 @@
|
|
# or visit www.oracle.com if you need additional information or have any
|
|
# questions.
|
|
#
|
|
-tzdata2013i
|
|
+tzdata2014c
|
|
--- jdk/test/sun/util/calendar/zi/tzdata/africa Wed Mar 12 11:58:14 2014 +0000
|
|
+++ jdk/test/sun/util/calendar/zi/tzdata/africa Tue Jun 03 14:19:36 2014 -0700
|
|
@@ -358,11 +358,54 @@
|
|
# http://www.worldtimezone.com/dst_news/dst_news_egypt02.html
|
|
# </a>
|
|
|
|
+# From Ahmad El-Dardiry (2014-05-07):
|
|
+# Egypt is to change back to Daylight system on May 15
|
|
+# http://english.ahram.org.eg/NewsContent/1/64/100735/Egypt/Politics-/Egypts-government-to-reapply-daylight-saving-time-.aspx
|
|
+
|
|
+# From Gunther Vermier (2015-05-13):
|
|
+# our Egypt office confirms that the change will be at 15 May "midnight" (24:00)
|
|
+
|
|
+# From Paul Eggert (2014-05-13):
|
|
+# Sarah El Deeb and Lee Keath of AP report that the Egyptian government says
|
|
+# the change is because of blackouts in Cairo, even though Ahram Online (cited
|
|
+# above) says DST had no affect on electricity consumption. The AP story says
|
|
+# DST will not be observed during Ramadan. There is no information about when
|
|
+# DST will end. See:
|
|
+# http://abcnews.go.com/International/wireStory/el-sissi-pushes-egyptians-line-23614833
|
|
+#
|
|
+# For now, guess that later transitions will use 2010's rules, and that
|
|
+# Egypt will agree with Morocco (see below) about the date Ramadan starts and
|
|
+# ends, though (unlike Morocco) it will switch at 00:00 standard time. In
|
|
+# Egypt the spring-forward transitions are removed for 2020-2022, when the
|
|
+# guessed spring-forward date falls during the estimated Ramadan, and all
|
|
+# transitions removed for 2023-2038, where the estimated Ramadan falls entirely
|
|
+# outside the guessed daylight-saving time. Ramadan intrudes on the guessed
|
|
+# DST starting in 2039, but that's beyond our somewhat-arbitrary cutoff.
|
|
+
|
|
Rule Egypt 2008 only - Aug lastThu 23:00s 0 -
|
|
Rule Egypt 2009 only - Aug 20 23:00s 0 -
|
|
Rule Egypt 2010 only - Aug 11 0:00 0 -
|
|
Rule Egypt 2010 only - Sep 10 0:00 1:00 S
|
|
Rule Egypt 2010 only - Sep lastThu 23:00s 0 -
|
|
+Rule Egypt 2014 only - May 15 24:00 1:00 S
|
|
+Rule Egypt 2014 only - Jun 29 0:00s 0 -
|
|
+Rule Egypt 2014 only - Jul 29 0:00s 1:00 S
|
|
+Rule Egypt 2014 max - Sep lastThu 23:00s 0 -
|
|
+Rule Egypt 2015 2019 - Apr lastFri 0:00s 1:00 S
|
|
+Rule Egypt 2015 only - Jun 18 0:00s 0 -
|
|
+Rule Egypt 2015 only - Jul 18 0:00s 1:00 S
|
|
+Rule Egypt 2016 only - Jun 7 0:00s 0 -
|
|
+Rule Egypt 2016 only - Jul 7 0:00s 1:00 S
|
|
+Rule Egypt 2017 only - May 27 0:00s 0 -
|
|
+Rule Egypt 2017 only - Jun 26 0:00s 1:00 S
|
|
+Rule Egypt 2018 only - May 16 0:00s 0 -
|
|
+Rule Egypt 2018 only - Jun 15 0:00s 1:00 S
|
|
+Rule Egypt 2019 only - May 6 0:00s 0 -
|
|
+Rule Egypt 2019 only - Jun 5 0:00s 1:00 S
|
|
+Rule Egypt 2020 only - May 24 0:00s 1:00 S
|
|
+Rule Egypt 2021 only - May 13 0:00s 1:00 S
|
|
+Rule Egypt 2022 only - May 3 0:00s 1:00 S
|
|
+Rule Egypt 2023 max - Apr lastFri 0:00s 1:00 S
|
|
|
|
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
|
Zone Africa/Cairo 2:05:09 - LMT 1900 Oct
|
|
@@ -891,7 +934,10 @@
|
|
# Another source (specifying the time for start and end in the decree):
|
|
# http://www.lemag.ma/Heure-d-ete-au-Maroc-jusqu-au-27-octobre_a75620.html
|
|
|
|
-# From Paul Eggert (2013-10-03):
|
|
+# From Sebastien Willemijns (2014-03-18):
|
|
+# http://www.afriquinfos.com/articles/2014/3/18/maroc-heure-dete-avancez-tous-horloges-247891.asp
|
|
+
|
|
+# From Paul Eggert (2014-03-19):
|
|
# To estimate what the Moroccan government will do in future years,
|
|
# transition dates for 2014 through 2038 were determined by running
|
|
# the following program under GNU Emacs 24.3:
|
|
--- jdk/test/sun/util/calendar/zi/tzdata/antarctica Wed Mar 12 11:58:14 2014 +0000
|
|
+++ jdk/test/sun/util/calendar/zi/tzdata/antarctica Tue Jun 03 14:19:36 2014 -0700
|
|
@@ -253,24 +253,41 @@
|
|
# year-round base
|
|
# Scott Base, Ross Island, since 1957-01.
|
|
# See Pacific/Auckland.
|
|
-#
|
|
-# These rules for New Zealand are stolen from the 'australasia' file.
|
|
-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
|
-Rule NZAQ 1974 only - Nov 3 2:00s 1:00 D
|
|
-Rule NZAQ 1975 1988 - Oct lastSun 2:00s 1:00 D
|
|
-Rule NZAQ 1989 only - Oct 8 2:00s 1:00 D
|
|
-Rule NZAQ 1990 2006 - Oct Sun>=1 2:00s 1:00 D
|
|
-Rule NZAQ 1975 only - Feb 23 2:00s 0 S
|
|
-Rule NZAQ 1976 1989 - Mar Sun>=1 2:00s 0 S
|
|
-Rule NZAQ 1990 2007 - Mar Sun>=15 2:00s 0 S
|
|
-Rule NZAQ 2007 max - Sep lastSun 2:00s 1:00 D
|
|
-Rule NZAQ 2008 max - Apr Sun>=1 2:00s 0 S
|
|
|
|
# Norway - territories
|
|
# Bouvet (never inhabited)
|
|
#
|
|
# claims
|
|
# Peter I Island (never inhabited)
|
|
+#
|
|
+# year-round base
|
|
+# Troll, Queen Maud Land, -720041+0023206, since 2005-02-12
|
|
+#
|
|
+# From Paul-Inge Flakstad (2014-03-10):
|
|
+# I recently had a long dialog about this with the developer of timegenie.com.
|
|
+# In the absence of specific dates, he decided to choose some likely ones:
|
|
+# GMT +1 - From March 1 to the last Sunday in March
|
|
+# GMT +2 - From the last Sunday in March until the last Sunday in October
|
|
+# GMT +1 - From the last Sunday in October until November 7
|
|
+# GMT +0 - From November 7 until March 1
|
|
+# The dates for switching to and from UTC+0 will probably not be absolutely
|
|
+# correct, but they should be quite close to the actual dates.
|
|
+#
|
|
+# From Paul Eggert (2014-03-21):
|
|
+# The CET-switching Troll rules require zic from tzcode 2014b or later, so as
|
|
+# suggested by Bengt-Inge Larsson comment them out for now, and approximate
|
|
+# with only UTC and CEST. Uncomment them when 2014b is more prevalent.
|
|
+#
|
|
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
|
+#Rule Troll 2005 max - Mar 1 1:00u 1:00 CET
|
|
+Rule Troll 2005 max - Mar lastSun 1:00u 2:00 CEST
|
|
+#Rule Troll 2005 max - Oct lastSun 1:00u 1:00 CET
|
|
+#Rule Troll 2004 max - Nov 7 1:00u 0:00 UTC
|
|
+# Remove the following line when uncommenting the above '#Rule' lines.
|
|
+Rule Troll 2004 max - Oct lastSun 1:00u 0:00 UTC
|
|
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
|
+Zone Antarctica/Troll 0 - zzz 2005 Feb 12
|
|
+ 0:00 Troll %s
|
|
|
|
# Poland - year-round base
|
|
# Arctowski, King George Island, -620945-0582745, since 1977
|
|
--- jdk/test/sun/util/calendar/zi/tzdata/asia Wed Mar 12 11:58:14 2014 +0000
|
|
+++ jdk/test/sun/util/calendar/zi/tzdata/asia Tue Jun 03 14:19:36 2014 -0700
|
|
@@ -1113,8 +1113,13 @@
|
|
Rule Zion 1986 only - Sep 7 0:00 0 S
|
|
Rule Zion 1987 only - Apr 15 0:00 1:00 D
|
|
Rule Zion 1987 only - Sep 13 0:00 0 S
|
|
-Rule Zion 1988 only - Apr 9 0:00 1:00 D
|
|
-Rule Zion 1988 only - Sep 3 0:00 0 S
|
|
+
|
|
+# From Avigdor Finkelstein (2014-03-05):
|
|
+# I check the Parliament (Knesset) records and there it's stated that the
|
|
+# [1988] transition should take place on Saturday night, when the Sabbath
|
|
+# ends and changes to Sunday.
|
|
+Rule Zion 1988 only - Apr 10 0:00 1:00 D
|
|
+Rule Zion 1988 only - Sep 4 0:00 0 S
|
|
|
|
# From Ephraim Silverberg
|
|
# (1997-03-04, 1998-03-16, 1998-12-28, 2000-01-17, 2000-07-25, 2004-12-22,
|
|
@@ -1365,22 +1370,6 @@
|
|
# "Jordan will switch to winter time on Friday, October 27".
|
|
#
|
|
|
|
-# From Phil Pizzey (2009-04-02):
|
|
-# ...I think I may have spotted an error in the timezone data for
|
|
-# Jordan.
|
|
-# The current (2009d) asia file shows Jordan going to daylight
|
|
-# saving
|
|
-# time on the last Thursday in March.
|
|
-#
|
|
-# Rule Jordan 2000 max - Mar lastThu 0:00s 1:00 S
|
|
-#
|
|
-# However timeanddate.com, which I usually find reliable, shows Jordan
|
|
-# going to daylight saving time on the last Friday in March since 2002.
|
|
-# Please see
|
|
-# <a href="http://www.timeanddate.com/worldclock/timezone.html?n=11">
|
|
-# http://www.timeanddate.com/worldclock/timezone.html?n=11
|
|
-# </a>
|
|
-
|
|
# From Steffen Thorsen (2009-04-02):
|
|
# This single one might be good enough, (2009-03-24, Arabic):
|
|
# <a href="http://petra.gov.jo/Artical.aspx?Lng=2&Section=8&Artical=95279">
|
|
--- jdk/test/sun/util/calendar/zi/tzdata/australasia Wed Mar 12 11:58:14 2014 +0000
|
|
+++ jdk/test/sun/util/calendar/zi/tzdata/australasia Tue Jun 03 14:19:36 2014 -0700
|
|
@@ -377,16 +377,18 @@
|
|
# http://www.fiji.gov.fj/index.php?option=com_content&view=article&id=6702&catid=71&Itemid=155
|
|
|
|
# From the Fijian Government Media Center (2013-08-30) via David Wheeler:
|
|
-# Fiji will start daylight savings on Sunday 27th October, 2013 and end at 3am
|
|
-# on Sunday 19th January, 2014.... move clocks forward by one hour from 2am
|
|
+# Fiji will start daylight savings on Sunday 27th October, 2013 ...
|
|
+# move clocks forward by one hour from 2am
|
|
# http://www.fiji.gov.fj/Media-Center/Press-Releases/DAYLIGHT-SAVING-STARTS-ON-SUNDAY,-27th-OCTOBER-201.aspx
|
|
-#
|
|
-# From Paul Eggert (2013-09-09):
|
|
+
|
|
+# From Steffen Thorsen (2013-01-10):
|
|
+# Fiji will end DST on 2014-01-19 02:00:
|
|
+# http://www.fiji.gov.fj/Media-Center/Press-Releases/DAYLIGHT-SAVINGS-TO-END-THIS-MONTH-%281%29.aspx
|
|
+
|
|
+# From Paul Eggert (2014-01-10):
|
|
# For now, guess that Fiji springs forward the Sunday before the fourth
|
|
-# Monday in October. This matches both recent practice and
|
|
-# timeanddate.com's current spring-forward prediction.
|
|
-# For the January 2014 transition we guessed right while timeanddate.com
|
|
-# guessed wrong, so leave the fall-back prediction alone.
|
|
+# Monday in October, and springs back the penultimate Sunday in January.
|
|
+# This is ad hoc, but matches recent practice.
|
|
|
|
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
|
Rule Fiji 1998 1999 - Nov Sun>=1 2:00 1:00 S
|
|
@@ -395,7 +397,8 @@
|
|
Rule Fiji 2010 only - Mar lastSun 3:00 0 -
|
|
Rule Fiji 2010 max - Oct Sun>=21 2:00 1:00 S
|
|
Rule Fiji 2011 only - Mar Sun>=1 3:00 0 -
|
|
-Rule Fiji 2012 max - Jan Sun>=18 3:00 0 -
|
|
+Rule Fiji 2012 2013 - Jan Sun>=18 3:00 0 -
|
|
+Rule Fiji 2014 max - Jan Sun>=18 2:00 0 -
|
|
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
|
Zone Pacific/Fiji 11:55:44 - LMT 1915 Oct 26 # Suva
|
|
12:00 Fiji FJ%sT # Fiji Time
|
|
@@ -783,14 +786,29 @@
|
|
|
|
# Johnston
|
|
#
|
|
-# From Paul Eggert (2013-09-03):
|
|
+# From Paul Eggert (2014-03-11):
|
|
+# Sometimes Johnston kept Hawaii time, and sometimes it was an hour behind.
|
|
+# Details are uncertain. We have no data for Johnston after 1970, so
|
|
+# treat it like Hawaii for now.
|
|
+#
|
|
# In his memoirs of June 6th to October 4, 1945
|
|
# <http://www.315bw.org/Herb_Bach.htm> (2005), Herbert C. Bach writes,
|
|
# "We started our letdown to Kwajalein Atoll and landed there at 5:00 AM
|
|
# Johnston time, 1:30 AM Kwajalein time." This was in June 1945, and
|
|
# confirms that Johnston kept the same time as Honolulu in summer 1945.
|
|
-# We have no better information, so for now, assume this has been true
|
|
-# indefinitely into the past.
|
|
+#
|
|
+# From Lyle McElhaney (2014-03-11):
|
|
+# [W]hen JI was being used for that [atomic bomb] testing, the time being used
|
|
+# was not Hawaiian time but rather the same time being used on the ships,
|
|
+# which had a GMT offset of -11 hours. This apparently applied to at least the
|
|
+# time from Operation Newsreel (Hardtack I/Teak shot, 1958-08-01) to the last
|
|
+# Operation Fishbowl shot (Tightrope, 1962-11-04).... [See] Herman Hoerlin,
|
|
+# "The United States High-Altitude Test Experience: A Review Emphasizing the
|
|
+# Impact on the Environment", Los Alamos LA-6405, Oct 1976
|
|
+# <http://www.fas.org/sgp/othergov/doe/lanl/docs1/00322994.pdf>.
|
|
+# See the table on page 4 where he lists GMT and local times for the tests; a
|
|
+# footnote for the JI tests reads that local time is "JI time = Hawaii Time
|
|
+# Minus One Hour".
|
|
#
|
|
# See 'northamerica' for Pacific/Johnston.
|
|
|
|
--- jdk/test/sun/util/calendar/zi/tzdata/europe Wed Mar 12 11:58:14 2014 +0000
|
|
+++ jdk/test/sun/util/calendar/zi/tzdata/europe Tue Jun 03 14:19:36 2014 -0700
|
|
@@ -2768,14 +2768,18 @@
|
|
# According to the articles linked below, Turkey will change into summer
|
|
# time zone (GMT+3) on March 28, 2011 at 3:00 a.m. instead of March 27.
|
|
# This change is due to a nationwide exam on 27th.
|
|
-#
|
|
-# <a href="http://www.worldbulletin.net/?aType=haber&ArticleID=70872">
|
|
# http://www.worldbulletin.net/?aType=haber&ArticleID=70872
|
|
-# </a>
|
|
# Turkish:
|
|
-# <a href="http://www.hurriyet.com.tr/ekonomi/17230464.asp?gid=373">
|
|
# http://www.hurriyet.com.tr/ekonomi/17230464.asp?gid=373
|
|
-# </a>
|
|
+
|
|
+# From Faruk Pasin (2014-02-14):
|
|
+# The DST for Turkey has been changed for this year because of the
|
|
+# Turkish Local election....
|
|
+# http://www.sabah.com.tr/Ekonomi/2014/02/12/yaz-saatinde-onemli-degisiklik
|
|
+# ... so Turkey will move clocks forward one hour on March 31 at 3:00 a.m.
|
|
+# From Paul Eggert (2014-02-17):
|
|
+# Here is an English-language source:
|
|
+# http://www.worldbulletin.net/turkey/129016/turkey-switches-to-daylight-saving-time-march-31
|
|
|
|
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
|
Rule Turkey 1916 only - May 1 0:00 1:00 S
|
|
@@ -2844,6 +2848,8 @@
|
|
2:00 Turkey EE%sT 2007
|
|
2:00 EU EE%sT 2011 Mar 27 1:00u
|
|
2:00 - EET 2011 Mar 28 1:00u
|
|
+ 2:00 EU EE%sT 2014 Mar 30 1:00u
|
|
+ 2:00 - EET 2014 Mar 31 1:00u
|
|
2:00 EU EE%sT
|
|
Link Europe/Istanbul Asia/Istanbul # Istanbul is in both continents.
|
|
|
|
@@ -2865,19 +2871,13 @@
|
|
# approval from 266 deputies.
|
|
#
|
|
# Ukraine abolishes transter back to the winter time (in Russian)
|
|
-# <a href="http://news.mail.ru/politics/6861560/">
|
|
# http://news.mail.ru/politics/6861560/
|
|
-# </a>
|
|
#
|
|
# The Ukrainians will no longer change the clock (in Russian)
|
|
-# <a href="http://www.segodnya.ua/news/14290482.html">
|
|
# http://www.segodnya.ua/news/14290482.html
|
|
-# </a>
|
|
#
|
|
# Deputies cancelled the winter time (in Russian)
|
|
-# <a href="http://www.pravda.com.ua/rus/news/2011/09/20/6600616/">
|
|
# http://www.pravda.com.ua/rus/news/2011/09/20/6600616/
|
|
-# </a>
|
|
#
|
|
# From Philip Pizzey (2011-10-18):
|
|
# Today my Ukrainian colleagues have informed me that the
|
|
@@ -2888,18 +2888,39 @@
|
|
# As far as I understand, the recent change to the Ukrainian time zone
|
|
# (Europe/Kiev) to introduce permanent daylight saving time (similar
|
|
# to Russia) was reverted today:
|
|
-#
|
|
-# <a href="http://portal.rada.gov.ua/rada/control/en/publish/article/info_left?art_id=287324&cat_id=105995">
|
|
# http://portal.rada.gov.ua/rada/control/en/publish/article/info_left?art_id=287324&cat_id=105995
|
|
-# </a>
|
|
#
|
|
# Also reported by Alexander Bokovoy (2011-10-18) who also noted:
|
|
# The law documents themselves are at
|
|
+# http://w1.c1.rada.gov.ua/pls/zweb_n/webproc4_1?id=&pf3511=41484
|
|
+
|
|
+# From Vladimir in Moscow via Alois Treindl re Kiev time 1991/2 (2014-02-28):
|
|
+# First in Ukraine they changed Time zone from UTC+3 to UTC+2 with DST:
|
|
+# 03 25 1990 02:00 -03.00 1 Time Zone 3 with DST
|
|
+# 07 01 1990 02:00 -02.00 1 Time Zone 2 with DST
|
|
+# * Ukrainian Government's Resolution of 18.06.1990, No. 134.
|
|
+# http://search.ligazakon.ua/l_doc2.nsf/link1/T001500.html
|
|
#
|
|
-# <a href="http://w1.c1.rada.gov.ua/pls/zweb_n/webproc4_1?id=&pf3511=41484">
|
|
-# http://w1.c1.rada.gov.ua/pls/zweb_n/webproc4_1?id=&pf3511=41484
|
|
-# </a>
|
|
-
|
|
+# They did not end DST in September, 1990 (according to the law,
|
|
+# "summer time" was still in action):
|
|
+# 09 30 1990 03:00 -02.00 1 Time Zone 2 with DST
|
|
+# * Ukrainian Government's Resolution of 21.09.1990, No. 272.
|
|
+# http://search.ligazakon.ua/l_doc2.nsf/link1/KP900272.html
|
|
+#
|
|
+# Again no change in March, 1991 ("summer time" in action):
|
|
+# 03 31 1991 02:00 -02.00 1 Time Zone 2 with DST
|
|
+#
|
|
+# DST ended in September 1991 ("summer time" ended):
|
|
+# 09 29 1991 03:00 -02.00 0 Time Zone 2, no DST
|
|
+# * Ukrainian Government's Resolution of 25.09.1991, No. 225.
|
|
+# http://www.uazakon.com/documents/date_21/pg_iwgdoc.htm
|
|
+# This is an answer.
|
|
+#
|
|
+# Since 1992 they had normal DST procedure:
|
|
+# 03 29 1992 02:00 -02.00 1 DST started
|
|
+# 09 27 1992 03:00 -02.00 0 DST ended
|
|
+# * Ukrainian Government's Resolution of 20.03.1992, No. 139.
|
|
+# http://www.uazakon.com/documents/date_8u/pg_grcasa.htm
|
|
|
|
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
|
# Most of Ukraine since 1970 has been like Kiev.
|
|
@@ -2910,9 +2931,8 @@
|
|
2:00 - EET 1930 Jun 21
|
|
3:00 - MSK 1941 Sep 20
|
|
1:00 C-Eur CE%sT 1943 Nov 6
|
|
- 3:00 Russia MSK/MSD 1990
|
|
- 3:00 - MSK 1990 Jul 1 2:00
|
|
- 2:00 - EET 1992
|
|
+ 3:00 Russia MSK/MSD 1990 Jul 1 2:00
|
|
+ 2:00 1:00 EEST 1991 Sep 29 3:00
|
|
2:00 E-Eur EE%sT 1995
|
|
2:00 EU EE%sT
|
|
# Ruthenia used CET 1990/1991.
|
|
@@ -2966,7 +2986,15 @@
|
|
# Assume it happened in March by not changing the clocks.
|
|
3:00 Russia MSK/MSD 1997
|
|
3:00 - MSK 1997 Mar lastSun 1:00u
|
|
- 2:00 EU EE%sT
|
|
+# From Alexander Krivenyshev (2014-03-17):
|
|
+# time change at 2:00 (2am) on March 30, 2014
|
|
+# http://vz.ru/news/2014/3/17/677464.html
|
|
+# From Paul Eggert (2014-03-30):
|
|
+# Simferopol and Sevastopol reportedly changed their central town clocks
|
|
+# late the previous day, but this appears to have been ceremonial
|
|
+# and the discrepancies are small enough to not worry about.
|
|
+ 2:00 EU EE%sT 2014 Mar 30 2:00
|
|
+ 4:00 - MSK
|
|
|
|
# Vatican City
|
|
# See Europe/Rome.
|
|
--- jdk/test/sun/util/calendar/zi/tzdata/leapseconds Wed Mar 12 11:58:14 2014 +0000
|
|
+++ jdk/test/sun/util/calendar/zi/tzdata/leapseconds Tue Jun 03 14:19:36 2014 -0700
|
|
@@ -20,7 +20,7 @@
|
|
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
|
# or visit www.oracle.com if you need additional information or have any
|
|
# questions.
|
|
-
|
|
+#
|
|
# Allowance for leapseconds added to each timezone file.
|
|
|
|
# This file is in the public domain.
|
|
--- jdk/test/sun/util/calendar/zi/tzdata/northamerica Wed Mar 12 11:58:14 2014 +0000
|
|
+++ jdk/test/sun/util/calendar/zi/tzdata/northamerica Tue Jun 03 14:19:36 2014 -0700
|
|
@@ -414,9 +414,10 @@
|
|
# US Pacific time, represented by Los Angeles
|
|
#
|
|
# California, northern Idaho (Benewah, Bonner, Boundary, Clearwater,
|
|
-# Idaho, Kootenai, Latah, Lewis, Nez Perce, and Shoshone counties,
|
|
-# and the northern three-quarters of Idaho county),
|
|
-# most of Nevada, most of Oregon, and Washington
|
|
+# Kootenai, Latah, Lewis, Nez Perce, and Shoshone counties, Idaho county
|
|
+# north of the Salmon River, and the towns of Burgdorf and Warren),
|
|
+# Nevada (except West Wendover), Oregon (except the northern 3/4 of
|
|
+# Malheur county), and Washington
|
|
#
|
|
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER
|
|
Rule CA 1948 only - Mar 14 2:00 1:00 D
|
|
--- jdk/test/sun/util/calendar/zi/tzdata/southamerica Wed Mar 12 11:58:14 2014 +0000
|
|
+++ jdk/test/sun/util/calendar/zi/tzdata/southamerica Tue Jun 03 14:19:36 2014 -0700
|
|
@@ -1298,6 +1298,13 @@
|
|
# start date is 2013-09-08 00:00....
|
|
# http://www.gob.cl/informa/2013/02/15/gobierno-anuncia-fechas-de-cambio-de-hora-para-el-ano-2013.htm
|
|
|
|
+# From Jose Miguel Garrido (2014-02-19):
|
|
+# Today appeared in the Diario Oficial a decree amending the time change
|
|
+# dates to 2014.
|
|
+# DST End: last Saturday of April 2014 (Sun 27 Apr 2014 03:00 UTC)
|
|
+# DST Start: first Saturday of September 2014 (Sun 07 Sep 2014 04:00 UTC)
|
|
+# http://www.diariooficial.interior.gob.cl//media/2014/02/19/do-20140219.pdf
|
|
+
|
|
# NOTE: ChileAQ rules for Antarctic bases are stored separately in the
|
|
# 'antarctica' file.
|
|
|
|
@@ -1631,6 +1638,9 @@
|
|
# From Carlos Raul Perasso (2013-03-15):
|
|
# The change in Paraguay is now final. Decree number 10780
|
|
# http://www.presidencia.gov.py/uploads/pdf/presidencia-3b86ff4b691c79d4f5927ca964922ec74772ce857c02ca054a52a37b49afc7fb.pdf
|
|
+# From Carlos Raul Perasso (2014-02-28):
|
|
+# Decree 1264 can be found at:
|
|
+# http://www.presidencia.gov.py/archivos/documentos/DECRETO1264_ey9r8zai.pdf
|
|
Rule Para 2013 max - Mar Sun>=22 0:00 0 -
|
|
|
|
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
|
@@ -1689,18 +1699,19 @@
|
|
Zone America/Port_of_Spain -4:06:04 - LMT 1912 Mar 2
|
|
-4:00 - AST
|
|
|
|
+# These all agree with Trinidad and Tobago since 1970.
|
|
Link America/Port_of_Spain America/Anguilla
|
|
Link America/Port_of_Spain America/Dominica
|
|
Link America/Port_of_Spain America/Grenada
|
|
Link America/Port_of_Spain America/Guadeloupe
|
|
-Link America/Port_of_Spain America/Marigot
|
|
+Link America/Port_of_Spain America/Marigot # St Martin (French part)
|
|
Link America/Port_of_Spain America/Montserrat
|
|
Link America/Port_of_Spain America/St_Barthelemy
|
|
-Link America/Port_of_Spain America/St_Kitts
|
|
+Link America/Port_of_Spain America/St_Kitts # St Kitts & Nevis
|
|
Link America/Port_of_Spain America/St_Lucia
|
|
-Link America/Port_of_Spain America/St_Thomas
|
|
+Link America/Port_of_Spain America/St_Thomas # Virgin Islands (US)
|
|
Link America/Port_of_Spain America/St_Vincent
|
|
-Link America/Port_of_Spain America/Tortola
|
|
+Link America/Port_of_Spain America/Tortola # Virgin Islands (UK)
|
|
|
|
# Uruguay
|
|
# From Paul Eggert (1993-11-18):
|
|
--- jdk/test/sun/util/calendar/zi/tzdata/zone.tab Wed Mar 12 11:58:14 2014 +0000
|
|
+++ jdk/test/sun/util/calendar/zi/tzdata/zone.tab Tue Jun 03 14:19:36 2014 -0700
|
|
@@ -74,6 +74,7 @@
|
|
AQ -7824+10654 Antarctica/Vostok Vostok Station, Lake Vostok
|
|
AQ -6640+14001 Antarctica/DumontDUrville Dumont-d'Urville Station, Terre Adelie
|
|
AQ -690022+0393524 Antarctica/Syowa Syowa Station, E Ongul I
|
|
+AQ -720041+0023206 Antarctica/Troll Troll Station, Queen Maud Land
|
|
AR -3436-05827 America/Argentina/Buenos_Aires Buenos Aires (BA, CF)
|
|
AR -3124-06411 America/Argentina/Cordoba most locations (CB, CC, CN, ER, FM, MN, SE, SF)
|
|
AR -2447-06525 America/Argentina/Salta (SA, LP, NQ, RN)
|
|
@@ -366,6 +367,7 @@
|
|
RU +5545+03735 Europe/Moscow Moscow+00 - west Russia
|
|
RU +4844+04425 Europe/Volgograd Moscow+00 - Caspian Sea
|
|
RU +5312+05009 Europe/Samara Moscow+00 - Samara, Udmurtia
|
|
+RU +4457+03406 Europe/Simferopol Moscow+00 - Crimea
|
|
RU +5651+06036 Asia/Yekaterinburg Moscow+02 - Urals
|
|
RU +5500+07324 Asia/Omsk Moscow+03 - west Siberia
|
|
RU +5502+08255 Asia/Novosibirsk Moscow+03 - Novosibirsk
|
|
@@ -421,7 +423,6 @@
|
|
UA +5026+03031 Europe/Kiev most locations
|
|
UA +4837+02218 Europe/Uzhgorod Ruthenia
|
|
UA +4750+03510 Europe/Zaporozhye Zaporozh'ye, E Lugansk / Zaporizhia, E Luhansk
|
|
-UA +4457+03406 Europe/Simferopol central Crimea
|
|
UG +0019+03225 Africa/Kampala
|
|
UM +1645-16931 Pacific/Johnston Johnston Atoll
|
|
UM +2813-17722 Pacific/Midway Midway Islands
|
|
--- langtools/.hgtags Tue Mar 11 13:03:14 2014 -0700
|
|
+++ langtools/.hgtags Tue Jun 03 14:19:44 2014 -0700
|
|
@@ -258,6 +258,7 @@
|
|
9003a59a512e6b764d8a3f805aadc3996a58e5bd jdk8u5-b02
|
|
30e3dad0ebbdf3129bacd04a7f4cdecd3df92bb2 jdk8u5-b03
|
|
019dcdfffced0ca2026a0ad8c0e5fcb49d46116f jdk8u5-b04
|
|
+c9db8c800797258540e0411e58b8f7d59273de5f jdk8u11-b00
|
|
c9db8c800797258540e0411e58b8f7d59273de5f jdk8u5-b05
|
|
b1920c0b701d5ff219c9f622db5cafc9bf00d5c8 jdk8u5-b06
|
|
180df7f2c078f1efaa6fcd8ca9f55dc5f81b182c jdk8u5-b07
|
|
@@ -266,3 +267,15 @@
|
|
026543c71810701de08cdfd906d1b8fdc69b89c0 jdk8u5-b10
|
|
a12055904afd9f951131804868215e724c71b684 jdk8u5-b11
|
|
2a7002626e7997e946b96530629e2787bc1864bb jdk8u5-b12
|
|
+9beafb58fb99e8b5f7577b2f26b12743ef4d07e7 jdk8u5-b13
|
|
+d37e407fba44f68c660f89be4e48f9e7b256a2d5 jdk8u11-b01
|
|
+e75f843c4bf81c79ca4c5d51dfe5fe39525c5301 jdk8u11-b02
|
|
+d9904b00b027b9176d6479dee7c7f4e054a68710 jdk8u11-b03
|
|
+5b5c46fe954cb744e2633e1ab097e934cc547a57 jdk8u11-b04
|
|
+f491f1581f196950c2cb858508dd06601968c417 jdk8u11-b05
|
|
+a4ecc38ec7910d5beb07be4623bd80dabe1fbfe8 jdk8u11-b06
|
|
+7803caf52e4b12f11e552565f55ef65aeb2be6a5 jdk8u11-b07
|
|
+a47aa3203c0210def786ab5ee685e97d07e8bf77 jdk8u11-b08
|
|
+e973a591a2182c0bdbdd9545ab13f83325acf1e6 jdk8u11-b09
|
|
+51cade4632608a6c0b8da33f420bd546aecf6faf jdk8u11-b10
|
|
+dc0d952b4199dc1cbc534c9afd535c78d21ed519 jdk8u11-b11
|
|
--- nashorn/.hgtags Tue Mar 11 13:03:16 2014 -0700
|
|
+++ nashorn/.hgtags Tue Jun 03 14:19:46 2014 -0700
|
|
@@ -255,3 +255,15 @@
|
|
8bc83045abc547edb7cfb7d688d84164f0b11cea jdk8u5-b10
|
|
bc23b19e08eb1575663044902b6442ceaafa924f jdk8u5-b11
|
|
18b007062905dac9304605955a4b84eaf2a08553 jdk8u5-b12
|
|
+e4fb85d69d6b33c9561b932ec5515f44c53c1017 jdk8u5-b13
|
|
+53cc5fda790e0f90dca53fb459c70517d76680bc jdk8u11-b01
|
|
+4dda2b1e51aa7977f53c261f983230fe505bbc3e jdk8u11-b02
|
|
+161f144c4e84037f655a2f6ebb0ba3057e8b18fa jdk8u11-b03
|
|
+2842beaa5db81731abe9d895181fbfceef720cf3 jdk8u11-b04
|
|
+7001e9f95b443a75e432205a29974c05b88e0fdc jdk8u11-b05
|
|
+daa414a4d8b712584d0818fab3fd31996e4cb645 jdk8u11-b06
|
|
+d9d482948b7c89161887b47e68e3367663d51b76 jdk8u11-b07
|
|
+a392513941025e2750acdcc45f9df2ec9080bde9 jdk8u11-b08
|
|
+dec6999877f39d3c17f7a092d8e2e17b676bb34b jdk8u11-b09
|
|
+d522ff5f53730cabd02c1863bb9d437c13bcc5e0 jdk8u11-b10
|
|
+3175dcbdd76ee9272276fa756247203dffb20596 jdk8u11-b11
|
|
--- nashorn/make/project.properties Tue Mar 11 13:03:16 2014 -0700
|
|
+++ nashorn/make/project.properties Tue Jun 03 14:19:46 2014 -0700
|
|
@@ -244,7 +244,7 @@
|
|
test.src.dir=test/src
|
|
|
|
# -Xmx is used for all tests, -Xms only for octane benchmark
|
|
-run.test.xmx=3G
|
|
+run.test.xmx=2G
|
|
run.test.xms=2G
|
|
|
|
run.test.user.language=tr
|
|
--- nashorn/test/script/basic/JDK-8026161.js Tue Mar 11 13:03:16 2014 -0700
|
|
+++ nashorn/test/script/basic/JDK-8026161.js Tue Jun 03 14:19:46 2014 -0700
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright (c) 2010, 2013, Oracle and/or its affiliates. All rights reserved.
|
|
+ * Copyright (c) 2010, 2014, Oracle and/or its affiliates. All rights reserved.
|
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
|
*
|
|
* This code is free software; you can redistribute it and/or modify it
|
|
@@ -28,5 +28,5 @@
|
|
* @run
|
|
*/
|
|
|
|
-print(new java.awt.Color(1, 1, 1)) // creates Color[r=1,g=1,b=1]
|
|
-print(new java.awt.Color(1.0, 1.0, 1.0)) // Color[r=255,g=255,b=255]
|
|
+print(Java.type("jdk.nashorn.test.models.IntFloatOverloadSelection").overloadedMethod(1))
|
|
+print(Java.type("jdk.nashorn.test.models.IntFloatOverloadSelection").overloadedMethod(1.0))
|
|
--- nashorn/test/script/basic/JDK-8026161.js.EXPECTED Tue Mar 11 13:03:16 2014 -0700
|
|
+++ nashorn/test/script/basic/JDK-8026161.js.EXPECTED Tue Jun 03 14:19:46 2014 -0700
|
|
@@ -1,2 +1,2 @@
|
|
-java.awt.Color[r=1,g=1,b=1]
|
|
-java.awt.Color[r=255,g=255,b=255]
|
|
+int
|
|
+float
|
|
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
|
|
+++ nashorn/test/src/jdk/nashorn/test/models/IntFloatOverloadSelection.java Tue Jun 03 14:19:46 2014 -0700
|
|
@@ -0,0 +1,36 @@
|
|
+/*
|
|
+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
|
|
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
|
+ *
|
|
+ * This code is free software; you can redistribute it and/or modify it
|
|
+ * under the terms of the GNU General Public License version 2 only, as
|
|
+ * published by the Free Software Foundation. Oracle designates this
|
|
+ * particular file as subject to the "Classpath" exception as provided
|
|
+ * by Oracle in the LICENSE file that accompanied this code.
|
|
+ *
|
|
+ * This code is distributed in the hope that it will be useful, but WITHOUT
|
|
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
|
+ * version 2 for more details (a copy is included in the LICENSE file that
|
|
+ * accompanied this code).
|
|
+ *
|
|
+ * You should have received a copy of the GNU General Public License version
|
|
+ * 2 along with this work; if not, write to the Free Software Foundation,
|
|
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
+ *
|
|
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
|
+ * or visit www.oracle.com if you need additional information or have any
|
|
+ * questions.
|
|
+ */
|
|
+package jdk.nashorn.test.models;
|
|
+
|
|
+public class IntFloatOverloadSelection {
|
|
+
|
|
+ public static String overloadedMethod(int i) {
|
|
+ return "int";
|
|
+ }
|
|
+
|
|
+ public static String overloadedMethod(float f) {
|
|
+ return "float";
|
|
+ }
|
|
+}
|