Index: head/java/icedtea-web/Makefile =================================================================== --- head/java/icedtea-web/Makefile (revision 378488) +++ head/java/icedtea-web/Makefile (revision 378489) @@ -1,120 +1,121 @@ # $FreeBSD$ PORTNAME= icedtea-web -PORTVERSION= 1.5 -PORTREVISION= 1 +PORTVERSION= 1.5.2 CATEGORIES= java www MASTER_SITES= http://icedtea.wildebeest.org/download/source/ \ http://icedtea.classpath.org/download/source/ MAINTAINER= java@FreeBSD.org COMMENT= Free Java plug-in and Java Web Start for OpenJDK LICENSE= GPLv2 BUILD_DEPENDS= ${LOCALBASE}/bin/zip:${PORTSDIR}/archivers/zip \ ${LOCALBASE}/bin/bash:${PORTSDIR}/shells/bash RUN_DEPENDS= ${LOCALBASE}/bin/bash:${PORTSDIR}/shells/bash GNU_CONFIGURE= yes USE_JAVA= yes JAVA_OS= native JAVA_VENDOR= openjdk USE_PERL5= build USE_XORG= x11 USES= desktop-file-utils gmake perl5 pkgconfig shebangfix SHEBANG_FILES= javac.in jrunscript.in launcher/launchers.in WANT_GNOME= yes EXTRACT_CMD= ${GZIP_CMD} EXTRACT_BEFORE_ARGS= -dc EXTRACT_AFTER_ARGS= | ${SETENV} LC_ALL=en_US.UTF-8 ${TAR} -xf - PLIST_FILES= bin/itweb-javaws \ bin/itweb-policyeditor \ bin/itweb-settings \ man/man1/itweb-javaws.1.gz \ man/man1/itweb-policyeditor.1.gz \ man/man1/itweb-settings.1.gz \ share/applications/itweb-javaws.desktop \ share/applications/itweb-policyeditor.desktop \ share/applications/itweb-settings.desktop \ share/pixmaps/itweb-javaws.png PORTDATA= javaws_splash.png netx.jar PORTDOCS= netx CONFIGURE_ARGS= --with-asm=no --with-ecj=no --with-emma=no --with-jacoco=no CONFIGURE_ARGS+=--with-jdk-home="${JAVA_HOME}" -CONFIGURE_ENV= ac_cv_path_BIN_BASH=${bash_CMD} +CONFIGURE_ARGS+=--with-jre-home="${JAVA_HOME}/jre" +CONFIGURE_ARGS+=--with-tagsoup=no +CONFIGURE_ENV= BIN_BASH=${bash_CMD} SH= ${bash_CMD} OPTIONS_DEFINE= PLUGIN RHINO TEST OPTIONS_DEFAULT=PLUGIN PLUGIN_DESC= Enable the browser plug-in RHINO_DESC= Add support for Proxy Auto Config files TEST_DESC= Add support for running regression test DOCS_CONFIGURE_ENABLE= docs PLUGIN_CONFIGURE_ENABLE=plugin RHINO_BUILD_DEPENDS= ${JAVASHAREDIR}/rhino/rhino.jar:${PORTSDIR}/lang/rhino RHINO_RUN_DEPENDS= ${JAVASHAREDIR}/rhino/rhino.jar:${PORTSDIR}/lang/rhino RHINO_CONFIGURE_OFF= --with-rhino=no RHINO_CONFIGURE_ON= --with-rhino=${JAVASHAREDIR}/rhino/rhino.jar TEST_BUILD_DEPENDS= ${JAVALIBDIR}/junit.jar:${PORTSDIR}/java/junit TEST_CONFIGURE_OFF= --with-junit=no TEST_CONFIGURE_ON= --with-junit=${JAVALIBDIR}/junit.jar PLUGIN_PLIST_FILES= lib/IcedTeaPlugin.so PLUGIN_USE= GNOME=glib20 PLUGIN_USES= gecko webplugin:native .include .if ${PORT_OPTIONS:MPLUGIN} PORTDATA+= plugin.jar PORTDOCS+= plugin WEBPLUGIN_DIR= ${PREFIX}/lib WEBPLUGIN_FILES=IcedTeaPlugin.so .endif .include .if ${JAVA_PORT_VERSION} == "1.8.0" EXTRA_PATCHES= ${PATCHDIR}/extrapatch-jdk8 .elif ${JAVA_PORT_VERSION} == "1.6.0" pre-extract: @${ECHO_MSG} @${ECHO_MSG} "IMPORTANT: To build IcedTea-Web ${PORTVERSION}, you have to turn on 'ICEDTEA' option" @${ECHO_MSG} "for ${JAVA_PORT} (default). Otherwise, it will neither build nor work." @${ECHO_MSG} @sleep 5 .endif post-patch: ${REINPLACE_CMD} -e 's|^Icon=javaws|Icon=itweb-javaws|' \ ${WRKSRC}/*.desktop.in ${CP} -fp ${FILESDIR}/*.html \ ${WRKSRC}/netx/net/sourceforge/jnlp/resources .if ${PORT_OPTIONS:MTEST} post-build: @${ECHO_MSG} @${ECHO_MSG} "Run \"make test\" to execute regression test." @${ECHO_MSG} .endif post-install: ${MKDIR} ${STAGEDIR}${DESKTOPDIR} ${INSTALL_DATA} ${WRKSRC}/*.desktop ${STAGEDIR}${DESKTOPDIR} ${INSTALL_DATA} ${WRKSRC}/javaws.png \ ${STAGEDIR}${PREFIX}/share/pixmaps/itweb-javaws.png .if ${PORT_OPTIONS:MTEST} test: build @(cd ${WRKSRC}; ${MAKE_CMD} check) .if ${PORT_OPTIONS:MPLUGIN} @(cd ${WRKSRC}; ${MAKE_CMD} plugin-tests) .endif .endif .include Index: head/java/icedtea-web/distinfo =================================================================== --- head/java/icedtea-web/distinfo (revision 378488) +++ head/java/icedtea-web/distinfo (revision 378489) @@ -1,2 +1,2 @@ -SHA256 (icedtea-web-1.5.tar.gz) = 1c09f40b873a95c9863178b0f6cd2645fef493cc19d346510655a94948527c2d -SIZE (icedtea-web-1.5.tar.gz) = 1583000 +SHA256 (icedtea-web-1.5.2.tar.gz) = b29e8ff2533cc6521a6509a002001f4c97c80a004460063156d003898da13bf3 +SIZE (icedtea-web-1.5.2.tar.gz) = 1583105 Index: head/java/icedtea-web/files/extrapatch-jdk8 =================================================================== --- head/java/icedtea-web/files/extrapatch-jdk8 (revision 378488) +++ head/java/icedtea-web/files/extrapatch-jdk8 (revision 378489) @@ -1,1527 +1,1281 @@ --- Makefile.in 2014-04-02 06:21:18.672343000 -0400 +++ Makefile.in 2014-05-15 18:30:56.000000000 -0400 @@ -769,8 +769,8 @@ # Flags export IT_CFLAGS=$(CFLAGS) $(ARCHFLAG) export IT_JAVAC_SETTINGS=-g -encoding utf-8 $(JAVACFLAGS) $(MEMORY_LIMIT) $(PREFER_SOURCE) -export IT_LANGUAGE_SOURCE_VERSION=6 -export IT_CLASS_TARGET_VERSION=6 +export IT_LANGUAGE_SOURCE_VERSION=7 +export IT_CLASS_TARGET_VERSION=7 export IT_JAVACFLAGS=$(IT_JAVAC_SETTINGS) -source $(IT_LANGUAGE_SOURCE_VERSION) -target $(IT_CLASS_TARGET_VERSION) # --- configure 2014-04-02 06:21:18.000335000 -0400 +++ configure 2014-05-15 17:04:42.000000000 -0400 @@ -626,6 +626,8 @@ VERSION_DEFS HAVE_JAVA7_FALSE HAVE_JAVA7_TRUE +HAVE_JAVA8_FALSE +HAVE_JAVA8_TRUE JAVA SYSTEM_JRE_DIR X11_LIBS @@ -7226,8 +7228,9 @@ JAVA_VERSION=`$JAVA -version 2>&1 | sed -n '1s/[^"]*"\(.*\)"$/\1/p'` HAVE_JAVA7=`echo $JAVA_VERSION | awk '{if ($(0) >= 1.7) print "yes"}'` - if ! test -z "$HAVE_JAVA7" ; then - VERSION_DEFS='-DHAVE_JAVA7' + HAVE_JAVA8=`echo $JAVA_VERSION | awk '{if ($(0) >= 1.8) print "yes"}'` + if ! test -z "$HAVE_JAVA8" ; then + VERSION_DEFS='-DHAVE_JAVA8' fi if test x"${HAVE_JAVA7}" = "xyes" ; then @@ -7237,6 +7240,13 @@ HAVE_JAVA7_TRUE='#' HAVE_JAVA7_FALSE= fi +if test x"${HAVE_JAVA8}" = "xyes" ; then + HAVE_JAVA8_TRUE= + HAVE_JAVA8_FALSE='#' +else + HAVE_JAVA8_TRUE='#' + HAVE_JAVA8_FALSE= +fi @@ -10444,6 +10454,10 @@ as_fn_error $? "conditional \"HAVE_JAVA7\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi +if test -z "${HAVE_JAVA8_TRUE}" && test -z "${HAVE_JAVA8_FALSE}"; then + as_fn_error $? "conditional \"HAVE_JAVA8\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi if test -z "${WITH_XSLTPROC_TRUE}" && test -z "${WITH_XSLTPROC_FALSE}"; then as_fn_error $? "conditional \"WITH_XSLTPROC\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 --- netx/net/sourceforge/jnlp/JNLPFile.java 2014-04-02 06:20:59.682125000 -0400 +++ netx/net/sourceforge/jnlp/JNLPFile.java 2014-05-15 16:57:19.000000000 -0400 @@ -267,7 +267,6 @@ /** * Create a JNLPFile from an input stream. * - * @throws IOException if an IO exception occurred * @throws ParseException if the JNLP file was invalid */ public JNLPFile(InputStream input, ParserSettings settings) throws ParseException { @@ -281,7 +280,6 @@ * @param input input stream of JNLP file. * @param codebase codebase to use if not specified in JNLP file.. * @param settings the {@link ParserSettings} to use when parsing - * @throws IOException if an IO exception occurred * @throws ParseException if the JNLP file was invalid */ public JNLPFile(InputStream input, URL codebase, ParserSettings settings) throws ParseException { ---- netx/net/sourceforge/jnlp/SecurityDesc.java 2014-04-02 06:20:59.680124000 -0400 -+++ netx/net/sourceforge/jnlp/SecurityDesc.java 2014-05-15 16:57:19.000000000 -0400 -@@ -90,7 +90,7 @@ - * The HTML permission level corresponding to the given String. If null is given, null comes - * back. If there is no permission level that can be granted in HTML matching the given String, - * null is also returned. -- * @param jnlpString the JNLP permission String -+ * @param htmlString the JNLP permission String - * @return the matching RequestedPermissionLevel - */ - public RequestedPermissionLevel fromHtmlString(final String htmlString) { --- netx/net/sourceforge/jnlp/controlpanel/ControlPanel.java 2014-04-02 06:20:59.683125000 -0400 +++ netx/net/sourceforge/jnlp/controlpanel/ControlPanel.java 2014-05-15 16:57:19.000000000 -0400 @@ -292,12 +292,13 @@ settingsPanel.add(p, panel.toString()); } - final JList settingsList = new JList(panels); + final JList settingsList = new JList<>(panels); settingsList.addListSelectionListener(new ListSelectionListener() { @Override public void valueChanged(ListSelectionEvent e) { - JList list = (JList) e.getSource(); - SettingsPanel panel = (SettingsPanel) list.getSelectedValue(); + @SuppressWarnings("unchecked") + JList list = (JList) e.getSource(); + SettingsPanel panel = list.getSelectedValue(); CardLayout cl = (CardLayout) settingsPanel.getLayout(); cl.show(settingsPanel, panel.toString()); } --- netx/net/sourceforge/jnlp/controlpanel/DebuggingPanel.java 2014-04-02 06:20:59.683125000 -0400 +++ netx/net/sourceforge/jnlp/controlpanel/DebuggingPanel.java 2014-05-15 16:57:19.000000000 -0400 @@ -27,6 +27,7 @@ import java.awt.event.ActionListener; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; + import javax.swing.Box; import javax.swing.JButton; import javax.swing.JCheckBox; @@ -36,6 +37,7 @@ import javax.swing.JTextField; import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentListener; + import net.sourceforge.jnlp.config.Defaults; import net.sourceforge.jnlp.config.DeploymentConfiguration; import net.sourceforge.jnlp.runtime.Translator; @@ -139,7 +141,7 @@ new ComboItem(Translator.R("DPShowJavawsOnly"), DeploymentConfiguration.CONSOLE_SHOW_JAVAWS) }; JLabel consoleLabel = new JLabel(Translator.R("DPJavaConsole")); - JComboBox consoleComboBox = new JComboBox(); + JComboBox consoleComboBox = new JComboBox<>(); consoleComboBox.setActionCommand(DeploymentConfiguration.KEY_CONSOLE_STARTUP_MODE); // The property this comboBox affects. JPanel consolePanel = new JPanel(); @@ -201,7 +203,6 @@ } @Override - @SuppressWarnings("unchecked") public void itemStateChanged(ItemEvent e) { Object o = e.getSource(); @@ -210,7 +211,8 @@ JCheckBox jcb = (JCheckBox) o; config.setProperty(jcb.getActionCommand(), String.valueOf(jcb.isSelected())); } else if (o instanceof JComboBox) { - JComboBox jcb = (JComboBox) o; + @SuppressWarnings("unchecked") + JComboBox jcb = (JComboBox) o; ComboItem c = (ComboItem) e.getItem(); config.setProperty(jcb.getActionCommand(), c.getValue()); } --- netx/net/sourceforge/jnlp/controlpanel/DesktopShortcutPanel.java 2014-04-02 06:20:59.683125000 -0400 +++ netx/net/sourceforge/jnlp/controlpanel/DesktopShortcutPanel.java 2014-05-15 16:57:19.000000000 -0400 @@ -62,7 +62,7 @@ private void addComponents() { GridBagConstraints c = new GridBagConstraints(); JLabel description = new JLabel("" + Translator.R("CPDesktopIntegrationDescription") + "
"); - JComboBox shortcutComboOptions = new JComboBox(); + JComboBox shortcutComboOptions = new JComboBox<>(); ComboItem[] items = { new ComboItem(Translator.R("DSPNeverCreate"), "NEVER"), new ComboItem(Translator.R("DSPAlwaysAllow"), "ALWAYS"), new ComboItem(Translator.R("DSPAskUser"), "ASK_USER"), @@ -94,8 +94,9 @@ add(filler, c); } + @SuppressWarnings("unchecked") public void itemStateChanged(ItemEvent e) { ComboItem c = (ComboItem) e.getItem(); - config.setProperty(((JComboBox) e.getSource()).getActionCommand(), c.getValue()); + config.setProperty(((JComboBox) e.getSource()).getActionCommand(), c.getValue()); } } --- netx/net/sourceforge/jnlp/controlpanel/TemporaryInternetFilesPanel.java 2014-04-02 06:20:59.683125000 -0400 +++ netx/net/sourceforge/jnlp/controlpanel/TemporaryInternetFilesPanel.java 2014-05-15 16:57:19.000000000 -0400 @@ -163,7 +163,7 @@ new ComboItem("7", "7"), new ComboItem("8", "8"), new ComboItem(Translator.R("TIFPMax"), "9"), }; - JComboBox cbCompression = new JComboBox(compressionOptions); + JComboBox cbCompression = new JComboBox<>(compressionOptions); cbCompression.setSelectedIndex(Integer.parseInt(this.config.getProperty(properties[3]))); cbCompression.addItemListener(new ItemListener() { @Override ---- netx/net/sourceforge/jnlp/controlpanel/UnsignedAppletsTrustingListPanel.java 2014-04-02 06:20:59.683125000 -0400 -+++ netx/net/sourceforge/jnlp/controlpanel/UnsignedAppletsTrustingListPanel.java 2014-05-15 16:57:19.000000000 -0400 -@@ -51,6 +51,7 @@ - import java.util.Date; - import java.util.List; - import java.util.regex.Pattern; -+ - import javax.swing.DefaultCellEditor; - import javax.swing.JComboBox; - import javax.swing.JDialog; -@@ -72,6 +73,7 @@ - import javax.swing.table.TableCellRenderer; - import javax.swing.table.TableModel; - import javax.swing.table.TableRowSorter; -+ - import net.sourceforge.jnlp.config.DeploymentConfiguration; - import net.sourceforge.jnlp.runtime.Translator; - import net.sourceforge.jnlp.security.appletextendedsecurity.AppletSecurityLevel; -@@ -95,9 +97,9 @@ - private javax.swing.JButton moveRowDownButton; - private javax.swing.JCheckBox askBeforeActionCheckBox; - private javax.swing.JCheckBox filterRegexesCheckBox; -- private javax.swing.JComboBox mainPolicyComboBox; -- private javax.swing.JComboBox deleteTypeComboBox; -- private javax.swing.JComboBox viewFilter; -+ private javax.swing.JComboBox mainPolicyComboBox; -+ private javax.swing.JComboBox deleteTypeComboBox; -+ private javax.swing.JComboBox viewFilter; - private javax.swing.JLabel globalBehaviourLabel; - private javax.swing.JLabel securityLevelLabel; - private javax.swing.JScrollPane userTableScrollPane; -@@ -175,7 +177,7 @@ - setButtons((!currentModel.back.isReadOnly())); - } - -- public String appletItemsToCaption(List ii, String caption) { -+ public static String appletItemsToCaption(List ii, String caption) { - StringBuilder sb = new StringBuilder(); - for (UnsignedAppletActionEntry i : ii) { - sb.append(appletItemToCaption(i, caption)).append("\n"); -@@ -197,7 +199,7 @@ - - public static void removeSelectedFromTable(JTable table, boolean ask, UnsignedAppletActionTableModel data, Component forDialog) { - int[] originalIndexes = table.getSelectedRows(); -- List newIndexes = new ArrayList(originalIndexes.length); -+ List newIndexes = new ArrayList<>(originalIndexes.length); - for (int i = 0; i < originalIndexes.length; i++) { - //we need to remap values first - int modelRow = table.convertRowIndexToModel(originalIndexes[i]); -@@ -249,7 +251,7 @@ - userTable = createTbale(customModel); - globalTable = createTbale(globalModel); - helpButton = new javax.swing.JButton(); -- mainPolicyComboBox = new JComboBox(new AppletSecurityLevel[]{ -+ mainPolicyComboBox = new JComboBox<>(new AppletSecurityLevel[] { - AppletSecurityLevel.DENY_ALL, - AppletSecurityLevel.DENY_UNSIGNED, - AppletSecurityLevel.ASK_UNSIGNED, -@@ -258,8 +260,8 @@ - mainPolicyComboBox.setSelectedItem(AppletSecurityLevel.getDefault()); - securityLevelLabel = new javax.swing.JLabel(); - globalBehaviourLabel = new javax.swing.JLabel(); -- deleteTypeComboBox = new javax.swing.JComboBox(); -- viewFilter = new javax.swing.JComboBox(); -+ deleteTypeComboBox = new javax.swing.JComboBox<>(); -+ viewFilter = new javax.swing.JComboBox<>(); - deleteButton = new javax.swing.JButton(); - testUrlButton = new javax.swing.JButton(); - addRowButton = new javax.swing.JButton(); -@@ -335,7 +337,7 @@ - - globalBehaviourLabel.setText(Translator.R("APPEXTSECguiPanelGlobalBehaviourCaption")); - -- deleteTypeComboBox.setModel(new javax.swing.DefaultComboBoxModel(new String[]{ -+ deleteTypeComboBox.setModel(new javax.swing.DefaultComboBoxModel<>(new String[] { - Translator.R("APPEXTSECguiPanelDeleteMenuSelected"), - Translator.R("APPEXTSECguiPanelDeleteMenuAllA"), - Translator.R("APPEXTSECguiPanelDeleteMenuAllN"), -@@ -343,7 +345,7 @@ - Translator.R("APPEXTSECguiPanelDeleteMenuAlln"), - Translator.R("APPEXTSECguiPanelDeleteMenuAllAll")})); - -- viewFilter.setModel(new javax.swing.DefaultComboBoxModel(new String[]{ -+ viewFilter.setModel(new javax.swing.DefaultComboBoxModel<>(new String[] { - Translator.R("APPEXTSECguiPanelShowOnlyPermanent"), - Translator.R("APPEXTSECguiPanelShowOnlyTemporal"), - Translator.R("APPEXTSECguiPanelShowAll"), -@@ -681,7 +683,7 @@ - } - } - -- private void helpButtonActionPerformed(java.awt.event.ActionEvent evt) { -+ private static void helpButtonActionPerformed(java.awt.event.ActionEvent evt) { - JDialog d = new ExtendedAppletSecurityHelp(null, false); - ScreenFinder.centerWindowsToCurrentScreen(d); - d.setVisible(true); -@@ -701,7 +703,11 @@ - public TableCellEditor getCellEditor(int row, int column) { - int columnx = convertColumnIndexToModel(column); - if (columnx == 0) { -- return new DefaultCellEditor(new JComboBox(new ExecuteAppletAction[]{ExecuteAppletAction.ALWAYS, ExecuteAppletAction.NEVER, ExecuteAppletAction.YES, ExecuteAppletAction.NO})); -+ return new DefaultCellEditor(new JComboBox<>(new ExecuteAppletAction[] { -+ ExecuteAppletAction.ALWAYS, -+ ExecuteAppletAction.NEVER, -+ ExecuteAppletAction.YES, -+ ExecuteAppletAction.NO })); - } - if (columnx == 2) { - column = convertColumnIndexToModel(column); -@@ -761,7 +767,7 @@ - private void removeByBehaviour(ExecuteAppletAction unsignedAppletAction) { - UnsignedAppletActionEntry[] items = currentModel.back.toArray(); - if (askBeforeActionCheckBox.isSelected()) { -- List toBeDeleted = new ArrayList(); -+ List toBeDeleted = new ArrayList<>(); - for (int i = 0; i < items.length; i++) { - UnsignedAppletActionEntry unsignedAppletActionEntry = items[i]; - if (unsignedAppletActionEntry.getUnsignedAppletAction() == unsignedAppletAction) { --- netx/net/sourceforge/jnlp/security/VariableX509TrustManagerJDK6.java 2014-04-02 06:20:59.679124000 -0400 +++ netx/net/sourceforge/jnlp/security/VariableX509TrustManagerJDK6.java 2014-05-15 16:57:19.000000000 -0400 @@ -1,75 +0,0 @@ -/* VariableX509TrustManagerJDK6.java - Copyright (C) 2012 Red Hat, Inc. - -This file is part of IcedTea. - -IcedTea is free software; you can redistribute it and/or -modify it under the terms of the GNU General Public License as published by -the Free Software Foundation, version 2. - -IcedTea 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 for more details. - -You should have received a copy of the GNU General Public License -along with IcedTea; see the file COPYING. If not, write to -the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA. - -Linking this library statically or dynamically with other modules is -making a combined work based on this library. Thus, the terms and -conditions of the GNU General Public License cover the whole -combination. - -As a special exception, the copyright holders of this library give you -permission to link this library with independent modules to produce an -executable, regardless of the license terms of these independent -modules, and to copy and distribute the resulting executable under -terms of your choice, provided that you also meet, for each linked -independent module, the terms and conditions of the license of that -module. An independent module is a module which is not derived from -or based on this library. If you modify this library, you may extend -this exception to your version of the library, but you are not -obligated to do so. If you do not wish to do so, delete this -exception statement from your version. -*/ - -package net.sourceforge.jnlp.security; - -import java.security.cert.CertificateException; -import java.security.cert.X509Certificate; - -import com.sun.net.ssl.internal.ssl.X509ExtendedTrustManager; - -public class VariableX509TrustManagerJDK6 extends X509ExtendedTrustManager { - - private VariableX509TrustManager vX509TM = VariableX509TrustManager.getInstance(); - - @Override - public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException { - checkClientTrusted(chain, authType, null, null); - } - - @Override - public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException { - vX509TM.checkTrustServer(chain, authType, null /* hostname*/, null /* socket */, null /* engine */); - } - - @Override - public X509Certificate[] getAcceptedIssuers() { - return vX509TM.getAcceptedIssuers(); - } - - @Override - public void checkClientTrusted(X509Certificate[] chain, String authType, String hostname, String algorithm) throws CertificateException { - vX509TM.checkTrustClient(chain, authType, hostname); // We don't need algorithm, we will always use this for TLS only - } - - @Override - public void checkServerTrusted(X509Certificate[] chain, String authType, String hostname, String algorithm) throws CertificateException { - // We don't need to pass algorithm, we will always use this for TLS only - vX509TM.checkTrustServer(chain, authType, hostname, null /* socket */, null /* engine */); - } - -} --- netx/net/sourceforge/jnlp/security/policyeditor/CustomPolicyViewer.java 2014-04-02 06:20:59.679124000 -0400 +++ netx/net/sourceforge/jnlp/security/policyeditor/CustomPolicyViewer.java 2014-05-15 16:57:20.000000000 -0400 @@ -66,14 +66,14 @@ */ public class CustomPolicyViewer extends JFrame { - private final Collection customPermissions = new TreeSet(); + private final Collection customPermissions = new TreeSet<>(); private final JScrollPane scrollPane = new JScrollPane(); - private final DefaultListModel listModel = new DefaultListModel(); - private final JList list = new JList(listModel); + private final DefaultListModel listModel = new DefaultListModel<>(); + private final JList list = new JList<>(listModel); private final JButton addButton = new JButton(), removeButton = new JButton(), closeButton = new JButton(); private final JLabel listLabel = new JLabel(); private final ActionListener addButtonAction, removeButtonAction, closeButtonAction; - private final WeakReference weakThis = new WeakReference(this); + private final WeakReference weakThis = new WeakReference<>(this); /** * @param parent the parent PolicyEditor which created this CustomPolicyViewer --- netx/net/sourceforge/jnlp/security/policyeditor/PermissionActions.java 2014-04-02 06:20:59.679124000 -0400 +++ netx/net/sourceforge/jnlp/security/policyeditor/PermissionActions.java 2014-05-15 16:57:20.000000000 -0400 @@ -88,7 +88,7 @@ } private static Set setFromString(final String string) { - final Set set = new HashSet(); + final Set set = new HashSet<>(); Collections.addAll(set, string.split(",")); return set; } --- netx/net/sourceforge/jnlp/security/policyeditor/PolicyEditor.java 2014-04-02 06:20:59.679124000 -0400 +++ netx/net/sourceforge/jnlp/security/policyeditor/PolicyEditor.java 2014-05-15 16:57:20.000000000 -0400 @@ -165,18 +165,18 @@ private File file; private boolean changesMade = false; private boolean closed = false; - private final Map> codebasePermissionsMap = new HashMap>(); - private final Map> customPermissionsMap = new HashMap>(); - private final Map checkboxMap = new TreeMap(); - private final List groupBoxList = new ArrayList(Group.values().length); + private final Map> codebasePermissionsMap = new HashMap<>(); + private final Map> customPermissionsMap = new HashMap<>(); + private final Map checkboxMap = new TreeMap<>(); + private final List groupBoxList = new ArrayList<>(Group.values().length); private final JScrollPane scrollPane = new JScrollPane(); - private final DefaultListModel listModel = new DefaultListModel(); - private final JList list = new JList(listModel); + private final DefaultListModel listModel = new DefaultListModel<>(); + private final JList list = new JList<>(listModel); private final JButton okButton = new JButton(), closeButton = new JButton(), addCodebaseButton = new JButton(), removeCodebaseButton = new JButton(); private final JFileChooser fileChooser; private CustomPolicyViewer cpViewer = null; - private final WeakReference weakThis = new WeakReference(this); + private final WeakReference weakThis = new WeakReference<>(this); private MD5SumWatcher fileWatcher; private final ActionListener okButtonAction, addCodebaseButtonAction, @@ -196,13 +196,13 @@ return group; } - private void setState(Map map) { - List backup = new LinkedList(); + private void setState(final Map map) { + final List backup = new LinkedList<>(); for (final ActionListener l : this.getActionListeners()) { backup.add(l); this.removeActionListener(l); } - int i = group.getState(map); + final int i = group.getState(map); this.setBackground(getParent().getBackground()); if (i > 0) { this.setSelected(true); @@ -215,7 +215,7 @@ this.setSelected(false); } - for (ActionListener al : backup) { + for (final ActionListener al : backup) { this.addActionListener(al); } } @@ -273,7 +273,7 @@ removeCodebaseButtonAction = new ActionListener() { @Override public void actionPerformed(final ActionEvent e) { - removeCodebase((String) list.getSelectedValue()); + removeCodebase(getSelectedCodebase()); } }; removeCodebaseButton.setText(R("PERemoveCodebase")); @@ -324,7 +324,7 @@ @Override public void run() { String codebase = getSelectedCodebase(); - if (codebase == null){ + if (codebase == null) { return; } if (cpViewer == null) { @@ -343,9 +343,9 @@ setupLayout(); } - + private String getSelectedCodebase() { - String codebase = (String) list.getSelectedValue(); + final String codebase = list.getSelectedValue(); if (codebase == null || codebase.isEmpty()) { return null; } @@ -355,7 +355,7 @@ return codebase; } - private static void preparePolicyEditorWindow(final PolicyEditorWindow w, PolicyEditor e) { + private static void preparePolicyEditorWindow(final PolicyEditorWindow w, final PolicyEditor e) { w.setModalityType(ModalityType.MODELESS); //at least some default w.setPolicyEditor(e); w.setTitle(R("PETitle")); @@ -386,7 +386,6 @@ editor.closeButton.setText(R("ButClose")); editor.closeButton.addActionListener(editor.closeButtonAction); - final Action saveAct = new AbstractAction() { @Override public void actionPerformed(final ActionEvent e) { @@ -437,7 +436,7 @@ private PolicyEditorFrame(final PolicyEditor editor) { super(); - preparePolicyEditorWindow((PolicyEditorWindow)this, editor); + preparePolicyEditorWindow((PolicyEditorWindow) this, editor); } @Override @@ -451,17 +450,17 @@ } @Override - public final void setPolicyEditor(PolicyEditor e) { + public final void setPolicyEditor(final PolicyEditor e) { editor = e; } @Override - public final void setDefaultCloseOperation(int operation) { + public final void setDefaultCloseOperation(final int operation) { super.setDefaultCloseOperation(operation); } @Override - public final void setJMenuBar(JMenuBar menu) { + public final void setJMenuBar(final JMenuBar menu) { super.setJMenuBar(menu); } @@ -471,7 +470,7 @@ } @Override - public void setModalityType(ModalityType type) { + public void setModalityType(final ModalityType type) { //no op for frame } @@ -502,11 +501,11 @@ private PolicyEditorDialog(final PolicyEditor editor) { super(); - preparePolicyEditorWindow((PolicyEditorWindow)this, editor); + preparePolicyEditorWindow((PolicyEditorWindow) this, editor); } @Override - public final void setTitle(String title) { + public final void setTitle(final String title) { super.setTitle(title); } @@ -516,17 +515,17 @@ } @Override - public final void setPolicyEditor(PolicyEditor e) { + public final void setPolicyEditor(final PolicyEditor e) { editor = e; } @Override - public final void setDefaultCloseOperation(int operation) { + public final void setDefaultCloseOperation(final int operation) { super.setDefaultCloseOperation(operation); } @Override - public final void setJMenuBar(JMenuBar menu) { + public final void setJMenuBar(final JMenuBar menu) { super.setJMenuBar(menu); } @@ -536,7 +535,7 @@ } @Override - public void setModalityType(ModalityType type) { + public void setModalityType(final ModalityType type) { super.setModalityType(type); } @@ -641,7 +640,7 @@ final Action act = new AbstractAction() { @Override public void actionPerformed(final ActionEvent e) { - removeCodebase((String) list.getSelectedValue()); + removeCodebase(getSelectedCodebase()); } }; setAccelerator(R("PERemoveCodebaseMnemonic"), ActionEvent.ALT_MASK, act, "RemoveCodebaseAccelerator"); @@ -726,6 +725,7 @@ stopAsking = true; } } catch (final MalformedURLException mfue) { + // ignore - loop/ask again } } addNewCodebase(codebase); @@ -773,7 +773,7 @@ if (permissions != null) { return new HashMap(permissions); } else { - final Map blank = new HashMap(); + final Map blank = new HashMap<>(); for (final PolicyEditorPermissions perm : PolicyEditorPermissions.values()) { blank.put(perm, false); } @@ -800,10 +800,10 @@ */ private void updateCheckboxes(final String codebase) { try { - if (SwingUtilities.isEventDispatchThread()){ - updateCheckboxesImpl(codebase); + if (SwingUtilities.isEventDispatchThread()) { + updateCheckboxesImpl(codebase); } else { - updateCheckboxesInvokeAndWait(codebase); + updateCheckboxesInvokeAndWait(codebase); } } catch (InterruptedException ex) { OutputController.getLogger().log(ex); @@ -811,52 +811,52 @@ OutputController.getLogger().log(ex); } } - + private void updateCheckboxesInvokeAndWait(final String codebase) throws InterruptedException, InvocationTargetException { SwingUtilities.invokeAndWait(new Runnable() { @Override public void run() { - updateCheckboxesImpl(codebase); + updateCheckboxesImpl(codebase); } }); } - - private void updateCheckboxesImpl(String codebase) { - for (final PolicyEditorPermissions perm : PolicyEditorPermissions.values()) { - final JCheckBox box = checkboxMap.get(perm); - for (final ActionListener l : box.getActionListeners()) { - box.removeActionListener(l); - } - initializeMapForCodebase(codebase); - final Map map = codebasePermissionsMap.get(codebase); - final boolean state; - if (map != null) { - final Boolean s = map.get(perm); - if (s != null) { - state = s; - } else { - state = false; - } - } else { - state = false; - } + + private void updateCheckboxesImpl(final String codebase) { + for (final PolicyEditorPermissions perm : PolicyEditorPermissions.values()) { + final JCheckBox box = checkboxMap.get(perm); + for (final ActionListener l : box.getActionListeners()) { + box.removeActionListener(l); + } + initializeMapForCodebase(codebase); + final Map map = codebasePermissionsMap.get(codebase); + final boolean state; + if (map != null) { + final Boolean s = map.get(perm); + if (s != null) { + state = s; + } else { + state = false; + } + } else { + state = false; + } + for (final JCheckBoxWithGroup jg : groupBoxList) { + jg.setState(map); + } + box.setSelected(state); + box.addActionListener(new ActionListener() { + @Override + public void actionPerformed(final ActionEvent e) { + changesMade = true; + map.put(perm, box.isSelected()); for (JCheckBoxWithGroup jg : groupBoxList) { jg.setState(map); } - box.setSelected(state); - box.addActionListener(new ActionListener() { - @Override - public void actionPerformed(final ActionEvent e) { - changesMade = true; - map.put(perm, box.isSelected()); - for (JCheckBoxWithGroup jg : groupBoxList) { - jg.setState(map); - } - } - }); } - } + }); + } + } /** * Set a mnemonic key for a menu item or button @@ -947,8 +947,8 @@ checkboxConstraints.gridy = 1; for (final JCheckBox box : checkboxMap.values()) { - if (PolicyEditorPermissions.Group.anyContains(box, checkboxMap)){ - //do not show boxes in any group + if (PolicyEditorPermissions.Group.anyContains(box, checkboxMap)) { + //do not show boxes in any group continue; } add(box, checkboxConstraints); @@ -960,7 +960,7 @@ } } //add groups - for (PolicyEditorPermissions.Group g : PolicyEditorPermissions.Group.values()) { + for (final PolicyEditorPermissions.Group g : PolicyEditorPermissions.Group.values()) { //no metter what, put group title on new line checkboxConstraints.gridy++; //all groups are in second column @@ -977,14 +977,14 @@ groupPanel.setVisible(!groupPanel.isVisible()); PolicyEditor.this.validate(); Container c = PolicyEditor.this.getParent(); - //find the window and repack it + // find the window and repack it while (!(c instanceof Window)) { if (c == null) { return; } c = c.getParent(); } - Window w = (Window) c; + final Window w = (Window) c; w.pack(); } @@ -993,34 +993,34 @@ groupCh.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { - String codebase = getSelectedCodebase(); + final String codebase = getSelectedCodebase(); if (codebase == null) { return; } - List backup = new LinkedList(); + List backup = new LinkedList<>(); for (final ActionListener l : groupCh.getActionListeners()) { backup.add(l); groupCh.removeActionListener(l); } final Map map = codebasePermissionsMap.get(codebase); - for (PolicyEditorPermissions p : groupCh.getGroup().getPermissions()) { + for (final PolicyEditorPermissions p : groupCh.getGroup().getPermissions()) { map.put(p, groupCh.isSelected()); } changesMade = true; updateCheckboxes(codebase); - for (ActionListener al : backup) { + for (final ActionListener al : backup) { groupCh.addActionListener(al); } } }); add(groupCh, checkboxConstraints); - //place panel with mebers below the title + // place panel with members below the title checkboxConstraints.gridy++; checkboxConstraints.gridx = 2; - //spread group's panel over two columns + // spread group's panel over two columns checkboxConstraints.gridwidth = 2; - checkboxConstraints.fill = checkboxConstraints.BOTH; + checkboxConstraints.fill = GridBagConstraints.BOTH; add(groupPanel, checkboxConstraints); final GridBagConstraints groupCheckboxLabelConstraints = new GridBagConstraints(); groupCheckboxLabelConstraints.anchor = GridBagConstraints.LINE_START; @@ -1028,7 +1028,7 @@ groupCheckboxLabelConstraints.weighty = 0; groupCheckboxLabelConstraints.gridx = 1; groupCheckboxLabelConstraints.gridy = 1; - for (PolicyEditorPermissions p : g.getPermissions()) { + for (final PolicyEditorPermissions p : g.getPermissions()) { groupPanel.add(checkboxMap.get(p), groupCheckboxLabelConstraints); // Two columns of checkboxes groupCheckboxLabelConstraints.gridx++; @@ -1042,7 +1042,6 @@ checkboxConstraints.gridwidth = 1; } - final JLabel codebaseListLabel = new JLabel(R("PECodebaseLabel")); codebaseListLabel.setBorder(new EmptyBorder(2, 2, 2, 2)); final GridBagConstraints listLabelConstraints = new GridBagConstraints(); @@ -1152,7 +1151,7 @@ // If this fails we'll end up handling it a few lines down anyway. } } - OpenFileResult ofr = FileUtils.testFilePermissions(file); + final OpenFileResult ofr = FileUtils.testFilePermissions(file); if (ofr == OpenFileResult.FAILURE || ofr == OpenFileResult.NOT_FILE) { FileUtils.showCouldNotOpenFilepathDialog(weakThis.get(), file.getPath()); return; @@ -1258,7 +1257,7 @@ } if (codebasePermissionsMap.get(codebase) == null) { - final Map map = new HashMap(); + final Map map = new HashMap<>(); for (final PolicyEditorPermissions perm : PolicyEditorPermissions.values()) { map.put(perm, false); } @@ -1266,7 +1265,7 @@ } if (customPermissionsMap.get(codebase) == null) { - final Set set = new HashSet(); + final Set set = new HashSet<>(); customPermissionsMap.put(codebase, set); } @@ -1307,8 +1306,10 @@ } final StringBuilder sb = new StringBuilder(); sb.append(AUTOGENERATED_NOTICE); - sb.append("\n/* Generated by PolicyEditor at ").append(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss") - .format(Calendar.getInstance().getTime())).append(" */").append(System.getProperty("line.separator")); + sb.append("\n/* Generated by PolicyEditor at ") + .append(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(Calendar.getInstance().getTime())) + .append(" */") + .append(System.getProperty("line.separator")); final Set enabledPermissions = new HashSet(); FileLock fileLock; try { @@ -1456,7 +1457,7 @@ */ static Map argsToMap(final String[] args) { final List argsList = Arrays. asList(args); - final Map map = new HashMap(); + final Map map = new HashMap<>(); if (argsList.contains(HELP_FLAG)) { map.put(HELP_FLAG, null); ---- netx/net/sourceforge/jnlp/security/policyeditor/PolicyEditorPermissions.java 2014-04-02 06:20:59.679124000 -0400 -+++ netx/net/sourceforge/jnlp/security/policyeditor/PolicyEditorPermissions.java 2014-05-15 16:57:20.000000000 -0400 -@@ -123,13 +123,14 @@ +--- netx/net/sourceforge/jnlp/security/policyeditor/PolicyEditorPermissions.java 2014-08-14 06:15:47.038832000 -0400 ++++ netx/net/sourceforge/jnlp/security/policyeditor/PolicyEditorPermissions.java 2014-10-21 18:32:55.000000000 -0400 +@@ -128,12 +128,13 @@ private final PolicyEditorPermissions[] permissions; - private final String title; + private final String title; - private Group(String title, PolicyEditorPermissions... permissions) { + + private Group(final String title, final PolicyEditorPermissions... permissions) { this.title = title; this.permissions = permissions; - } - public static boolean anyContains(PolicyEditorPermissions permission) { + public static boolean anyContains(final PolicyEditorPermissions permission) { - for (Group g : Group.values()) { + for (final Group g : Group.values()) { if (g.contains(permission)) { return true; -@@ -138,10 +139,10 @@ +@@ -142,10 +143,10 @@ return false; } - public static boolean anyContains(JCheckBox view, Map checkboxMap) { - for (Map.Entry pairs : checkboxMap.entrySet()){ + public static boolean anyContains(final JCheckBox view, final Map checkboxMap) { + for (final Map.Entry pairs : checkboxMap.entrySet()) { if (pairs.getValue() == view) { - for (Group g : Group.values()) { + for (final Group g : Group.values()) { if (g.contains(pairs.getKey())) { return true; } -@@ -157,10 +158,10 @@ +@@ -161,10 +162,10 @@ * - none is selected */ public int getState (final Map map) { - boolean allTrue=true; - boolean allFalse=true; - for (PolicyEditorPermissions pp: getPermissions()){ - Boolean b = map.get(pp); + boolean allTrue = true; + boolean allFalse = true; + for (final PolicyEditorPermissions pp : getPermissions()) { + final Boolean b = map.get(pp); if (b == null){ return 0; } -@@ -170,23 +171,22 @@ +@@ -174,23 +175,22 @@ allTrue = false; } } - if (allFalse){ + if (allFalse) { return -1; } - if (allTrue){ + if (allTrue) { return 1; } return 0; } - public boolean contains(PolicyEditorPermissions permission) { - for (PolicyEditorPermissions policyEditorPermissions : permissions) { + public boolean contains(final PolicyEditorPermissions permission) { + for (final PolicyEditorPermissions policyEditorPermissions : permissions) { if (policyEditorPermissions == permission) { return true; } } return false; - } public String getTitle() { -@@ -199,7 +199,7 @@ +@@ -203,7 +203,7 @@ } - + private final String name, description; private final PermissionType type; private final PermissionTarget target; --- netx/net/sourceforge/jnlp/security/policyeditor/PolicyEntry.java 2014-04-02 06:20:59.679124000 -0400 +++ netx/net/sourceforge/jnlp/security/policyeditor/PolicyEntry.java 2014-05-15 16:57:20.000000000 -0400 @@ -51,8 +51,8 @@ public class PolicyEntry { private final String codebase; - private final Set permissions = new HashSet(); - private final Set customPermissions = new HashSet(); + private final Set permissions = new HashSet<>(); + private final Set customPermissions = new HashSet<>(); public PolicyEntry(final String codebase, final Collection permissions, final Collection customPermissions) { --- netx/net/sourceforge/jnlp/security/viewer/CertificatePane.java 2014-04-02 06:20:59.679124000 -0400 +++ netx/net/sourceforge/jnlp/security/viewer/CertificatePane.java 2014-05-15 16:57:20.000000000 -0400 @@ -108,7 +108,7 @@ JTabbedPane tabbedPane; private final JTable userTable; private final JTable systemTable; - private JComboBox certificateTypeCombo; + private JComboBox certificateTypeCombo; private KeyStores.Type currentKeyStoreType; private KeyStores.Level currentKeyStoreLevel; @@ -130,7 +130,7 @@ userTable = new JTable(null); systemTable = new JTable(null); - disableForSystem = new ArrayList(); + disableForSystem = new ArrayList<>(); addComponents(); @@ -165,7 +165,7 @@ JLabel certificateTypeLabel = new JLabel(R("CVCertificateType")); - certificateTypeCombo = new JComboBox(certificateTypes); + certificateTypeCombo = new JComboBox<>(certificateTypes); certificateTypeCombo.addActionListener(new CertificateTypeListener()); certificateTypePanel.add(certificateTypeLabel, BorderLayout.LINE_START); @@ -257,7 +257,7 @@ private void readKeyStore() { Enumeration aliases = null; - certs = new ArrayList(); + certs = new ArrayList<>(); try { //Get all of the X509Certificates and put them into an ArrayList @@ -279,7 +279,7 @@ SecurityUtil.getCN(c.getIssuerX500Principal().getName()); } } catch (Exception e) { - //TODO + // TODO handle exception OutputController.getLogger().log(OutputController.Level.ERROR_ALL, e); } } @@ -314,9 +314,7 @@ if (result == JOptionPane.OK_OPTION) { return jpf.getPassword(); } - else { - return null; - } + return null; } /** Allows storing KeyStores.Types in a JComponent */ @@ -342,7 +340,7 @@ @Override @SuppressWarnings("unchecked")//this is just certificateTypeCombo, nothing else public void actionPerformed(ActionEvent e) { - JComboBox source = (JComboBox) e.getSource(); + JComboBox source = (JComboBox) e.getSource(); CertificateType type = (CertificateType) source.getSelectedItem(); currentKeyStoreType = type.getType(); repopulateTables(); --- netx/net/sourceforge/jnlp/util/FileUtils.java 2014-04-02 06:20:59.685125000 -0400 +++ netx/net/sourceforge/jnlp/util/FileUtils.java 2014-05-15 16:57:20.000000000 -0400 @@ -394,7 +394,6 @@ /** * Show a dialog informing the user that the file could not be opened * @param frame a {@link JFrame} to act as parent to this dialog - * @param filePath a {@link String} representing the path to the file we failed to open * @param message a {@link String} giving the specific reason the file could not be opened */ public static void showCouldNotOpenDialog(final Component frame, final String message) { --- netx/net/sourceforge/jnlp/util/JarFile.java 2014-04-02 06:20:59.685125000 -0400 +++ netx/net/sourceforge/jnlp/util/JarFile.java 2014-05-15 16:57:20.000000000 -0400 @@ -43,94 +43,82 @@ import java.io.InputStream; import net.sourceforge.jnlp.runtime.JNLPRuntime; -//in jdk6 java.util.jar.JarFile is not Closeable - fixing -//overwritening class can add duplicate occurence of interface so this should be perfectly safe -public class JarFile extends java.util.jar.JarFile implements Closeable{ +/** + * A wrapper over {@link java.util.jar.JarFile} that verifies zip headers to + * protect against GIFAR attacks. + * + * @see Gifar + */ +public class JarFile extends java.util.jar.JarFile implements Closeable { public JarFile(String name) throws IOException { - super(name); - verifyZipHeader(new File(name)); + super(name); + verifyZipHeader(new File(name)); } - /** - */ public JarFile(String name, boolean verify) throws IOException { super(name, verify); verifyZipHeader(new File(name)); } - /** - */ public JarFile(File file) throws IOException { super(file); verifyZipHeader(file); } - /** - */ public JarFile(File file, boolean verify) throws IOException { super(file, verify); verifyZipHeader(file); } - /* - */ public JarFile(File file, boolean verify, int mode) throws IOException { super(file, verify, mode); - verifyZipHeader(file); + verifyZipHeader(file); } - - - - + /** - * According to specification - - * http://www.pkware.com/documents/casestudies/APPNOTE.TXT or just google - * around zip header all entries in zip-compressed must start with well - * known "PK" which is defined as hexa x50 x4b x03 x04, which in decimal are - * 80 75 3 4. - * + * The ZIP specification requires that the zip header for all entries in a + * zip-compressed archive must start with a well known "PK" which is + * defined as hex x50 x4b x03 x04. + *

