diff options
author | Grant Gayed <grant_gayed@ca.ibm.com> | 2011-08-08 14:20:16 -0400 |
---|---|---|
committer | Grant Gayed <grant_gayed@ca.ibm.com> | 2011-08-08 14:20:16 -0400 |
commit | 186676f1d2971f22d8b4e8719af64e820e2bf3a4 (patch) | |
tree | 3235693c01138c5cb3406ad27d865921fe22d4ce /bundles/org.eclipse.swt/Eclipse SWT Browser | |
parent | 15c44de917581dd8d95cec9b081ec7ed327edf65 (diff) | |
download | eclipse.platform.swt-186676f1d2971f22d8b4e8719af64e820e2bf3a4.tar.gz eclipse.platform.swt-186676f1d2971f22d8b4e8719af64e820e2bf3a4.tar.xz eclipse.platform.swt-186676f1d2971f22d8b4e8719af64e820e2bf3a4.zip |
Bug 352383 - increase BrowserFunction security token to 128 bits
Diffstat (limited to 'bundles/org.eclipse.swt/Eclipse SWT Browser')
3 files changed, 13 insertions, 8 deletions
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Browser/common/org/eclipse/swt/browser/BrowserFunction.java b/bundles/org.eclipse.swt/Eclipse SWT Browser/common/org/eclipse/swt/browser/BrowserFunction.java index b77ed222bf..8871856845 100644 --- a/bundles/org.eclipse.swt/Eclipse SWT Browser/common/org/eclipse/swt/browser/BrowserFunction.java +++ b/bundles/org.eclipse.swt/Eclipse SWT Browser/common/org/eclipse/swt/browser/BrowserFunction.java @@ -48,7 +48,7 @@ public class BrowserFunction { String functionString; int index; boolean isEvaluate; - long token; + String token; /** * Constructs a new instance of this class, which will be invokable @@ -88,8 +88,13 @@ BrowserFunction (Browser browser, String name, boolean create) { this.name = name; Random random = new Random (); - long value = random.nextLong (); - token = ((value & 0xFFE0000000000000L) >>> 11) ^ (value & 0x1FFFFFFFFFFFFFL); + byte[] bytes = new byte[16]; + random.nextBytes (bytes); + StringBuffer buffer = new StringBuffer (); + for (int i = 0; i < bytes.length; i++) { + buffer.append (Integer.toHexString (bytes[i] & 0xff)); + } + token = buffer.toString (); if (create) browser.webBrowser.createFunction (this); } diff --git a/bundles/org.eclipse.swt/Eclipse SWT Browser/common/org/eclipse/swt/browser/WebBrowser.java b/bundles/org.eclipse.swt/Eclipse SWT Browser/common/org/eclipse/swt/browser/WebBrowser.java index 31dd96b6ed..1c828e4eb0 100644 --- a/bundles/org.eclipse.swt/Eclipse SWT Browser/common/org/eclipse/swt/browser/WebBrowser.java +++ b/bundles/org.eclipse.swt/Eclipse SWT Browser/common/org/eclipse/swt/browser/WebBrowser.java @@ -339,9 +339,9 @@ public void createFunction (BrowserFunction function) { buffer.append (function.name); buffer.append ("() {var result = window.external.callJava("); //$NON-NLS-1$ buffer.append (function.index); - buffer.append (','); + buffer.append (",'"); //$NON-NLS-1$ buffer.append (function.token); - buffer.append (",Array.prototype.slice.call(arguments)); if (typeof result == 'string' && result.indexOf('"); //$NON-NLS-1$ + buffer.append ("',Array.prototype.slice.call(arguments)); if (typeof result == 'string' && result.indexOf('"); //$NON-NLS-1$ buffer.append (ERROR_ID); buffer.append ("') == 0) {var error = new Error(result.substring("); //$NON-NLS-1$ buffer.append (ERROR_ID.length ()); diff --git a/bundles/org.eclipse.swt/Eclipse SWT Browser/win32/org/eclipse/swt/browser/WebSite.java b/bundles/org.eclipse.swt/Eclipse SWT Browser/win32/org/eclipse/swt/browser/WebSite.java index 81413c1093..ed5703ea07 100644 --- a/bundles/org.eclipse.swt/Eclipse SWT Browser/win32/org/eclipse/swt/browser/WebSite.java +++ b/bundles/org.eclipse.swt/Eclipse SWT Browser/win32/org/eclipse/swt/browser/WebSite.java @@ -740,21 +740,21 @@ int Invoke (int dispIdMember, int /*long*/ riid, int lcid, int dwFlags, int /*lo ptr = dispParams.rgvarg + Variant.sizeof; variant = Variant.win32_new (ptr); int type = variant.getType (); - if (type != COM.VT_I4 && type != COM.VT_R8) { + if (type != COM.VT_BSTR) { variant.dispose (); if (pVarResult != 0) { COM.MoveMemory (pVarResult, new int /*long*/[] {0}, C.PTR_SIZEOF); } return COM.S_OK; } - long token = variant.getLong (); + String token = variant.getString (); variant.dispose (); variant = Variant.win32_new (dispParams.rgvarg); Object key = new Integer (index); BrowserFunction function = (BrowserFunction)functions.get (key); Object returnValue = null; - if (function != null && token == function.token) { + if (function != null && token.equals (function.token)) { try { Object temp = convertToJava (variant); if (temp instanceof Object[]) { |