| Summary: | EclipseProxySelector.select: host may be null | ||||||
|---|---|---|---|---|---|---|---|
| Product: | [Technology] EGit | Reporter: | Scott Michel <scottm> | ||||
| Component: | UI | Assignee: | Matthias Sohn <matthias.sohn> | ||||
| Status: | RESOLVED FIXED | QA Contact: | |||||
| Severity: | normal | ||||||
| Priority: | P3 | CC: | stefan.lay | ||||
| Version: | unspecified | ||||||
| Target Milestone: | --- | ||||||
| Hardware: | Macintosh | ||||||
| OS: | Mac OS X - Carbon (unsup.) | ||||||
| Whiteboard: | |||||||
| Attachments: |
|
||||||
|
Description
Scott Michel
Created attachment 178781 [details]
proposed defensive patch
Proposed patch to deal with null host returned by getURI().
Stack trace: !ENTRY org.eclipse.equinox.preferences 4 2 2010-09-13 16:03:23.261 !MESSAGE Problems occurred when invoking code from plug-in: "org.eclipse.equinox.preferences". !STACK 0 java.lang.NullPointerException at org.eclipse.core.internal.net.ProxyManager.tryGetURI(ProxyManager.java:330) at org.eclipse.core.internal.net.ProxyManager.getProxyDataForHost(ProxyManager.java:307) at org.eclipse.core.internal.net.ProxyManager.getProxyDataForHost(ProxyManager.java:372) at org.eclipse.egit.ui.EclipseProxySelector.select(EclipseProxySelector.java:45) at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:425) at java.net.Socket.connect(Socket.java:529) at java.net.Socket.connect(Socket.java:477) at java.net.Socket.<init>(Socket.java:374) at java.net.Socket.<init>(Socket.java:216) at net.sf.eclipsefp.haskell.scion.internal.client.ScionServer.startServerProcess(ScionServer.java:161) at net.sf.eclipsefp.haskell.scion.internal.client.ScionServer.startServer(ScionServer.java:108) at net.sf.eclipsefp.haskell.scion.client.ScionInstance.start(ScionInstance.java:132) at net.sf.eclipsefp.haskell.ui.internal.scion.ScionManager.startInstance(ScionManager.java:625) at net.sf.eclipsefp.haskell.ui.internal.scion.ScionManager.serverExecutableChanged(ScionManager.java:568) at net.sf.eclipsefp.haskell.ui.internal.scion.ScionManager.access$4(ScionManager.java:554) at net.sf.eclipsefp.haskell.ui.internal.scion.ScionManager$1.preferenceChange(ScionManager.java:129) at org.eclipse.core.internal.preferences.EclipsePreferences$2.run(EclipsePreferences.java:753) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) at org.eclipse.core.internal.preferences.EclipsePreferences.firePreferenceEvent(EclipsePreferences.java:756) at org.eclipse.core.internal.preferences.EclipsePreferences.put(EclipsePreferences.java:769) at net.sf.eclipsefp.haskell.ui.internal.preferences.hsimpls.InstalledImplementationsPP.performOk(InstalledImplementationsPP.java:86) at org.eclipse.jface.preference.PreferenceDialog$13.run(PreferenceDialog.java:964) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:49) at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:175) at org.eclipse.jface.preference.PreferenceDialog.okPressed(PreferenceDialog.java:944) at org.eclipse.ui.internal.dialogs.FilteredPreferenceDialog.okPressed(FilteredPreferenceDialog.java:447) at org.eclipse.ui.internal.dialogs.WorkbenchPreferenceDialog.okPressed(WorkbenchPreferenceDialog.java:169) at org.eclipse.jface.preference.PreferenceDialog.buttonPressed(PreferenceDialog.java:233) at org.eclipse.jface.dialogs.Dialog$2.widgetSelected(Dialog.java:624) at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:234) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84) at org.eclipse.swt.widgets.Display.sendEvent(Display.java:3776) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1367) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1390) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1375) at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java:1187) at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3622) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3277) at org.eclipse.jface.window.Window.runEventLoop(Window.java:825) at org.eclipse.jface.window.Window.open(Window.java:801) at org.eclipse.ui.internal.dialogs.WorkbenchPreferenceDialog.open(WorkbenchPreferenceDialog.java:211) at org.eclipse.ui.internal.OpenPreferencesAction.run(OpenPreferencesAction.java:65) at org.eclipse.ui.internal.cocoa.CocoaUIEnhancer.runAction(CocoaUIEnhancer.java:416) at org.eclipse.ui.internal.cocoa.CocoaUIEnhancer.preferencesMenuItemSelected(CocoaUIEnhancer.java:516) at org.eclipse.ui.internal.cocoa.CocoaUIEnhancer.actionProc(CocoaUIEnhancer.java:538) at org.eclipse.ui.internal.cocoa.CocoaUIEnhancer.actionProc(CocoaUIEnhancer.java:524) at org.eclipse.swt.internal.cocoa.OS.objc_msgSendSuper(Native Method) at org.eclipse.swt.widgets.Display.applicationSendEvent(Display.java:4582) at org.eclipse.swt.widgets.Display.applicationProc(Display.java:4659) at org.eclipse.swt.internal.cocoa.OS.objc_msgSend(Native Method) at org.eclipse.swt.internal.cocoa.NSApplication.sendEvent(NSApplication.java:115) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3274) at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2629) at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2593) at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2427) at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:670) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:663) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149) at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:115) at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:369) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:592) at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:619) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:574) at org.eclipse.equinox.launcher.Main.run(Main.java:1407) at org.eclipse.equinox.launcher.Main.main(Main.java:1383) Appears to be reproducible if proxy host is IPv6 local host, i.e., "http://::1:8080/". No easy way to disambiguate the colon (":") parsing; IETF RFCs do not give any guidance. Uploaded your patch to our code review server at http://egit.eclipse.org/r/#change,1778 Please register on the code review server and check if I applied it correctly (the patch didn't apply so I had to patch it ;-). If you are happy with what I did vote +1 on it at http://egit.eclipse.org/r/#change,publish,1778,1 For details about egit contributions visit http://wiki.eclipse.org/EGit/Contributor_Guide More precisely: follow http://wiki.eclipse.org/EGit/Contributor_Guide#Contributing_Patches to register on Gerrit merged as c0636b5c957ae520799f9b073da16f5455ad539e (In reply to comment #6) > merged as c0636b5c957ae520799f9b073da16f5455ad539e Looks good; it defensively guards against the NPE. It's probably not the right thing to do in the long run, since the actual bug is in URI parsing because the code appears to be IPv4-centric. |