* Note - this is not file-header, it is item-header. - * - * Actually most of compressing formats have some n-bytes header se eg: + *

+ * Actually most of compressing formats have some n-bytes headers. Eg: * http://www.gzip.org/zlib/rfc-gzip.html#header-trailer for ID1 and ID2 so * in case that some differently compressed jars will come to play, this is - * the palce where to fix it. + * the place where to fix it. * + * @see ZIP Specification */ - private static final byte[] ZIP_LOCAL_FILE_HEADER_SIGNATURE = new byte[]{80, 75, 3, 4}; + private static final byte[] ZIP_ENTRY_HEADER_SIGNATURE = new byte[] {0x50, 0x4b, 0x03, 0x04}; /** - * This method is checking first four bytes of jar-file against - * ZIP_LOCAL_FILE_HEADER_SIGNATURE - * + * Verify the header for the zip entry. + *

* Although zip specification allows to skip all corrupted entries, it is - * not safe for jars. If first four bytes of file are not zip - * ZIP_LOCAL_FILE_HEADER_SIGNATURE then exception is thrown - * - * As noted, ZIP_LOCAL_FILE_HEADER_SIGNATURE is not ile-header, but is item-header. - * Possible attack is using the fact that entries without header are considered - * corrupted and so can be ignoered. However, for other they can have some meaning. - * - * So for our purposes we must insists on first record to be valid. - * - * @param file - * @throws IOException - * @throws InvalidJarHeaderException + * not safe for jars since it allows a different format to fake itself as + * a Jar. */ - public static void verifyZipHeader(File file) throws IOException { + private void verifyZipHeader(File file) throws IOException { if (!JNLPRuntime.isIgnoreHeaders()) { InputStream s = new FileInputStream(file); + + /* + * Theoretically, a valid ZIP file can begin with anything. We + * ensure it begins with a valid entry header to confirm it only + * contains zip entries. + */ + try { - byte[] buffer = new byte[ZIP_LOCAL_FILE_HEADER_SIGNATURE.length]; + byte[] buffer = new byte[ZIP_ENTRY_HEADER_SIGNATURE.length]; /* * for case that new byte[] will accidently initialize same * sequence as zip header and during the read the buffer will not be filled - */ + */ for (int i = 0; i < buffer.length; i++) { buffer[i] = 0; } - int toRead = ZIP_LOCAL_FILE_HEADER_SIGNATURE.length; + int toRead = ZIP_ENTRY_HEADER_SIGNATURE.length; int readSoFar = 0; int n = 0; /* @@ -144,7 +132,7 @@ } } for (int i = 0; i < buffer.length; i++) { - if (buffer[i] != ZIP_LOCAL_FILE_HEADER_SIGNATURE[i]) { + if (buffer[i] != ZIP_ENTRY_HEADER_SIGNATURE[i]) { throw new InvalidJarHeaderException("Jar " + file.getName() + " do not heave valid header. You can skip this check by -Xignoreheaders"); } } ---- netx/net/sourceforge/jnlp/util/logging/ConsoleOutputPane.java 2014-04-02 06:20:59.684125000 -0400 -+++ netx/net/sourceforge/jnlp/util/logging/ConsoleOutputPane.java 2014-05-15 16:57:20.000000000 -0400 -@@ -15,6 +15,7 @@ +--- netx/net/sourceforge/jnlp/util/logging/ConsoleOutputPane.java 2014-08-14 06:15:47.055833000 -0400 ++++ netx/net/sourceforge/jnlp/util/logging/ConsoleOutputPane.java 2014-10-21 19:02:25.000000000 -0400 +@@ -17,6 +17,7 @@ import java.util.Observer; import java.util.concurrent.atomic.AtomicBoolean; import java.util.regex.Pattern; + import javax.swing.ButtonGroup; - import javax.swing.JFrame; - import javax.swing.JMenuItem; -@@ -26,6 +27,7 @@ + import javax.swing.DefaultComboBoxModel; + import javax.swing.GroupLayout; +@@ -41,6 +42,7 @@ import javax.swing.text.Document; import javax.swing.text.PlainDocument; import javax.swing.text.html.HTMLDocument; + import net.sourceforge.jnlp.runtime.JNLPRuntime; import net.sourceforge.jnlp.runtime.Translator; import net.sourceforge.jnlp.util.logging.headers.ObservableMessagesProvider; -@@ -247,7 +249,6 @@ +@@ -104,7 +106,7 @@ + showPreInit = new JCheckBox(); + sortByLabel = new JLabel(); + regExLabel = new JCheckBox(); +- sortBy = new JComboBox(); ++ sortBy = new JComboBox<>(); + searchLabel = new JLabel(); + autorefresh = new JCheckBox(); + refresh = new JButton(); +@@ -313,7 +315,6 @@ statistics.setText(model.createStatisticHint()); } - @SuppressWarnings("unchecked") private void initComponents() { - - jPanel2 = new javax.swing.JPanel(); -@@ -267,7 +268,7 @@ - showPreInit = new javax.swing.JCheckBox(); - sortByLabel = new javax.swing.JLabel(); - regExLabel = new javax.swing.JCheckBox(); -- sortBy = new javax.swing.JComboBox(); -+ sortBy = new javax.swing.JComboBox<>(); - searchLabel = new javax.swing.JLabel(); - autorefresh = new javax.swing.JCheckBox(); - refresh = new javax.swing.JButton(); -@@ -362,7 +363,7 @@ + //this is crucial, otherwie PlainDocument implementatin is repalcing all \n by space + ((PlainDocument)regExFilter.getDocument()).getDocumentProperties().remove("filterNewlines"); +@@ -380,7 +381,7 @@ regExLabel.setText(Translator.R("COPregex") + ":"); regExLabel.addActionListener(getDefaultActionSingleton()); -- sortBy.setModel(new javax.swing.DefaultComboBoxModel(new String[]{ -+ sortBy.setModel(new javax.swing.DefaultComboBoxModel<>(new String[] { +- sortBy.setModel(new DefaultComboBoxModel(new String[] { ++ sortBy.setModel(new DefaultComboBoxModel<>(new String[] { Translator.R("COPAsArrived"), Translator.R("COPuser"), Translator.R("COPorigin"), -@@ -943,7 +944,7 @@ - private javax.swing.JCheckBox showThread2; - private javax.swing.JCheckBox showUser; - private javax.swing.JCheckBox sortCopyAll; -- private javax.swing.JComboBox sortBy; -+ private javax.swing.JComboBox sortBy; - private javax.swing.JLabel sortByLabel; - private javax.swing.JLabel statistics; - private javax.swing.JCheckBox wordWrap; +@@ -961,7 +962,7 @@ + private final JCheckBox showThread2; + private final JCheckBox showUser; + private final JCheckBox sortCopyAll; +- private final JComboBox sortBy; ++ private final JComboBox sortBy; + private final JLabel sortByLabel; + private final JLabel statistics; + private final JCheckBox wordWrap; --- netx/net/sourceforge/nanoxml/XMLElement.java 2014-04-02 06:20:59.669124000 -0400 +++ netx/net/sourceforge/nanoxml/XMLElement.java 2014-05-15 16:57:20.000000000 -0400 @@ -39,7 +39,7 @@ /** * XMLElement is a representation of an XML object. The object is able to parse * XML code. - *

+ *
*
Parsing XML Data
*
* You can parse XML data using the following code: @@ -83,7 +83,6 @@ * {@link #createAnotherElement() createAnotherElement} * which has to return a new copy of the receiver. *
- *

* * @see net.sourceforge.nanoxml.XMLParseException * @@ -178,7 +177,8 @@ private boolean ignoreWhitespace; /** - * Character read too much.
+ * Character read too much. + *

* This character provides push-back functionality to the input reader * without having to use a PushbackReader. * If there is no such character, this field is {@code '\0'}. @@ -210,7 +210,8 @@ private int parserLineNr; /** - * Creates and initializes a new XML element.
+ * Creates and initializes a new XML element. + *

* Calling the construction is equivalent to: *

  • {@code new XMLElement(new Hashtable(), false, true)}
* @@ -400,7 +401,8 @@ } /** - * Returns an attribute of the element.
+ * Returns an attribute of the element. + *

* If the attribute doesn't exist, {@code null} is returned. * * @param name The name of the attribute. @@ -535,7 +537,7 @@ * The new name. * *

Preconditions:
- *
    + *
    • {@code name != null}
    • *
    • {@code name} is a valid XML identifier
    • *
*/ @@ -597,7 +599,8 @@ } /** - * This method scans an identifier from the current reader.
+ * This method scans an identifier from the current reader. + *

* The scanned whitespace is appended to {@code result}. * * @return the next character following the whitespace. @@ -625,7 +628,8 @@ } /** - * This method scans a delimited string from the current reader.
+ * This method scans a delimited string from the current reader. + *

* The scanned string without delimiters is appended to {@code string}. * *

Preconditions:
@@ -653,8 +657,10 @@ /** * Scans a {@code #PCDATA} element. CDATA sections and entities are - * resolved.
- * The next < char is skipped.
+ * resolved. + *

+ * The next < char is skipped. + *

* The scanned data is appended to {@code data}. * *

Preconditions:
@@ -831,7 +837,8 @@ } /** - * Scans the data for literal text.
+ * Scans the data for literal text. + *

* Scanning stops when a character does not match or after the complete * text has been checked, whichever comes first. * @@ -985,7 +992,8 @@ } /** - * Resolves an entity. The name of the entity is read from the reader.
+ * Resolves an entity. The name of the entity is read from the reader. + *

* The value of the entity is appended to {@code buf}. * * @param buf Where to put the entity value. --- netx/net/sourceforge/nanoxml/XMLParseException.java 2014-04-02 06:20:59.669124000 -0400 +++ netx/net/sourceforge/nanoxml/XMLParseException.java 2014-05-15 16:57:20.000000000 -0400 @@ -32,7 +32,8 @@ * An XMLParseException is thrown when an error occures while parsing an XML * string. *

- * $Revision: 1.1 $
+ * $Revision: 1.1 $

+ *

* $Date: 2002/08/03 04:05:32 $

* * @see net.sourceforge.nanoxml.XMLElement --- plugin/icedteanp/IcedTeaNPPlugin.cc 2014-04-02 06:20:59.687125000 -0400 +++ plugin/icedteanp/IcedTeaNPPlugin.cc 2014-05-15 16:57:20.000000000 -0400 @@ -64,16 +64,16 @@ #define PLUGIN_FULL_NAME PLUGIN_NAME " (using " PLUGIN_VERSION ")" #define PLUGIN_DESC "The " PLUGIN_NAME " executes Java applets." -#ifdef HAVE_JAVA7 - #define JPI_VERSION "1.7.0_" JDK_UPDATE_VERSION - #define PLUGIN_APPLET_MIME_DESC7 \ - "application/x-java-applet;version=1.7:class,jar:IcedTea;" - #define PLUGIN_BEAN_MIME_DESC7 \ - "application/x-java-bean;version=1.7:class,jar:IcedTea;" +#ifdef HAVE_JAVA8 + #define JPI_VERSION "1.8.0_" JDK_UPDATE_VERSION + #define PLUGIN_APPLET_MIME_DESC \ + "application/x-java-applet;version=1.8:class,jar:IcedTea;" + #define PLUGIN_BEAN_MIME_DESC \ + "application/x-java-bean;version=1.8:class,jar:IcedTea;" #else - #define JPI_VERSION "1.6.0_" JDK_UPDATE_VERSION - #define PLUGIN_APPLET_MIME_DESC7 - #define PLUGIN_BEAN_MIME_DESC7 + #define JPI_VERSION "1.7.0_" JDK_UPDATE_VERSION + #define PLUGIN_APPLET_MIME_DESC + #define PLUGIN_BEAN_MIME_DESC #endif #define PLUGIN_MIME_DESC \ @@ -93,7 +93,8 @@ "application/x-java-applet;version=1.4.2:class,jar:IcedTea;" \ "application/x-java-applet;version=1.5:class,jar:IcedTea;" \ "application/x-java-applet;version=1.6:class,jar:IcedTea;" \ - PLUGIN_APPLET_MIME_DESC7 \ + "application/x-java-applet;version=1.7:class,jar:IcedTea;" \ + PLUGIN_APPLET_MIME_DESC \ "application/x-java-applet;jpi-version=" JPI_VERSION ":class,jar:IcedTea;" \ "application/x-java-bean:class,jar:IcedTea;" \ "application/x-java-bean;version=1.1:class,jar:IcedTea;" \ @@ -110,7 +111,8 @@ "application/x-java-bean;version=1.4.2:class,jar:IcedTea;" \ "application/x-java-bean;version=1.5:class,jar:IcedTea;" \ "application/x-java-bean;version=1.6:class,jar:IcedTea;" \ - PLUGIN_BEAN_MIME_DESC7 \ + "application/x-java-bean;version=1.7:class,jar:IcedTea;" \ + PLUGIN_BEAN_MIME_DESC \ "application/x-java-bean;jpi-version=" JPI_VERSION ":class,jar:IcedTea;" \ "application/x-java-vm-npruntime::IcedTea;" ---- tests/test-extensions/net/sourceforge/jnlp/tools/CodeSignerCreator.java 2014-04-02 06:20:59.637124000 -0400 -+++ tests/test-extensions/net/sourceforge/jnlp/tools/CodeSignerCreator.java 2014-05-15 16:57:20.000000000 -0400 -@@ -25,17 +25,24 @@ - - package net.sourceforge.jnlp.tools; - -+import java.lang.reflect.Constructor; -+import java.lang.reflect.InvocationTargetException; -+import java.lang.reflect.Method; - import java.security.CodeSigner; -+import java.security.InvalidKeyException; -+import java.security.NoSuchAlgorithmException; -+import java.security.NoSuchProviderException; - import java.security.PrivateKey; -+import java.security.SignatureException; - import java.security.Timestamp; - import java.security.cert.CertPath; -+import java.security.cert.CertificateException; - import java.security.cert.CertificateFactory; - import java.security.cert.X509Certificate; - import java.util.ArrayList; - import java.util.Date; - - import sun.security.x509.AlgorithmId; --import sun.security.x509.CertAndKeyGen; - import sun.security.x509.CertificateAlgorithmId; - import sun.security.x509.CertificateIssuerName; - import sun.security.x509.CertificateSerialNumber; -@@ -72,13 +79,10 @@ - // KeyTool#doGenKeyPair - X500Name x500Name = new X500Name(dname); - -- CertAndKeyGen keypair = new CertAndKeyGen(keyAlgName, sigAlgName); -+ KeyPair keyPair = new KeyPair(keyAlgName, sigAlgName, keysize); -+ PrivateKey privKey = keyPair.getPrivateKey(); - -- keypair.generate(keysize); -- PrivateKey privKey = keypair.getPrivateKey(); -- -- X509Certificate oldCert = keypair.getSelfCertificate(x500Name, -- notBefore, validity * 24L * 60L * 60L); -+ X509Certificate oldCert = keyPair.getSelfCertificate(x500Name, notBefore, validity); - - // KeyTool#doSelfCert - byte[] encoded = oldCert.getEncoded(); -@@ -142,4 +146,70 @@ - Timestamp certTimestamp = new Timestamp(jarEntryCert.getNotBefore(), certPath); - return new CodeSigner(certPath, certTimestamp); - } -+ -+ /** -+ * A wrapper over JDK-internal CertAndKeyGen Class. -+ *

-+ * This is an internal class whose package changed between OpenJDK 7 and 8. -+ * Use reflection to access the right thing. -+ */ -+ public static class KeyPair { -+ -+ private /* CertAndKeyGen */ Object keyPair; -+ -+ public KeyPair(String keyAlgName, String sigAlgName, int keySize) throws NoSuchAlgorithmException, InvalidKeyException { -+ try { -+ // keyPair = new CertAndKeyGen(keyAlgName, sigAlgName); -+ Class certAndKeyGenClass = Class.forName(getCertAndKeyGenClass()); -+ Constructor constructor = certAndKeyGenClass.getDeclaredConstructor(String.class, String.class); -+ keyPair = constructor.newInstance(keyAlgName, sigAlgName); -+ -+ // keyPair.generate(keySize); -+ Method generate = certAndKeyGenClass.getMethod("generate", int.class); -+ generate.invoke(keyPair, keySize); -+ } catch (ClassNotFoundException | NoSuchMethodException | SecurityException | InstantiationException | -+ IllegalAccessException | IllegalArgumentException | InvocationTargetException certAndKeyGenClassError) { -+ throw new AssertionError("Unable to use CertAndKeyGen class", certAndKeyGenClassError); -+ } -+ } -+ -+ public PrivateKey getPrivateKey() { -+ try { -+ // return keyPair.getPrivateKey(); -+ Class klass = keyPair.getClass(); -+ Method method = klass.getMethod("getPrivateKey"); -+ return (PrivateKey) method.invoke(keyPair); -+ } catch (NoSuchMethodException | IllegalAccessException | IllegalArgumentException | InvocationTargetException error) { -+ throw new AssertionError(error); -+ } -+ } -+ -+ public X509Certificate getSelfCertificate(X500Name name, Date notBefore, long validityInDays) -+ throws InvalidKeyException, CertificateException, SignatureException, -+ NoSuchAlgorithmException, NoSuchProviderException { -+ try { -+ // return keyPair.getSelfCertificate(name, notBefore, validityInDays * 24L * 60L * 60L); -+ Class klass = keyPair.getClass(); -+ Method method = klass.getMethod("getSelfCertificate", X500Name.class, Date.class, long.class); -+ return (X509Certificate) method.invoke(keyPair, name, notBefore, validityInDays * 24L * 60L * 60L); -+ } catch (InvocationTargetException ite) { -+ throw new RuntimeException(ite.getCause()); -+ } catch (NoSuchMethodException | IllegalAccessException | IllegalArgumentException error) { -+ throw new AssertionError(error); -+ } -+ } -+ -+ private String getCertAndKeyGenClass() { -+ String javaVersion = System.getProperty("java.version"); -+ String className = null; -+ if (javaVersion.startsWith("1.7")) { -+ className = "sun.security.x509.CertAndKeyGen"; -+ } else if (javaVersion.startsWith("1.8")) { -+ className = "sun.security.tools.keytool.CertAndKeyGen"; -+ } else { -+ throw new AssertionError("Unrecognized Java Version"); -+ } -+ return className; -+ } -+ } - } Index: head/java/icedtea-web/files/patch-Makefile.in =================================================================== --- head/java/icedtea-web/files/patch-Makefile.in (revision 378488) +++ head/java/icedtea-web/files/patch-Makefile.in (revision 378489) @@ -1,179 +1,179 @@ ---- Makefile.in.orig 2014-04-02 06:21:18.672343000 -0400 -+++ Makefile.in 2014-04-09 20:12:29.000000000 -0400 +--- Makefile.in.orig 2014-08-15 03:08:34.349127000 -0400 ++++ Makefile.in 2014-10-21 18:14:35.000000000 -0400 @@ -309,9 +309,9 @@ #end of exported autoconf copies # binary names -javaws := $(shell echo javaws | sed '@program_transform_name@') +javaws := $(shell echo itweb-javaws | sed '@program_transform_name@') itweb_settings := $(shell echo itweb-settings | sed '@program_transform_name@') -policyeditor := $(shell echo policyeditor | sed '@program_transform_name@') +policyeditor := $(shell echo itweb-policyeditor | sed '@program_transform_name@') # the launcher needs to know $(bindir) and $(datadir) which can be different at # make-time from configure-time -@@ -851,34 +851,36 @@ +@@ -852,34 +852,36 @@ @ENABLE_PLUGIN_TRUE@ ${INSTALL_DATA} $(abs_top_builddir)/liveconnect/lib/classes.jar $(DESTDIR)$(datadir)/$(PACKAGE_NAME)/plugin.jar ${INSTALL_DATA} $(NETX_DIR)/lib/classes.jar $(DESTDIR)$(datadir)/$(PACKAGE_NAME)/netx.jar ${INSTALL_DATA} $(NETX_SRCDIR)/javaws_splash.png $(DESTDIR)$(datadir)/$(PACKAGE_NAME)/javaws_splash.png - ${INSTALL_PROGRAM} launcher.build/$(javaws) $(DESTDIR)$(bindir) - ${INSTALL_PROGRAM} launcher.build/$(itweb_settings) $(DESTDIR)$(bindir) - ${INSTALL_PROGRAM} launcher.build/$(policyeditor) $(DESTDIR)$(bindir) + ${INSTALL_SCRIPT} launcher.build/$(javaws) $(DESTDIR)$(bindir) + ${INSTALL_SCRIPT} launcher.build/$(itweb_settings) $(DESTDIR)$(bindir) + ${INSTALL_SCRIPT} launcher.build/$(policyeditor) $(DESTDIR)$(bindir) install-data-local: ${mkinstalldirs} -d $(DESTDIR)$(mandir)/man1 - ${INSTALL_DATA} $(NETX_SRCDIR)/javaws.1 $(DESTDIR)$(mandir)/man1 + ${INSTALL_DATA} $(NETX_SRCDIR)/javaws.1 $(DESTDIR)$(mandir)/man1/itweb-javaws.1 ${INSTALL_DATA} $(NETX_SRCDIR)/itweb-settings.1 $(DESTDIR)$(mandir)/man1 - ${INSTALL_DATA} $(NETX_SRCDIR)/policyeditor.1 $(DESTDIR)$(mandir)/man1 + ${INSTALL_DATA} $(NETX_SRCDIR)/policyeditor.1 $(DESTDIR)$(mandir)/man1/itweb-policyeditor.1 @ENABLE_DOCS_TRUE@ ${mkinstalldirs} $(DESTDIR)$(htmldir) @ENABLE_DOCS_TRUE@ (cd ${abs_top_builddir}/docs/netx; \ @ENABLE_DOCS_TRUE@ for files in $$(find . -type f); \ @ENABLE_DOCS_TRUE@ do \ -@ENABLE_DOCS_TRUE@ ${INSTALL_DATA} -D $${files} $(DESTDIR)$(htmldir)/netx/$${files}; \ +@ENABLE_DOCS_TRUE@ mkdir -p `dirname $(DESTDIR)$(htmldir)/netx/$${files}`; \ +@ENABLE_DOCS_TRUE@ ${INSTALL_DATA} $${files} $(DESTDIR)$(htmldir)/netx/$${files}; \ @ENABLE_DOCS_TRUE@ done) @ENABLE_DOCS_TRUE@@ENABLE_PLUGIN_TRUE@ (cd ${abs_top_builddir}/docs/plugin; \ @ENABLE_DOCS_TRUE@@ENABLE_PLUGIN_TRUE@ for files in $$(find . -type f); \ @ENABLE_DOCS_TRUE@@ENABLE_PLUGIN_TRUE@ do \ -@ENABLE_DOCS_TRUE@@ENABLE_PLUGIN_TRUE@ ${INSTALL_DATA} -D $${files} $(DESTDIR)$(htmldir)/plugin/$${files}; \ +@ENABLE_DOCS_TRUE@@ENABLE_PLUGIN_TRUE@ mkdir -p `dirname $(DESTDIR)$(htmldir)/plugin/$${files}`; \ +@ENABLE_DOCS_TRUE@@ENABLE_PLUGIN_TRUE@ ${INSTALL_DATA} $${files} $(DESTDIR)$(htmldir)/plugin/$${files}; \ @ENABLE_DOCS_TRUE@@ENABLE_PLUGIN_TRUE@ done) uninstall-local: rm -f $(DESTDIR)$(libdir)/$(BUILT_PLUGIN_LIBRARY) rm -f $(DESTDIR)$(datadir)/$(PACKAGE_NAME)/plugin.jar rm -f $(DESTDIR)$(datadir)/$(PACKAGE_NAME)/netx.jar - rm -f $(DESTDIR)$(mandir)/man1/javaws.1 + rm -f $(DESTDIR)$(mandir)/man1/itweb-javaws.1 rm -f $(DESTDIR)$(mandir)/man1/itweb-settings.1 - rm -f $(DESTDIR)$(mandir)/man1/policyeditor.1 + rm -f $(DESTDIR)$(mandir)/man1/itweb-policyeditor.1 rm -f $(DESTDIR)$(bindir)/$(javaws) rm -f $(DESTDIR)$(bindir)/$(itweb_settings) rm -f $(DESTDIR)$(bindir)/$(policyeditor) -@@ -1041,10 +1043,10 @@ +@@ -1042,10 +1044,10 @@ find $(NETX_SRCDIR) -name '*.java' | sort > $@ ; \ for src in $(NETX_EXCLUDE_SRCS) ; \ do \ - sed -i "/$${src}/ d" $@ ; \ + sed -i -e "/$${src}/ d" $@ ; \ done -@WITH_RHINO_FALSE@ sed -i '/RhinoBasedPacEvaluator/ d' $@ -@HAVE_JAVA7_FALSE@ sed -i '/VariableX509TrustManagerJDK7/ d' $@ +@WITH_RHINO_FALSE@ sed -i -e '/RhinoBasedPacEvaluator/ d' $@ +@HAVE_JAVA7_FALSE@ sed -i -e '/VariableX509TrustManagerJDK7/ d' $@ stamps/netx-html-gen.stamp: (cd $$NETX_SRCDIR/..; \ -@@ -1058,7 +1060,7 @@ +@@ -1059,7 +1061,7 @@ mkdir -p stamps touch $@ -stamps/netx.stamp: netx-source-files.txt stamps/bootstrap-directory.stamp stamps/netx-html-gen.stamp +stamps/netx.stamp: netx-source-files.txt stamps/bootstrap-directory.stamp mkdir -p $(NETX_DIR) $(BOOT_DIR)/bin/javac $(IT_JAVACFLAGS) \ -d $(NETX_DIR) \ -@@ -1069,7 +1071,8 @@ +@@ -1070,7 +1072,8 @@ (cd $(NETX_RESOURCE_DIR); \ for files in $$(find . -type f); \ do \ - ${INSTALL_DATA} -D $${files} \ + mkdir -p `dirname $(NETX_DIR)/net/sourceforge/jnlp/resources/$${files}`; \ + ${INSTALL_DATA} $${files} \ $(NETX_DIR)/net/sourceforge/jnlp/resources/$${files}; \ done) cp -a $(NETX_SRCDIR)/net/sourceforge/jnlp/runtime/pac-funcs.js \ -@@ -1099,7 +1102,7 @@ +@@ -1100,7 +1103,7 @@ rm -f $(NETX_RESOURCE_DIR)/{NEWS,AUTHORS,COPYING,ChangeLog}.html clean-desktop-files: - rm -f javaws.desktop + rm -f itweb-javaws.desktop rm -f itweb-settings.desktop launcher.build/$(javaws): launcher/launchers.in -@@ -1132,7 +1135,7 @@ +@@ -1133,7 +1136,7 @@ fi javaws.desktop: javaws.desktop.in - sed "s#PATH_TO_JAVAWS#$(bindir)/$(javaws)#" < $(srcdir)/javaws.desktop.in > javaws.desktop + sed "s#PATH_TO_JAVAWS#$(bindir)/$(javaws)#" < $(srcdir)/javaws.desktop.in > itweb-javaws.desktop itweb-settings.desktop: $(srcdir)/itweb-settings.desktop.in sed "s#PATH_TO_ITWEB_SETTINGS#$(bindir)/$(itweb_settings)#" \ -@@ -1140,7 +1143,7 @@ +@@ -1141,7 +1144,7 @@ policyeditor.desktop: $(srcdir)/policyeditor.desktop.in sed 's#PATH_TO_POLICYEDITOR#$(bindir)/$(policyeditor)#' \ - < $(srcdir)/policyeditor.desktop.in > policyeditor.desktop + < $(srcdir)/policyeditor.desktop.in > itweb-policyeditor.desktop # documentation -@@ -1251,7 +1254,7 @@ +@@ -1252,7 +1255,7 @@ notSrcFiles=`find . -mindepth 1 -type f \! -name "*.java" | sed "s/.\/*//"` ; \ $(BOOT_DIR)/bin/javac -cp $(NETX_DIR)/lib/classes.jar:$(abs_top_builddir)/liveconnect -d "$(REPRODUCERS_BUILD_DIR)/$$dir/" $$srcFiles ; \ if [ -n "$$notSrcFiles" ] ; then \ - cp -R --parents $$notSrcFiles "$(REPRODUCERS_BUILD_DIR)/$$dir/" ; \ + tar -c -f - "$$notSrcFiles" | tar -x -f - -C "$(REPRODUCERS_BUILD_DIR)/$$dir/" ; \ fi ; \ cd "$(REPRODUCERS_BUILD_DIR)/$$dir/" ; \ if [ -f $(META_MANIFEST) ]; \ -@@ -1306,7 +1309,7 @@ +@@ -1307,7 +1310,7 @@ path="`dirname $$slashed_dir`" ; \ file="`basename $$slashed_dir`.jar" ; \ echo "copying $$dir.jar to $$path as $$file" ; \ - mkdir --parents $$path ; \ + mkdir -p $$path ; \ cp $$dir".jar" "$$path"/"$$file" ; \ fi ; \ done ; \ -@@ -1434,7 +1437,7 @@ +@@ -1435,7 +1438,7 @@ whiteListed=`cat $(REPRODUCERS_CLASS_WHITELIST)`; \ cd $(TEST_EXTENSIONS_TESTS_DIR) ; \ class_names= ; \ - for test in `find -type f` ; do \ + for test in `find . -type f` ; do \ class_name=`echo $$test | sed -e 's|\.class$$||' -e 's|^\./||'` ; \ class_name=`echo $$class_name | sed -e 's|/|.|g' ` ; \ INLCUDE="NO" ; \ -@@ -1624,7 +1627,7 @@ +@@ -1625,7 +1628,7 @@ $(UNIT_CLASS_NAMES): cd $(NETX_UNIT_TEST_DIR) ; \ class_names= ; \ - for test in `find -type f` ; do \ + for test in `find . -type f` ; do \ class_name=`echo $$test | sed -e 's|\.class$$||' -e 's|^\./||'` ; \ class_name=`echo $$class_name | sed -e 's|/|.|g' ` ; \ class_names="$$class_names $$class_name" ; \ -@@ -1635,10 +1638,7 @@ +@@ -1636,10 +1639,7 @@ $(TESTS_DIR)/$(REPORT_STYLES_DIRNAME) $(UNIT_CLASS_NAMES) filename=" " ; \ cd $(NETX_UNIT_TEST_SRCDIR) ; \ - for file in `find . -type f \! -iname "*.java"`; do\ - filename=`echo $$file `; \ - cp --parents $$filename $(NETX_UNIT_TEST_DIR) ; \ - done ; \ + tar -c -f - `find . -type f \! -iname "*.java"` | tar -x -f - -C $(NETX_UNIT_TEST_DIR) ; \ cd $(NETX_UNIT_TEST_DIR) ; \ class_names=`cat $(UNIT_CLASS_NAMES)` ; \ - CLASSPATH=$(NETX_DIR)/lib/classes.jar:$(abs_top_builddir)/liveconnect/lib/classes.jar:$(JUNIT_JAR):$(JUNIT_RUNNER_JAR):$(TEST_EXTENSIONS_DIR):.:$(TEST_EXTENSIONS_SRCDIR):$(TAGSOUP_JAR) \ -@@ -2128,9 +2128,7 @@ + CLASSPATH=$(NETX_DIR)/lib/classes.jar:$(abs_top_builddir)/liveconnect/lib/classes.jar:$(JUNIT_JAR):$(JUNIT_RUNNER_JAR):$(TEST_EXTENSIONS_DIR):.:$(TEST_EXTENSIONS_SRCDIR):$(TAGSOUP_JAR) ; \ +@@ -2131,9 +2131,7 @@ @ENABLE_PLUGIN_TRUE@ $(PLUGIN_TEST_SRCS) ; @ENABLE_PLUGIN_TRUE@ $(BOOT_DIR)/bin/jar cf plugin/tests/LiveConnect/PluginTest.jar \ @ENABLE_PLUGIN_TRUE@ plugin/tests/LiveConnect/*.class ; -@ENABLE_PLUGIN_TRUE@ cp -pPR $(SRC_DIR_LINK) $(abs_top_srcdir)/plugin/tests/LiveConnect/*.{js,html} \ -@ENABLE_PLUGIN_TRUE@ plugin/tests/LiveConnect ; -@ENABLE_PLUGIN_TRUE@ echo "Done. Now launch \"firefox file://`pwd`/index.html\"" ; +@ENABLE_PLUGIN_TRUE@ @echo "Done. Now launch \"firefox file://`realpath plugin/tests/LiveConnect`/index.html\"" ; @ENABLE_PLUGIN_TRUE@ mkdir -p stamps @ENABLE_PLUGIN_TRUE@ touch stamps/plugin-tests.stamp Index: head/java/icedtea-web/files/patch-netx-XDesktopEntry.java =================================================================== --- head/java/icedtea-web/files/patch-netx-XDesktopEntry.java (revision 378488) +++ head/java/icedtea-web/files/patch-netx-XDesktopEntry.java (revision 378489) @@ -1,11 +1,11 @@ ---- netx/net/sourceforge/jnlp/util/XDesktopEntry.java.orig 2013-05-03 15:08:24.357518000 -0400 -+++ netx/net/sourceforge/jnlp/util/XDesktopEntry.java 2013-06-11 11:04:56.000000000 -0400 -@@ -102,7 +102,7 @@ +--- netx/net/sourceforge/jnlp/util/XDesktopEntry.java.orig 2014-08-14 06:15:47.054833000 -0400 ++++ netx/net/sourceforge/jnlp/util/XDesktopEntry.java 2014-10-17 17:37:24.000000000 -0400 +@@ -103,7 +103,7 @@ } - //Shortcut executes the jnlp from cache and system preferred java.. -- fileContents += "Exec=" + "javaws" + " \"" + cacheFile.getAbsolutePath() + "\"\n"; -+ fileContents += "Exec=" + "itweb-javaws" + " \"" + cacheFile.getAbsolutePath() + "\"\n"; + //Shortcut executes the jnlp as it was with system preferred java. It should work fine offline +- fileContents += "Exec=" + "javaws" + " \"" + file.getSourceLocation() + "\"\n"; ++ fileContents += "Exec=" + "itweb-javaws" + " \"" + file.getSourceLocation() + "\"\n"; return new StringReader(fileContents);