diff options
author | Sebastian Ratz | 2019-05-21 10:33:54 +0000 |
---|---|---|
committer | Lakshmi Shanmugam | 2019-05-21 11:01:01 +0000 |
commit | e5a15ba55972b191ed4270c58ce4c2b1af683cc5 (patch) | |
tree | db5448c29dfadb15446be72feed9ef0e345848fe | |
parent | d32ccb4c0216930fee44b5641125a7f060d560b5 (diff) | |
download | eclipse.platform.swt-e5a15ba55972b191ed4270c58ce4c2b1af683cc5.tar.gz eclipse.platform.swt-e5a15ba55972b191ed4270c58ce4c2b1af683cc5.tar.xz eclipse.platform.swt-e5a15ba55972b191ed4270c58ce4c2b1af683cc5.zip |
Bug 547506 - [MacOS] [WebKit] java.lang.NullPointerException at
org.eclipse.swt.browser.WebKit.webView_didFailProvisionalLoadWithError_forFrame
Change-Id: Id5864a73c02f47b1bc310164105b265e82221987
Signed-off-by: Sebastian Ratz <sebastian.ratz@sap.com>
-rw-r--r-- | bundles/org.eclipse.swt/Eclipse SWT WebKit/cocoa/org/eclipse/swt/browser/WebKit.java | 51 |
1 files changed, 26 insertions, 25 deletions
diff --git a/bundles/org.eclipse.swt/Eclipse SWT WebKit/cocoa/org/eclipse/swt/browser/WebKit.java b/bundles/org.eclipse.swt/Eclipse SWT WebKit/cocoa/org/eclipse/swt/browser/WebKit.java index 529c6be886..0c4c7019df 100644 --- a/bundles/org.eclipse.swt/Eclipse SWT WebKit/cocoa/org/eclipse/swt/browser/WebKit.java +++ b/bundles/org.eclipse.swt/Eclipse SWT WebKit/cocoa/org/eclipse/swt/browser/WebKit.java @@ -705,34 +705,35 @@ void webView_didFailProvisionalLoadWithError_forFrame(long sender, long error, l if (failingURL != null && OS.NSURLErrorServerCertificateNotYetValid <= errorCode && errorCode <= OS.NSURLErrorSecureConnectionFailed) { /* handle invalid certificate error */ id certificates = info.objectForKey(NSString.stringWith("NSErrorPeerCertificateChainKey")); //$NON-NLS-1$ - - long[] policySearch = new long[1]; - long[] policyRef = new long[1]; - long[] trustRef = new long[1]; - boolean success = false; - int result = OS.SecPolicySearchCreate(OS.CSSM_CERT_X_509v3, 0, 0, policySearch); - if (result == 0 && policySearch[0] != 0) { - result = OS.SecPolicySearchCopyNext(policySearch[0], policyRef); - if (result == 0 && policyRef[0] != 0) { - result = OS.SecTrustCreateWithCertificates(certificates.id, policyRef[0], trustRef); - if (result == 0 && trustRef[0] != 0) { - SFCertificateTrustPanel panel = SFCertificateTrustPanel.sharedCertificateTrustPanel(); - String failingUrlString = failingURL.absoluteString().getString(); - String message = Compatibility.getMessage("SWT_InvalidCert_Message", new Object[] {failingUrlString}); //$NON-NLS-1$ - panel.setAlternateButtonTitle(NSString.stringWith(Compatibility.getMessage("SWT_Cancel"))); //$NON-NLS-1$ - panel.setShowsHelp(true); - failingURL.retain(); - NSWindow window = browser.getShell().view.window(); - panel.beginSheetForWindow(window, delegate, OS.sel_createPanelDidEnd, failingURL.id, trustRef[0], NSString.stringWith(message)); - success = true; + if (certificates != null) { + long[] policySearch = new long[1]; + long[] policyRef = new long[1]; + long[] trustRef = new long[1]; + boolean success = false; + int result = OS.SecPolicySearchCreate(OS.CSSM_CERT_X_509v3, 0, 0, policySearch); + if (result == 0 && policySearch[0] != 0) { + result = OS.SecPolicySearchCopyNext(policySearch[0], policyRef); + if (result == 0 && policyRef[0] != 0) { + result = OS.SecTrustCreateWithCertificates(certificates.id, policyRef[0], trustRef); + if (result == 0 && trustRef[0] != 0) { + SFCertificateTrustPanel panel = SFCertificateTrustPanel.sharedCertificateTrustPanel(); + String failingUrlString = failingURL.absoluteString().getString(); + String message = Compatibility.getMessage("SWT_InvalidCert_Message", new Object[] {failingUrlString}); //$NON-NLS-1$ + panel.setAlternateButtonTitle(NSString.stringWith(Compatibility.getMessage("SWT_Cancel"))); //$NON-NLS-1$ + panel.setShowsHelp(true); + failingURL.retain(); + NSWindow window = browser.getShell().view.window(); + panel.beginSheetForWindow(window, delegate, OS.sel_createPanelDidEnd, failingURL.id, trustRef[0], NSString.stringWith(message)); + success = true; + } } } - } - if (trustRef[0] != 0) OS.CFRelease(trustRef[0]); - if (policyRef[0] != 0) OS.CFRelease(policyRef[0]); - if (policySearch[0] != 0) OS.CFRelease(policySearch[0]); - if (success) return; + if (trustRef[0] != 0) OS.CFRelease(trustRef[0]); + if (policyRef[0] != 0) OS.CFRelease(policyRef[0]); + if (policySearch[0] != 0) OS.CFRelease(policySearch[0]); + if (success) return; + } } /* handle other types of errors */ |