Problem Description =================== Using Tomcat 7.0.x on OpenJDK 6 b27_3 showed up an incident related to logging. The Java Logger fails to load tomcat logger implementation (JULI). This results in Exceptions like: Can't load log handler "1catalina.org.apache.juli.FileHandler" java.lang.ClassNotFoundException: 1catalina.org.apache.juli.FileHandler in catalina.out. This symptom was reported under PR177067 [1] already. A discussion was held on tomcat-users[2]. The problem was confirmed[3] as a bug related to IcedTea. It was fixed with patch S8005615 in IcedTea 1.11.7 / 1.12.2. Fix === The attached patch adds the following file as a patch to openjdk6: 8005615-failure_to_load_logger_implementation.patch It also increases the port revision and fixes a minor issue which portlint -AC reported (extra whitespace in header). The original file is from: http://icedtea.classpath.org/download/source/icedtea6-1.12.2.tar.gz The imported copy is unmodified, except the leading "openjdk/" was removed from the diff marks. References ========== Original bug: [1] PR177067: http://www.freebsd.org/cgi/query-pr.cgi?pr=177067&cat= Tomcat Users Thread: [2] http://marc.info/?l=tomcat-user&m=137373874903137&w=2 RedHat Bugzilla Thread: [3] https://bugzilla.redhat.com/show_bug.cgi?id=907344 Fix: See full description (patch attached) Patch attached with submission follows: How-To-Repeat: * Install OpenJDK 6 from ports * Install Tomcat 7 from ports (or from .tar.gz) * Start Tomcat
Responsible Changed From-To: freebsd-ports-bugs->freebsd-java Over to maintainer (via the GNATS Auto Assign Tool)
Author: jkim Date: Tue Jul 16 21:07:25 2013 New Revision: 323126 URL: http://svnweb.freebsd.org/changeset/ports/323126 Log: Add multiple security patches and improvements from IcedTea6 1.12.6. http://mail.openjdk.java.net/pipermail/distro-pkg-dev/2013-July/023941.html Obtained from: IcedTea Project PR: ports/180541 Added: head/java/openjdk6/Makefile.icedtea (contents, props changed) head/java/openjdk6/files/icedtea/openjdk/6469266-xmlsec_1.4.2.patch (contents, props changed) head/java/openjdk6/files/icedtea/openjdk/6786028-wcag_bold_tags.patch (contents, props changed) head/java/openjdk6/files/icedtea/openjdk/6786682-wcag_lang.patch (contents, props changed) head/java/openjdk6/files/icedtea/openjdk/6786688-wcag_table.patch (contents, props changed) head/java/openjdk6/files/icedtea/openjdk/6786690-wcag_dl.patch (contents, props changed) head/java/openjdk6/files/icedtea/openjdk/6802694-no_deprecated.patch (contents, props changed) head/java/openjdk6/files/icedtea/openjdk/6851834-handle_renames.patch (contents, props changed) head/java/openjdk6/files/icedtea/openjdk/6851834-restructure.patch (contents, props changed) head/java/openjdk6/files/icedtea/openjdk/6888167-medialib_memory_leaks.patch (contents, props changed) head/java/openjdk6/files/icedtea/openjdk/6961178-doclet_xml.patch (contents, props changed) head/java/openjdk6/files/icedtea/openjdk/7006270-regressions.patch (contents, props changed) head/java/openjdk6/files/icedtea/openjdk/7195301-no_instanceof_node.patch (contents, props changed) head/java/openjdk6/files/icedtea/openjdk/8005615-failure_to_load_logger_implementation.patch (contents, props changed) head/java/openjdk6/files/icedtea/openjdk/8007393.patch (contents, props changed) head/java/openjdk6/files/icedtea/openjdk/8007611.patch (contents, props changed) head/java/openjdk6/files/icedtea/security/20130618/ head/java/openjdk6/files/icedtea/security/20130618/6741606-apache_santuario.patch (contents, props changed) head/java/openjdk6/files/icedtea/security/20130618/7158805-nested_subroutine_rewriting.patch (contents, props changed) head/java/openjdk6/files/icedtea/security/20130618/7170730-windows_network_stack.patch (contents, props changed) head/java/openjdk6/files/icedtea/security/20130618/8000638-improve_deserialization.patch (contents, props changed) head/java/openjdk6/files/icedtea/security/20130618/8000642-better_transportation_handling.patch (contents, props changed) head/java/openjdk6/files/icedtea/security/20130618/8001032-restrict_object_access-corba.patch (contents, props changed) head/java/openjdk6/files/icedtea/security/20130618/8001033-refactor_address_handling.patch (contents, props changed) head/java/openjdk6/files/icedtea/security/20130618/8001034-memory_management.patch (contents, props changed) head/java/openjdk6/files/icedtea/security/20130618/8001038-resourcefully_handle_resources.patch (contents, props changed) head/java/openjdk6/files/icedtea/security/20130618/8001043-clarify_definition_restrictions.patch (contents, props changed) head/java/openjdk6/files/icedtea/security/20130618/8001309-better_handling_of_annotation_interfaces.patch (contents, props changed) head/java/openjdk6/files/icedtea/security/20130618/8001318-6_fixup.patch (contents, props changed) head/java/openjdk6/files/icedtea/security/20130618/8001318-socket_getlocaladdress_consistency.patch (contents, props changed) head/java/openjdk6/files/icedtea/security/20130618/8001330-checking_order_improvement.patch (contents, props changed) head/java/openjdk6/files/icedtea/security/20130618/8001330-improve_checking_order.patch (contents, props changed) head/java/openjdk6/files/icedtea/security/20130618/8003703-update_rmi_connection_dialog.patch (contents, props changed) head/java/openjdk6/files/icedtea/security/20130618/8004584-augment_applet_contextualization.patch (contents, props changed) head/java/openjdk6/files/icedtea/security/20130618/8005007-better_glyph_processing.patch (contents, props changed) head/java/openjdk6/files/icedtea/security/20130618/8006328-6_fixup.patch (contents, props changed) head/java/openjdk6/files/icedtea/security/20130618/8006328-sound_class_robustness.patch (contents, props changed) head/java/openjdk6/files/icedtea/security/20130618/8006611-improve_scripting.patch (contents, props changed) head/java/openjdk6/files/icedtea/security/20130618/8007467-improve_jmx_internal_api_robustness.patch (contents, props changed) head/java/openjdk6/files/icedtea/security/20130618/8007471-6_fixup.patch (contents, props changed) head/java/openjdk6/files/icedtea/security/20130618/8007471-improve_mbean_notifications.patch (contents, props changed) head/java/openjdk6/files/icedtea/security/20130618/8007812-getenclosingmethod.patch (contents, props changed) head/java/openjdk6/files/icedtea/security/20130618/8008120-improve_jmx_class_checking.patch (contents, props changed) head/java/openjdk6/files/icedtea/security/20130618/8008124-better_compliance_testing.patch (contents, props changed) head/java/openjdk6/files/icedtea/security/20130618/8008128-better_jmx_api_coherence.patch (contents, props changed) head/java/openjdk6/files/icedtea/security/20130618/8008132-better_serialization.patch (contents, props changed) head/java/openjdk6/files/icedtea/security/20130618/8008585-jmx_data_handling.patch (contents, props changed) head/java/openjdk6/files/icedtea/security/20130618/8008593-better_urlclassloader.patch (contents, props changed) head/java/openjdk6/files/icedtea/security/20130618/8008603-jmx_provider_provision.patch (contents, props changed) head/java/openjdk6/files/icedtea/security/20130618/8008611-6_fixup.patch (contents, props changed) head/java/openjdk6/files/icedtea/security/20130618/8008611-jmx_annotations.patch (contents, props changed) head/java/openjdk6/files/icedtea/security/20130618/8008615-jmx_internal_api_robustness.patch (contents, props changed) head/java/openjdk6/files/icedtea/security/20130618/8008623-mbeanserver_handling.patch (contents, props changed) head/java/openjdk6/files/icedtea/security/20130618/8008744-6741606_rework.patch (contents, props changed) head/java/openjdk6/files/icedtea/security/20130618/8008982-jmx_interface_changes.patch (contents, props changed) head/java/openjdk6/files/icedtea/security/20130618/8009004-rmi_connection_improvement.patch (contents, props changed) head/java/openjdk6/files/icedtea/security/20130618/8009013-t2k_glyphs.patch (contents, props changed) head/java/openjdk6/files/icedtea/security/20130618/8009034-jmx_notification_improvement.patch (contents, props changed) head/java/openjdk6/files/icedtea/security/20130618/8009038-jmx_notification_support_improvement.patch (contents, props changed) head/java/openjdk6/files/icedtea/security/20130618/8009067-improve_key_storing.patch (contents, props changed) head/java/openjdk6/files/icedtea/security/20130618/8009071-improve_shape_handling.patch (contents, props changed) head/java/openjdk6/files/icedtea/security/20130618/8009235-improve_tsa_data_handling.patch (contents, props changed) head/java/openjdk6/files/icedtea/security/20130618/8011243-improve_imaginglib.patch (contents, props changed) head/java/openjdk6/files/icedtea/security/20130618/8011248-better_component_rasters.patch (contents, props changed) head/java/openjdk6/files/icedtea/security/20130618/8011253-better_short_component_rasters.patch (contents, props changed) head/java/openjdk6/files/icedtea/security/20130618/8011257-better_byte_component_rasters.patch (contents, props changed) head/java/openjdk6/files/icedtea/security/20130618/8011557-improve_reflection.patch (contents, props changed) head/java/openjdk6/files/icedtea/security/20130618/8012375-javadoc_framing.patch (contents, props changed) head/java/openjdk6/files/icedtea/security/20130618/8012421-better_positioning.patch (contents, props changed) head/java/openjdk6/files/icedtea/security/20130618/8012438-better_image_validation.patch (contents, props changed) head/java/openjdk6/files/icedtea/security/20130618/8012597-better_image_channel_validation.patch (contents, props changed) head/java/openjdk6/files/icedtea/security/20130618/8012601-better_layout_validation.patch (contents, props changed) head/java/openjdk6/files/icedtea/security/20130618/8014281-better_xml_signature_checking.patch (contents, props changed) head/java/openjdk6/files/icedtea/security/20130618/8015997-more_javadoc_framing.patch (contents, props changed) head/java/openjdk6/files/icedtea/security/20130618/diamond_fix.patch (contents, props changed) head/java/openjdk6/files/icedtea/security/20130618/handle_npe.patch (contents, props changed) head/java/openjdk6/files/icedtea/security/20130618/javac_issue.patch (contents, props changed) head/java/openjdk6/files/icedtea/security/20130618/langtools_generics.patch (contents, props changed) head/java/openjdk6/files/icedtea/security/20130618/langtools_merge-01.patch (contents, props changed) head/java/openjdk6/files/icedtea/security/20130618/langtools_merge-02.patch (contents, props changed) head/java/openjdk6/files/icedtea/security/20130618/langtools_merge-03.patch (contents, props changed) Modified: head/java/openjdk6/Makefile Modified: head/java/openjdk6/Makefile ============================================================================== --- head/java/openjdk6/Makefile Tue Jul 16 20:35:20 2013 (r323125) +++ head/java/openjdk6/Makefile Tue Jul 16 21:07:25 2013 (r323126) @@ -3,7 +3,7 @@ PORTNAME= openjdk6 PORTVERSION= b27 -PORTREVISION?= 3 +PORTREVISION?= 4 CATEGORIES= java devel MASTER_SITES= http://download.java.net/openjdk/jdk6/promoted/${PORTVERSION}/ \ http://download.java.net/jaxp/openjdk/jdk6/:jaxp \ @@ -39,84 +39,6 @@ RUN_DEPENDS= javavm:${PORTSDIR}/java/jav OPENJDK_BUILDDATE= 26_oct_2012 -EXTRA_PATCHES= ${FILESDIR}/icedtea/jaxp.patch \ - ${FILESDIR}/icedtea/jaxws.patch \ - ${FILESDIR}/icedtea/security/20120830/7182135-impossible_to_use_some_editors_directly.patch \ - ${FILESDIR}/icedtea/security/20130201/7201068.patch \ - ${FILESDIR}/icedtea/security/20130201/6563318.patch \ - ${FILESDIR}/icedtea/security/20130201/6664509.patch \ - ${FILESDIR}/icedtea/security/20130201/6776941.patch \ - ${FILESDIR}/icedtea/security/20130201/7141694.patch \ - ${FILESDIR}/icedtea/security/20130201/7173145.patch \ - ${FILESDIR}/icedtea/security/20130201/7186945.patch \ - ${FILESDIR}/icedtea/security/20130201/7186948.patch \ - ${FILESDIR}/icedtea/security/20130201/7186952.patch \ - ${FILESDIR}/icedtea/security/20130201/7186954.patch \ - ${FILESDIR}/icedtea/security/20130201/7192392.patch \ - ${FILESDIR}/icedtea/security/20130201/7192393.patch \ - ${FILESDIR}/icedtea/security/20130201/7192977.patch \ - ${FILESDIR}/icedtea/security/20130201/7197546.patch \ - ${FILESDIR}/icedtea/security/20130201/7200491.patch \ - ${FILESDIR}/icedtea/security/20130201/7200500.patch \ - ${FILESDIR}/icedtea/security/20130201/7201064.patch \ - ${FILESDIR}/icedtea/security/20130201/7201066.patch \ - ${FILESDIR}/icedtea/security/20130201/7201070.patch \ - ${FILESDIR}/icedtea/security/20130201/7201071.patch \ - ${FILESDIR}/icedtea/security/20130201/8000210.patch \ - ${FILESDIR}/icedtea/security/20130201/8000537.patch \ - ${FILESDIR}/icedtea/security/20130201/8000540.patch \ - ${FILESDIR}/icedtea/security/20130201/8000631.patch \ - ${FILESDIR}/icedtea/security/20130201/8001242.patch \ - ${FILESDIR}/icedtea/security/20130201/8001307.patch \ - ${FILESDIR}/icedtea/security/20130201/8001972.patch \ - ${FILESDIR}/icedtea/security/20130201/8002325.patch \ - ${FILESDIR}/icedtea/security/20130219/8006446.patch \ - ${FILESDIR}/icedtea/security/20130219/8006777.patch \ - ${FILESDIR}/icedtea/security/20130219/8007688.patch \ - ${FILESDIR}/icedtea/security/20130304/8007014.patch \ - ${FILESDIR}/icedtea/security/20130304/8007675.patch \ - ${FILESDIR}/icedtea/openjdk/7036559-concurrenthashmap_improvements.patch \ - ${FILESDIR}/icedtea/security/20130416/8009063.patch \ - ${FILESDIR}/icedtea/openjdk/8004302-soap_test_failure.patch \ - ${FILESDIR}/icedtea/security/20130416/6657673.patch \ - ${FILESDIR}/icedtea/security/20130416/6657673-fixup.patch \ - ${FILESDIR}/icedtea/openjdk/7133220-factory_finder_parser_transform_useBSClassLoader.patch \ - ${FILESDIR}/icedtea/security/20130416/6657673-factory_finder.patch \ - ${FILESDIR}/icedtea/openjdk/6669869-queries_per_appcontext.patch \ - ${FILESDIR}/icedtea/openjdk/5102804-memory_leak.patch \ - ${FILESDIR}/icedtea/openjdk/6963811-deadlock_fix.patch \ - ${FILESDIR}/icedtea/openjdk/7064279-resource_release.patch \ - ${FILESDIR}/icedtea/openjdk/7064279-fixup.patch \ - ${FILESDIR}/icedtea/security/20130416/7200507.patch \ - ${FILESDIR}/icedtea/security/20130416/8000724.patch \ - ${FILESDIR}/icedtea/security/20130416/8004986.patch \ - ${FILESDIR}/icedtea/openjdk/6501644-icu_sync.patch \ - ${FILESDIR}/icedtea/openjdk/6886358-layout_update.patch \ - ${FILESDIR}/icedtea/security/20130416/8001031.patch \ - ${FILESDIR}/icedtea/openjdk/7017324-kerning_crash.patch \ - ${FILESDIR}/icedtea/security/20130416/8001040.patch \ - ${FILESDIR}/icedtea/security/20130416/8001322.patch \ - ${FILESDIR}/icedtea/security/20130416/8001329.patch \ - ${FILESDIR}/icedtea/security/20130416/8003335.patch \ - ${FILESDIR}/icedtea/security/20130416/8003445.patch \ - ${FILESDIR}/icedtea/security/20130416/8003543.patch \ - ${FILESDIR}/icedtea/security/20130416/8004261.patch \ - ${FILESDIR}/icedtea/security/20130416/8004336.patch \ - ${FILESDIR}/icedtea/security/20130416/8005432.patch \ - ${FILESDIR}/icedtea/security/20130416/8005943.patch \ - ${FILESDIR}/icedtea/security/20130416/8006309.patch \ - ${FILESDIR}/icedtea/security/20130416/8006435.patch \ - ${FILESDIR}/icedtea/security/20130416/8006790.patch \ - ${FILESDIR}/icedtea/security/20130416/8006795.patch \ - ${FILESDIR}/icedtea/security/20130416/8007406.patch \ - ${FILESDIR}/icedtea/security/20130416/8007617.patch \ - ${FILESDIR}/icedtea/security/20130416/8007667.patch \ - ${FILESDIR}/icedtea/security/20130416/8007918.patch \ - ${FILESDIR}/icedtea/security/20130416/8009305.patch \ - ${FILESDIR}/icedtea/security/20130416/8009699.patch \ - ${FILESDIR}/icedtea/security/20130416/8009814.patch \ - ${FILESDIR}/icedtea/security/20130416/8009857.patch - OPTIONS_DEFINE= ICEDTEA IPV6 POLICY SOUND TZUPDATE OPTIONS_DEFAULT=ICEDTEA IPV6 TZUPDATE ICEDTEA_DESC= Apply additional patches from IcedTea @@ -134,6 +56,9 @@ TEST_DESC= Add support for running regre USES= gmake motif .include <bsd.port.options.mk> +.include "${.CURDIR}/Makefile.icedtea" + +EXTRA_PATCHES= ${ICEDTEA_PATCHES} # java extracts directly to the cwd WRKSRC= ${WRKDIR} @@ -231,12 +156,6 @@ MAKE_ENV+= SKIP_FASTDEBUG_BUILD=false MAKE_ENV+= SKIP_FASTDEBUG_BUILD=true .endif -.if ${PORT_OPTIONS:MICEDTEA} -EXTRA_PATCHES+= ${FILESDIR}/icedtea/openjdk/7032388-work_without_cmov_instruction.patch \ - ${FILESDIR}/icedtea/applet_hole.patch \ - ${FILESDIR}/icedtea/jpegclasses.patch -.endif - .if empty(PORT_OPTIONS:MIPV6) MAKE_ENV+= DONT_ENABLE_IPV6="YES" .endif Added: head/java/openjdk6/Makefile.icedtea ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/java/openjdk6/Makefile.icedtea Tue Jul 16 21:07:25 2013 (r323126) @@ -0,0 +1,170 @@ +# $FreeBSD$ + +_PATCHES= \ + jaxp.patch \ + jaxws.patch \ + security/20120830/7182135-impossible_to_use_some_editors_directly.patch \ + security/20130201/7201068.patch \ + security/20130201/6563318.patch \ + security/20130201/6664509.patch \ + security/20130201/6776941.patch \ + security/20130201/7141694.patch \ + security/20130201/7173145.patch \ + security/20130201/7186945.patch \ + security/20130201/7186948.patch \ + security/20130201/7186952.patch \ + security/20130201/7186954.patch \ + security/20130201/7192392.patch \ + security/20130201/7192393.patch \ + security/20130201/7192977.patch \ + security/20130201/7197546.patch \ + security/20130201/7200491.patch \ + security/20130201/7200500.patch \ + security/20130201/7201064.patch \ + security/20130201/7201066.patch \ + security/20130201/7201070.patch \ + security/20130201/7201071.patch \ + security/20130201/8000210.patch \ + security/20130201/8000537.patch \ + security/20130201/8000540.patch \ + security/20130201/8000631.patch \ + security/20130201/8001242.patch \ + security/20130201/8001307.patch \ + security/20130201/8001972.patch \ + security/20130201/8002325.patch \ + security/20130219/8006446.patch \ + security/20130219/8006777.patch \ + security/20130219/8007688.patch \ + security/20130304/8007014.patch \ + security/20130304/8007675.patch \ + openjdk/7036559-concurrenthashmap_improvements.patch \ + security/20130416/8009063.patch \ + openjdk/8004302-soap_test_failure.patch \ + security/20130416/6657673.patch \ + security/20130416/6657673-fixup.patch \ + openjdk/7133220-factory_finder_parser_transform_useBSClassLoader.patch \ + security/20130416/6657673-factory_finder.patch \ + openjdk/6669869-queries_per_appcontext.patch \ + openjdk/5102804-memory_leak.patch \ + openjdk/6963811-deadlock_fix.patch \ + openjdk/7064279-resource_release.patch \ + openjdk/7064279-fixup.patch \ + security/20130416/7200507.patch \ + security/20130416/8000724.patch \ + security/20130416/8004986.patch \ + openjdk/6501644-icu_sync.patch \ + openjdk/6886358-layout_update.patch \ + security/20130416/8001031.patch \ + openjdk/7017324-kerning_crash.patch \ + security/20130416/8001040.patch \ + security/20130416/8001322.patch \ + security/20130416/8001329.patch \ + security/20130416/8003335.patch \ + security/20130416/8003445.patch \ + security/20130416/8003543.patch \ + security/20130416/8004261.patch \ + security/20130416/8004336.patch \ + security/20130416/8005432.patch \ + security/20130416/8005943.patch \ + security/20130416/8006309.patch \ + security/20130416/8006435.patch \ + security/20130416/8006790.patch \ + security/20130416/8006795.patch \ + security/20130416/8007406.patch \ + security/20130416/8007617.patch \ + security/20130416/8007667.patch \ + security/20130416/8007918.patch \ + security/20130416/8009305.patch \ + security/20130416/8009699.patch \ + security/20130416/8009814.patch \ + security/20130416/8009857.patch \ + openjdk/7195301-no_instanceof_node.patch \ + openjdk/6469266-xmlsec_1.4.2.patch \ + security/20130618/6741606-apache_santuario.patch \ + security/20130618/7170730-windows_network_stack.patch \ + security/20130618/8000638-improve_deserialization.patch \ + security/20130618/8001032-restrict_object_access-corba.patch \ + security/20130618/8001033-refactor_address_handling.patch \ + security/20130618/8001034-memory_management.patch \ + security/20130618/8001038-resourcefully_handle_resources.patch \ + security/20130618/8001043-clarify_definition_restrictions.patch \ + security/20130618/8001309-better_handling_of_annotation_interfaces.patch \ + security/20130618/8001318-socket_getlocaladdress_consistency.patch \ + security/20130618/8001318-6_fixup.patch \ + security/20130618/8001330-improve_checking_order.patch \ + security/20130618/8003703-update_rmi_connection_dialog.patch \ + openjdk/8005615-failure_to_load_logger_implementation.patch \ + openjdk/8007393.patch \ + openjdk/8007611.patch \ + security/20130618/8004584-augment_applet_contextualization.patch \ + security/20130618/8005007-better_glyph_processing.patch \ + security/20130618/8006328-sound_class_robustness.patch \ + security/20130618/8006328-6_fixup.patch \ + security/20130618/8006611-improve_scripting.patch \ + security/20130618/8007467-improve_jmx_internal_api_robustness.patch \ + security/20130618/8007471-improve_mbean_notifications.patch \ + security/20130618/8007471-6_fixup.patch \ + security/20130618/8007812-getenclosingmethod.patch \ + security/20130618/8008120-improve_jmx_class_checking.patch \ + security/20130618/8008124-better_compliance_testing.patch \ + security/20130618/8008128-better_jmx_api_coherence.patch \ + security/20130618/8008132-better_serialization.patch \ + security/20130618/8008585-jmx_data_handling.patch \ + security/20130618/8008593-better_urlclassloader.patch \ + security/20130618/8008603-jmx_provider_provision.patch \ + security/20130618/8008611-jmx_annotations.patch \ + security/20130618/8008611-6_fixup.patch \ + security/20130618/8008615-jmx_internal_api_robustness.patch \ + security/20130618/8008623-mbeanserver_handling.patch \ + security/20130618/8008744-6741606_rework.patch \ + security/20130618/8008982-jmx_interface_changes.patch \ + security/20130618/8009004-rmi_connection_improvement.patch \ + security/20130618/8009013-t2k_glyphs.patch \ + security/20130618/8009034-jmx_notification_improvement.patch \ + security/20130618/8009038-jmx_notification_support_improvement.patch \ + security/20130618/8009067-improve_key_storing.patch \ + security/20130618/8009235-improve_tsa_data_handling.patch \ + openjdk/6888167-medialib_memory_leaks.patch \ + security/20130618/8011243-improve_imaginglib.patch \ + security/20130618/8011248-better_component_rasters.patch \ + security/20130618/8011253-better_short_component_rasters.patch \ + security/20130618/8011257-better_byte_component_rasters.patch \ + security/20130618/8011557-improve_reflection.patch \ + security/20130618/8012421-better_positioning.patch \ + security/20130618/8012438-better_image_validation.patch \ + security/20130618/8012597-better_image_channel_validation.patch \ + security/20130618/8012601-better_layout_validation.patch \ + security/20130618/8014281-better_xml_signature_checking.patch \ + security/20130618/diamond_fix.patch \ + security/20130618/handle_npe.patch \ + security/20130618/javac_issue.patch \ + security/20130618/7158805-nested_subroutine_rewriting.patch \ + security/20130618/8001330-checking_order_improvement.patch \ + security/20130618/8000642-better_transportation_handling.patch \ + openjdk/6786028-wcag_bold_tags.patch \ + openjdk/6786682-wcag_lang.patch \ + openjdk/6802694-no_deprecated.patch \ + openjdk/6786690-wcag_dl.patch \ + openjdk/6786688-wcag_table.patch \ + openjdk/6961178-doclet_xml.patch \ + openjdk/6851834-restructure.patch \ + openjdk/6851834-handle_renames.patch \ + openjdk/7006270-regressions.patch \ + security/20130618/8012375-javadoc_framing.patch \ + security/20130618/8015997-more_javadoc_framing.patch \ + security/20130618/langtools_merge-01.patch \ + security/20130618/langtools_merge-02.patch \ + security/20130618/langtools_generics.patch \ + security/20130618/langtools_merge-03.patch \ + security/20130618/8009071-improve_shape_handling.patch + +.if ${PORT_OPTIONS:MICEDTEA} +_PATCHES+= \ + openjdk/7032388-work_without_cmov_instruction.patch \ + applet_hole.patch \ + jpegclasses.patch +.endif + +.for p in ${_PATCHES} +ICEDTEA_PATCHES+= ${FILESDIR}/icedtea/${p} +.endfor Added: head/java/openjdk6/files/icedtea/openjdk/6469266-xmlsec_1.4.2.patch ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/java/openjdk6/files/icedtea/openjdk/6469266-xmlsec_1.4.2.patch Tue Jul 16 21:07:25 2013 (r323126) @@ -0,0 +1,23876 @@ +# HG changeset patch +# User andrew +# Date 1371136223 -3600 +# Node ID a955a845f0d1b8e21e0780986d971b3712db26c7 +# Parent 2ae6d8da293f30c94c9478a6634c7a480328c5c5 +6469266: Integrate Apache XMLSec 1.4.2 into JDK 7 +Reviewed-by: valeriep + +diff --git a/src/share/classes/com/sun/org/apache/xml/internal/security/Init.java b/src/share/classes/com/sun/org/apache/xml/internal/security/Init.java +--- jdk/src/share/classes/com/sun/org/apache/xml/internal/security/Init.java ++++ jdk/src/share/classes/com/sun/org/apache/xml/internal/security/Init.java +@@ -20,12 +20,9 @@ + */ + package com.sun.org.apache.xml.internal.security; + +- +- + import java.io.InputStream; + import java.security.AccessController; + import java.security.PrivilegedAction; +- + import javax.xml.parsers.DocumentBuilder; + import javax.xml.parsers.DocumentBuilderFactory; + +@@ -51,7 +48,7 @@ + * done by calling {@link Init#init} which should be done in any static block + * of the files of this library. We ensure that this call is only executed once. + * +- * @author $Author: raul $ ++ * @author $Author: mullan $ + */ + public final class Init { + +@@ -113,20 +110,19 @@ + dbf.setValidating(false); + + DocumentBuilder db = dbf.newDocumentBuilder(); +- + // We don't allow users to override the Apache XML Security + // configuration in the JRE. Users should use the standard security + // provider mechanism instead if implementing their own + // transform or canonicalization algorithms. +- // String cfile = System.getProperty("com.sun.org.apache.xml.internal.security.resource.config"); +- // InputStream is = +- // Class.forName("com.sun.org.apache.xml.internal.security.Init") +- // .getResourceAsStream(cfile != null ? cfile : "resource/config.xml"); ++ // InputStream is = Class.forName("com.sun.org.apache.xml.internal.security.Init").getResourceAsStream("resource/config.xml"); + InputStream is = (InputStream) AccessController.doPrivileged( + new PrivilegedAction() { + public Object run() { ++// String cfile = System.getProperty ++// ("com.sun.org.apache.xml.internal.security.resource.config"); + return getClass().getResourceAsStream +- ("resource/config.xml"); ++// (cfile != null ? cfile : "resource/config.xml"); ++ ("resource/config.xml"); + } + }); + +@@ -167,7 +163,7 @@ + // + // if (tag.equals("ResourceBundles")){ + // XX_configure_i18n_start = System.currentTimeMillis(); +-// Element resource=(Element)el; ++// Element resource=(Element)el; + // /* configure internationalization */ + // Attr langAttr = resource.getAttributeNode("defaultLanguageCode"); + // Attr countryAttr = resource.getAttributeNode("defaultCountryCode"); +@@ -202,11 +198,11 @@ + + if (currMeth.getDeclaringClass().getName() + .equals(JAVACLASS)) { +- log.log(java.util.logging.Level.FINE, currMeth.getDeclaringClass().toString()); ++ log.log(java.util.logging.Level.FINE, currMeth.getDe claringClass().toString()); + } + }*/ +- if (true) +- if (log.isLoggable(java.util.logging.Level.FINE)) log.log(java.util.logging.Level.FINE, "Canonicalizer.register(" + URI + ", " ++ if (log.isLoggable(java.util.logging.Level.FINE)) ++ log.log(java.util.logging.Level.FINE, "Canonicalizer.register(" + URI + ", " + + JAVACLASS + ")"); + Canonicalizer.register(URI, JAVACLASS); + } catch (ClassNotFoundException e) { +@@ -233,9 +229,8 @@ + "JAVACLASS"); + try { + Class.forName(JAVACLASS); +- if (true) +- if (log.isLoggable(java.util.logging.Level.FINE)) log.log(java.util.logging.Level.FINE, "Transform.register(" + URI + ", " + JAVACLASS +- + ")"); ++ if (log.isLoggable(java.util.logging.Level.FINE)) ++ log.log(java.util.logging.Level.FINE, "Transform.register(" + URI + ", " + JAVACLASS + ")"); + Transform.register(URI, JAVACLASS); + } catch (ClassNotFoundException e) { + Object exArgs[] = { URI, JAVACLASS }; +@@ -284,12 +279,11 @@ + // + // if (currMeth.getDeclaringClass().getName() + // .equals(JAVACLASS)) { +-// log.log(java.util.logging.Level.FINE, currMeth.getDeclaringClass().toString()); ++// log.log(java.util.logging.Level.FINE, currMeth.getDe claringClass().toString()); + // } + // } +- if (true) +- if (log.isLoggable(java.util.logging.Level.FINE)) log.log(java.util.logging.Level.FINE, "SignatureAlgorithm.register(" + URI + ", " +- + JAVACLASS + ")"); ++ if (log.isLoggable(java.util.logging.Level.FINE)) ++ log.log(java.util.logging.Level.FINE, "SignatureAlgorithm.register(" + URI + ", " + JAVACLASS + ")"); + SignatureAlgorithm.register(URI, JAVACLASS); + } catch (ClassNotFoundException e) { + Object exArgs[] = { URI, JAVACLASS }; +@@ -320,13 +314,11 @@ + "DESCRIPTION"); + + if ((Description != null) && (Description.length() > 0)) { +- if (true) +- if (log.isLoggable(java.util.logging.Level.FINE)) log.log(java.util.logging.Level.FINE, "Register Resolver: " + JAVACLASS + ": " +- + Description); ++ if (log.isLoggable(java.util.logging.Level.FINE)) ++ log.log(java.util.logging.Level.FINE, "Register Resolver: " + JAVACLASS + ": " + Description); + } else { +- if (true) +- if (log.isLoggable(java.util.logging.Level.FINE)) log.log(java.util.logging.Level.FINE, "Register Resolver: " + JAVACLASS +- + ": For unknown purposes"); ++ if (log.isLoggable(java.util.logging.Level.FINE)) ++ log.log(java.util.logging.Level.FINE, "Register Resolver: " + JAVACLASS + ": For unknown purposes"); + } + try { + ResourceResolver.register(JAVACLASS); +@@ -359,13 +351,11 @@ + "DESCRIPTION"); + + if ((Description != null) && (Description.length() > 0)) { +- if (true) +- if (log.isLoggable(java.util.logging.Level.FINE)) log.log(java.util.logging.Level.FINE, "Register Resolver: " + JAVACLASS + ": " +- + Description); ++ if (log.isLoggable(java.util.logging.Level.FINE)) ++ log.log(java.util.logging.Level.FINE, "Register Resolver: " + JAVACLASS + ": " + Description); + } else { +- if (true) +- if (log.isLoggable(java.util.logging.Level.FINE)) log.log(java.util.logging.Level.FINE, "Register Resolver: " + JAVACLASS +- + ": For unknown purposes"); ++ if (log.isLoggable(java.util.logging.Level.FINE)) ++ log.log(java.util.logging.Level.FINE, "Register Resolver: " + JAVACLASS + ": For unknown purposes"); + } + + KeyResolver.register(JAVACLASS); +@@ -376,8 +366,8 @@ + + if (tag.equals("PrefixMappings")){ + XX_configure_reg_prefixes_start = System.currentTimeMillis(); +- if (true) +- if (log.isLoggable(java.util.logging.Level.FINE)) log.log(java.util.logging.Level.FINE, "Now I try to bind prefixes:"); ++ if (log.isLoggable(java.util.logging.Level.FINE)) ++ log.log(java.util.logging.Level.FINE, "Now I try to bind prefixes:"); + + Element[] nl = XMLUtils.selectNodes(el.getFirstChild(), CONF_NS,"PrefixMapping"); + +@@ -386,8 +376,8 @@ + "namespace"); + String prefix = nl[i].getAttributeNS(null, + "prefix"); +- if (true) +- if (log.isLoggable(java.util.logging.Level.FINE)) log.log(java.util.logging.Level.FINE, "Now I try to bind " + prefix + " to " + namespace); ++ if (log.isLoggable(java.util.logging.Level.FINE)) ++ log.log(java.util.logging.Level.FINE, "Now I try to bind " + prefix + " to " + namespace); + com.sun.org.apache.xml.internal.security.utils.ElementProxy + .setDefaultPrefix(namespace, prefix); + } +@@ -398,19 +388,19 @@ + long XX_init_end = System.currentTimeMillis(); + + //J- +- if (true) { +- if (log.isLoggable(java.util.logging.Level.FINE)) log.log(java.util.logging.Level.FINE, "XX_init " + ((int)(XX_init_end - XX_init_start)) + " ms"); +- if (log.isLoggable(java.util.logging.Level.FINE)) log.log(java.util.logging.Level.FINE, " XX_prng " + ((int)(XX_prng_end - XX_prng_start)) + " ms"); +- if (log.isLoggable(java.util.logging.Level.FINE)) log.log(java.util.logging.Level.FINE, " XX_parsing " + ((int)(XX_parsing_end - XX_parsing_start)) + " ms"); +- if (log.isLoggable(java.util.logging.Level.FINE)) log.log(java.util.logging.Level.FINE, " XX_configure_i18n " + ((int)(XX_configure_i18n_end- XX_configure_i18n_start)) + " ms"); +- if (log.isLoggable(java.util.logging.Level.FINE)) log.log(java.util.logging.Level.FINE, " XX_configure_reg_c14n " + ((int)(XX_configure_reg_c14n_end- XX_configure_reg_c14n_start)) + " ms"); +- if (log.isLoggable(java.util.logging.Level.FINE)) log.log(java.util.logging.Level.FINE, " XX_configure_reg_jcemapper " + ((int)(XX_configure_reg_jcemapper_end- XX_configure_reg_jcemapper_start)) + " ms"); +- if (log.isLoggable(java.util.logging.Level.FINE)) log.log(java.util.logging.Level.FINE, " XX_configure_reg_keyInfo " + ((int)(XX_configure_reg_keyInfo_end- XX_configure_reg_keyInfo_start)) + " ms"); +- if (log.isLoggable(java.util.logging.Level.FINE)) log.log(java.util.logging.Level.FINE, " XX_configure_reg_keyResolver " + ((int)(XX_configure_reg_keyResolver_end- XX_configure_reg_keyResolver_start)) + " ms"); +- if (log.isLoggable(java.util.logging.Level.FINE)) log.log(java.util.logging.Level.FINE, " XX_configure_reg_prefixes " + ((int)(XX_configure_reg_prefixes_end- XX_configure_reg_prefixes_start)) + " ms"); +- if (log.isLoggable(java.util.logging.Level.FINE)) log.log(java.util.logging.Level.FINE, " XX_configure_reg_resourceresolver " + ((int)(XX_configure_reg_resourceresolver_end- XX_configure_reg_resourceresolver_start)) + " ms"); +- if (log.isLoggable(java.util.logging.Level.FINE)) log.log(java.util.logging.Level.FINE, " XX_configure_reg_sigalgos " + ((int)(XX_configure_reg_sigalgos_end- XX_configure_reg_sigalgos_start)) + " ms"); +- if (log.isLoggable(java.util.logging.Level.FINE)) log.log(java.util.logging.Level.FINE, " XX_configure_reg_transforms " + ((int)(XX_configure_reg_transforms_end- XX_configure_reg_transforms_start)) + " ms"); ++ if (log.isLoggable(java.util.logging.Level.FINE)) { ++ log.log(java.util.logging.Level.FINE, "XX_init " + ((int)(XX_init_end - XX_init_start)) + " ms"); ++ log.log(java.util.logging.Level.FINE, " XX_prng " + ((int)(XX_prng_end - XX_prng_start)) + " ms"); ++ log.log(java.util.logging.Level.FINE, " XX_parsing " + ((int)(XX_parsing_end - XX_parsing_start)) + " ms"); ++ log.log(java.util.logging.Level.FINE, " XX_configure_i18n " + ((int)(XX_configure_i18n_end- XX_configure_i18n_start)) + " ms"); ++ log.log(java.util.logging.Level.FINE, " XX_configure_reg_c14n " + ((int)(XX_configure_reg_c14n_end- XX_configure_reg_c14n_start)) + " ms"); ++ log.log(java.util.logging.Level.FINE, " XX_configure_reg_jcemapper " + ((int)(XX_configure_reg_jcemapper_end- XX_configure_reg_jcemapper_start)) + " ms"); ++ log.log(java.util.logging.Level.FINE, " XX_configure_reg_keyInfo " + ((int)(XX_configure_reg_keyInfo_end- XX_configure_reg_keyInfo_start)) + " ms"); ++ log.log(java.util.logging.Level.FINE, " XX_configure_reg_keyResolver " + ((int)(XX_configure_reg_keyResolver_end- XX_configure_reg_keyResolver_start)) + " ms"); ++ log.log(java.util.logging.Level.FINE, " XX_configure_reg_prefixes " + ((int)(XX_configure_reg_prefixes_end- XX_configure_reg_prefixes_start)) + " ms"); ++ log.log(java.util.logging.Level.FINE, " XX_configure_reg_resourceresolver " + ((int)(XX_configure_reg_resourceresolver_end- XX_configure_reg_resourceresolver_start)) + " ms"); ++ log.log(java.util.logging.Level.FINE, " XX_configure_reg_sigalgos " + ((int)(XX_configure_reg_sigalgos_end- XX_configure_reg_sigalgos_start)) + " ms"); ++ log.log(java.util.logging.Level.FINE, " XX_configure_reg_transforms " + ((int)(XX_configure_reg_transforms_end- XX_configure_reg_transforms_start)) + " ms"); + } + } catch (Exception e) { + log.log(java.util.logging.Level.SEVERE, "Bad: ", e); +diff --git a/src/share/classes/com/sun/org/apache/xml/internal/security/algorithms/Algorithm.java b/src/share/classes/com/sun/org/apache/xml/internal/security/algorithms/Algorithm.java +--- jdk/src/share/classes/com/sun/org/apache/xml/internal/security/algorithms/Algorithm.java ++++ jdk/src/share/classes/com/sun/org/apache/xml/internal/security/algorithms/Algorithm.java +@@ -24,7 +24,7 @@ + + import com.sun.org.apache.xml.internal.security.exceptions.XMLSecurityException; + import com.sun.org.apache.xml.internal.security.utils.Constants; +-import com.sun.org.apache.xml.internal.security.utils.ElementProxy; ++import com.sun.org.apache.xml.internal.security.utils.SignatureElementProxy; + import org.w3c.dom.Document; + import org.w3c.dom.Element; + +@@ -33,11 +33,7 @@ + * The Algorithm class which stores the Algorithm URI as a string. + * + */ +-public abstract class Algorithm extends ElementProxy { +- +- /** {@link java.util.logging} logging facility */ +- static java.util.logging.Logger log = +- java.util.logging.Logger.getLogger(Algorithm.class.getName()); ++public abstract class Algorithm extends SignatureElementProxy { + + /** + * +@@ -79,7 +75,7 @@ + */ + protected void setAlgorithmURI(String algorithmURI) { + +- if ((this._state == MODE_CREATE) && (algorithmURI != null)) { ++ if ( (algorithmURI != null)) { + this._constructionElement.setAttributeNS(null, Constants._ATT_ALGORITHM, + algorithmURI); + } +diff --git a/src/share/classes/com/sun/org/apache/xml/internal/security/algorithms/JCEMapper.java b/src/share/classes/com/sun/org/apache/xml/internal/security/algorithms/JCEMapper.java +--- jdk/src/share/classes/com/sun/org/apache/xml/internal/security/algorithms/JCEMapper.java ++++ jdk/src/share/classes/com/sun/org/apache/xml/internal/security/algorithms/JCEMapper.java +@@ -35,7 +35,7 @@ + /** + * This class maps algorithm identifier URIs to JAVA JCE class names. + * +- * @author $Author: raul $ ++ * @author $Author: mullan $ + */ + public class JCEMapper { + +@@ -45,9 +45,9 @@ + + + +- private static Map uriToJCEName = new HashMap(); ++ private static Map uriToJCEName; + +- private static Map algorithmsMap = new HashMap(); ++ private static Map algorithmsMap; + + private static String providerName = null; + /** +@@ -63,6 +63,8 @@ + + static void loadAlgorithms( Element algorithmsEl) { + Element[] algorithms = XMLUtils.selectNodes(algorithmsEl.getFirstChild(),Init.CONF_NS,"Algorithm"); ++ uriToJCEName = new HashMap( algorithms.length * 2); ++ algorithmsMap = new HashMap( algorithms.length * 2); + for (int i = 0 ;i < algorithms.length ;i ++) { + Element el = algorithms[i]; + String id = el.getAttribute("URI"); +@@ -70,6 +72,7 @@ + uriToJCEName.put(id, jceName); + algorithmsMap.put(id, new Algorithm(el)); + } ++ + } + + static Algorithm getAlgorithmMapping(String algoURI) { +@@ -84,8 +87,8 @@ + * + */ + public static String translateURItoJCEID(String AlgorithmURI) { +- if (true) +- if (log.isLoggable(java.util.logging.Level.FINE)) log.log(java.util.logging.Level.FINE, "Request for URI " + AlgorithmURI); ++ if (log.isLoggable(java.util.logging.Level.FINE)) ++ log.log(java.util.logging.Level.FINE, "Request for URI " + AlgorithmURI); + + String jceName = (String) uriToJCEName.get(AlgorithmURI); + return jceName; +@@ -100,8 +103,8 @@ + * + */ + public static String getAlgorithmClassFromURI(String AlgorithmURI) { +- if (true) +- if (log.isLoggable(java.util.logging.Level.FINE)) log.log(java.util.logging.Level.FINE, "Request for URI " + AlgorithmURI); ++ if (log.isLoggable(java.util.logging.Level.FINE)) ++ log.log(java.util.logging.Level.FINE, "Request for URI " + AlgorithmURI); + + return ((Algorithm) algorithmsMap.get(AlgorithmURI)).algorithmClass; + } +diff --git a/src/share/classes/com/sun/org/apache/xml/internal/security/algorithms/MessageDigestAlgorithm.java b/src/share/classes/com/sun/org/apache/xml/internal/security/algorithms/MessageDigestAlgorithm.java +--- jdk/src/share/classes/com/sun/org/apache/xml/internal/security/algorithms/MessageDigestAlgorithm.java ++++ jdk/src/share/classes/com/sun/org/apache/xml/internal/security/algorithms/MessageDigestAlgorithm.java +@@ -20,10 +20,10 @@ + */ + package com.sun.org.apache.xml.internal.security.algorithms; + +- +- + import java.security.MessageDigest; + import java.security.NoSuchProviderException; ++import java.util.HashMap; ++import java.util.Map; + + import com.sun.org.apache.xml.internal.security.signature.XMLSignatureException; + import com.sun.org.apache.xml.internal.security.utils.Constants; +@@ -41,11 +41,6 @@ + */ + public class MessageDigestAlgorithm extends Algorithm { + +- /** {@link java.util.logging} logging facility */ +- static java.util.logging.Logger log = +- java.util.logging.Logger.getLogger( +- MessageDigestAlgorithm.class.getName()); +- + /** Message Digest - NOT RECOMMENDED MD5*/ + public static final String ALGO_ID_DIGEST_NOT_RECOMMENDED_MD5 = Constants.MoreAlgorithmsSpecNS + "md5"; + /** Digest - Required SHA1*/ +@@ -76,6 +71,12 @@ + this.algorithm = messageDigest; + } + ++ static ThreadLocal instances=new ThreadLocal() { ++ protected Object initialValue() { ++ return new HashMap(); ++ }; ++ }; ++ + /** + * Factory method for constructing a message digest algorithm by name. + * +@@ -86,8 +87,15 @@ + */ + public static MessageDigestAlgorithm getInstance( + Document doc, String algorithmURI) throws XMLSignatureException { ++ MessageDigest md = getDigestInstance(algorithmURI); ++ return new MessageDigestAlgorithm(doc, md, algorithmURI); ++ } + +- String algorithmID = JCEMapper.translateURItoJCEID(algorithmURI); ++private static MessageDigest getDigestInstance(String algorithmURI) throws XMLSignatureException { ++ MessageDigest result=(MessageDigest) ((Map)instances.get()).get(algorithmURI); ++ if (result!=null) ++ return result; ++ String algorithmID = JCEMapper.translateURItoJCEID(algorithmURI); + + if (algorithmID == null) { + Object[] exArgs = { algorithmURI }; +@@ -113,8 +121,9 @@ + + throw new XMLSignatureException("algorithms.NoSuchAlgorithm", exArgs); + } +- return new MessageDigestAlgorithm(doc, md, algorithmURI); +- } ++ ((Map)instances.get()).put(algorithmURI, md); ++ return md; ++} + + /** + * Returns the actual {@link java.security.MessageDigest} algorithm object +diff --git a/src/share/classes/com/sun/org/apache/xml/internal/security/algorithms/SignatureAlgorithm.java b/src/share/classes/com/sun/org/apache/xml/internal/security/algorithms/SignatureAlgorithm.java +--- jdk/src/share/classes/com/sun/org/apache/xml/internal/security/algorithms/SignatureAlgorithm.java ++++ jdk/src/share/classes/com/sun/org/apache/xml/internal/security/algorithms/SignatureAlgorithm.java +@@ -25,6 +25,7 @@ + import java.security.SecureRandom; + import java.security.spec.AlgorithmParameterSpec; + import java.util.HashMap; ++import java.util.Map; + + import com.sun.org.apache.xml.internal.security.algorithms.implementations.IntegrityHmac; + import com.sun.org.apache.xml.internal.security.exceptions.AlgorithmAlreadyRegisteredException; +@@ -52,9 +53,35 @@ + /** All available algorithm classes are registered here */ + static HashMap _algorithmHash = null; + ++ static ThreadLocal instancesSigning=new ThreadLocal() { ++ protected Object initialValue() { ++ return new HashMap(); ++ }; ++ }; ++ ++ static ThreadLocal instancesVerify=new ThreadLocal() { ++ protected Object initialValue() { ++ return new HashMap(); ++ }; ++ }; ++ ++ static ThreadLocal keysSigning=new ThreadLocal() { ++ protected Object initialValue() { ++ return new HashMap(); ++ }; ++ }; ++ static ThreadLocal keysVerify=new ThreadLocal() { ++ protected Object initialValue() { ++ return new HashMap(); ++ }; ++ }; ++// boolean isForSigning=false; ++ + /** Field _signatureAlgorithm */ + protected SignatureAlgorithmSpi _signatureAlgorithm = null; + ++ private String algorithmURI; ++ + /** + * Constructor SignatureAlgorithm + * +@@ -64,18 +91,49 @@ + */ + public SignatureAlgorithm(Document doc, String algorithmURI) + throws XMLSecurityException { ++ super(doc, algorithmURI); ++ this.algorithmURI = algorithmURI; ++ } + +- super(doc, algorithmURI); + +- try { ++ private void initializeAlgorithm(boolean isForSigning) throws XMLSignatureException { ++ if (_signatureAlgorithm!=null) { ++ return; ++ } ++ _signatureAlgorithm=isForSigning ? getInstanceForSigning(algorithmURI) : getInstanceForVerify(algorithmURI); ++ this._signatureAlgorithm ++ .engineGetContextFromElement(this._constructionElement); ++ } ++ private static SignatureAlgorithmSpi getInstanceForSigning(String algorithmURI) throws XMLSignatureException { ++ SignatureAlgorithmSpi result=(SignatureAlgorithmSpi) ((Map)instancesSigning.get()).get(algorithmURI); ++ if (result!=null) { ++ result.reset(); ++ return result; ++ } ++ result=buildSigner(algorithmURI, result); ++ ((Map)instancesSigning.get()).put(algorithmURI,result); ++ return result; ++ } ++ private static SignatureAlgorithmSpi getInstanceForVerify(String algorithmURI) throws XMLSignatureException { ++ SignatureAlgorithmSpi result=(SignatureAlgorithmSpi) ((Map)instancesVerify.get()).get(algorithmURI); ++ if (result!=null) { ++ result.reset(); ++ return result; ++ } ++ result=buildSigner(algorithmURI, result); ++ ((Map)instancesVerify.get()).put(algorithmURI,result); ++ return result; ++ } ++ ++ private static SignatureAlgorithmSpi buildSigner(String algorithmURI, SignatureAlgorithmSpi result) throws XMLSignatureException { ++ try { + Class implementingClass = + SignatureAlgorithm.getImplementingClass(algorithmURI); +- if (true) +- if (log.isLoggable(java.util.logging.Level.FINE)) log.log(java.util.logging.Level.FINE, "Create URI \"" + algorithmURI + "\" class \"" ++ if (log.isLoggable(java.util.logging.Level.FINE)) ++ log.log(java.util.logging.Level.FINE, "Create URI \"" + algorithmURI + "\" class \"" + + implementingClass + "\""); +- +- this._signatureAlgorithm = +- (SignatureAlgorithmSpi) implementingClass.newInstance(); ++ result=(SignatureAlgorithmSpi) implementingClass.newInstance(); ++ return result; + } catch (IllegalAccessException ex) { + Object exArgs[] = { algorithmURI, ex.getMessage() }; + +@@ -92,7 +150,7 @@ + throw new XMLSignatureException("algorithms.NoSuchAlgorithm", exArgs, + ex); + } +- } ++} + + /** + * Constructor SignatureAlgorithm +@@ -107,7 +165,8 @@ + throws XMLSecurityException { + + this(doc, algorithmURI); +- ++ this.algorithmURI=algorithmURI; ++ initializeAlgorithm(true); + this._signatureAlgorithm.engineSetHMACOutputLength(HMACOutputLength); + ((IntegrityHmac)this._signatureAlgorithm) + .engineAddContextToElement(this._constructionElement); +@@ -124,37 +183,7 @@ + throws XMLSecurityException { + + super(element, BaseURI); +- +- String algorithmURI = this.getURI(); +- +- try { +- Class implementingClass = +- SignatureAlgorithm.getImplementingClass(algorithmURI); +- if (true) +- if (log.isLoggable(java.util.logging.Level.FINE)) log.log(java.util.logging.Level.FINE, "Create URI \"" + algorithmURI + "\" class \"" +- + implementingClass + "\""); +- +- this._signatureAlgorithm = +- (SignatureAlgorithmSpi) implementingClass.newInstance(); +- +- this._signatureAlgorithm +- .engineGetContextFromElement(this._constructionElement); +- } catch (IllegalAccessException ex) { +- Object exArgs[] = { algorithmURI, ex.getMessage() }; +- +- throw new XMLSignatureException("algorithms.NoSuchAlgorithm", exArgs, +- ex); +- } catch (InstantiationException ex) { +- Object exArgs[] = { algorithmURI, ex.getMessage() }; +- +- throw new XMLSignatureException("algorithms.NoSuchAlgorithm", exArgs, +- ex); +- } catch (NullPointerException ex) { +- Object exArgs[] = { algorithmURI, ex.getMessage() }; +- +- throw new XMLSignatureException("algorithms.NoSuchAlgorithm", exArgs, +- ex); +- } ++ algorithmURI = this.getURI(); + } + + /** +@@ -175,7 +204,12 @@ + * @return the result of the {@link java.security.Signature#getAlgorithm} method + */ + public String getJCEAlgorithmString() { +- return this._signatureAlgorithm.engineGetJCEAlgorithmString(); ++ try { ++ return getInstanceForVerify(algorithmURI).engineGetJCEAlgorithmString(); ++ } catch (XMLSignatureException e) { ++ //Ignore. ++ return null; ++ } + } + + /** +@@ -184,7 +218,11 @@ + * @return The Provider of this Signature Alogrithm + */ + public String getJCEProviderName() { +- return this._signatureAlgorithm.engineGetJCEProviderName(); ++ try { ++ return getInstanceForVerify(algorithmURI).engineGetJCEProviderName(); ++ } catch (XMLSignatureException e) { ++ return null; ++ } + } + + /** +@@ -231,7 +269,13 @@ + * @throws XMLSignatureException + */ + public void initSign(Key signingKey) throws XMLSignatureException { +- this._signatureAlgorithm.engineInitSign(signingKey); ++ initializeAlgorithm(true); ++ Map map=(Map)keysSigning.get(); ++ if (map.get(this.algorithmURI)==signingKey) { ++ return; ++ } ++ map.put(this.algorithmURI,signingKey); ++ this._signatureAlgorithm.engineInitSign(signingKey); + } + + /** +@@ -244,6 +288,7 @@ + */ + public void initSign(Key signingKey, SecureRandom secureRandom) + throws XMLSignatureException { ++ initializeAlgorithm(true); + this._signatureAlgorithm.engineInitSign(signingKey, secureRandom); + } + +@@ -258,6 +303,7 @@ + public void initSign( + Key signingKey, AlgorithmParameterSpec algorithmParameterSpec) + throws XMLSignatureException { ++ initializeAlgorithm(true); + this._signatureAlgorithm.engineInitSign(signingKey, + algorithmParameterSpec); + } +@@ -282,7 +328,13 @@ + * @throws XMLSignatureException + */ + public void initVerify(Key verificationKey) throws XMLSignatureException { +- this._signatureAlgorithm.engineInitVerify(verificationKey); ++ initializeAlgorithm(false); ++ Map map=(Map)keysVerify.get(); ++ if (map.get(this.algorithmURI)==verificationKey) { ++ return; ++ } ++ map.put(this.algorithmURI,verificationKey); ++ this._signatureAlgorithm.engineInitVerify(verificationKey); + } + + /** +@@ -320,7 +372,7 @@ + .getLogger(SignatureAlgorithm.class.getName()); + } + +- if (log.isLoggable(java.util.logging.Level.FINE)) log.log(java.util.logging.Level.FINE, "Init() called"); ++ log.log(java.util.logging.Level.FINE, "Init() called"); + + if (!SignatureAlgorithm._alreadyInitialized) { + SignatureAlgorithm._algorithmHash = new HashMap(10); +@@ -340,8 +392,8 @@ + throws AlgorithmAlreadyRegisteredException,XMLSignatureException { + + { +- if (true) +- if (log.isLoggable(java.util.logging.Level.FINE)) log.log(java.util.logging.Level.FINE, "Try to register " + algorithmURI + " " + implementingClass); ++ if (log.isLoggable(java.util.logging.Level.FINE)) ++ log.log(java.util.logging.Level.FINE, "Try to register " + algorithmURI + " " + implementingClass); + + // are we already registered? + Class registeredClassClass = +diff --git a/src/share/classes/com/sun/org/apache/xml/internal/security/algorithms/SignatureAlgorithmSpi.java b/src/share/classes/com/sun/org/apache/xml/internal/security/algorithms/SignatureAlgorithmSpi.java +--- jdk/src/share/classes/com/sun/org/apache/xml/internal/security/algorithms/SignatureAlgorithmSpi.java ++++ jdk/src/share/classes/com/sun/org/apache/xml/internal/security/algorithms/SignatureAlgorithmSpi.java +@@ -20,27 +20,20 @@ + */ + package com.sun.org.apache.xml.internal.security.algorithms; + +- +- + import java.security.Key; + import java.security.SecureRandom; + import java.security.spec.AlgorithmParameterSpec; + + import com.sun.org.apache.xml.internal.security.signature.XMLSignatureException; +-import org.w3c.dom.Document; + import org.w3c.dom.Element; + + + /** + * +- * @author $Author: raul $ ++ * @author $Author: mullan $ + */ + public abstract class SignatureAlgorithmSpi { + +- /** {@link java.util.logging} logging facility */ +- static java.util.logging.Logger log = +- java.util.logging.Logger.getLogger(SignatureAlgorithmSpi.class.getName()); +- + /** + * Returns the URI representation of <code>Transformation algorithm</code> + * +@@ -167,20 +160,6 @@ + protected abstract void engineSetParameter(AlgorithmParameterSpec params) + throws XMLSignatureException; + +- /** Field _doc */ +- Document _doc = null; +- +- /** +- * Method engineSetDocument +- * +- * @param doc +- */ +- protected void engineSetDocument(Document doc) { +- this._doc = doc; +- } +- +- /** Field _constructionElement */ +- Element _constructionElement = null; + + /** + * Method engineGetContextFromElement +@@ -188,7 +167,6 @@ + * @param element + */ + protected void engineGetContextFromElement(Element element) { +- this._constructionElement = element; + } + + /** +@@ -199,4 +177,7 @@ + */ + protected abstract void engineSetHMACOutputLength(int HMACOutputLength) + throws XMLSignatureException; ++ ++ public void reset() { ++ } + } +diff --git a/src/share/classes/com/sun/org/apache/xml/internal/security/algorithms/implementations/IntegrityHmac.java b/src/share/classes/com/sun/org/apache/xml/internal/security/algorithms/implementations/IntegrityHmac.java +--- jdk/src/share/classes/com/sun/org/apache/xml/internal/security/algorithms/implementations/IntegrityHmac.java ++++ jdk/src/share/classes/com/sun/org/apache/xml/internal/security/algorithms/implementations/IntegrityHmac.java +@@ -45,7 +45,7 @@ + + /** + * +- * @author $Author: raul $ ++ * @author $Author: mullan $ + */ + public abstract class IntegrityHmac extends SignatureAlgorithmSpi { + *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** _______________________________________________ svn-ports-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-ports-all To unsubscribe, send any mail to "svn-ports-all-unsubscribe@freebsd.org"
State Changed From-To: open->closed Committed, thanks!