/hg/release/icedtea-web-1.2: Fixed PR863: Error passing strings ...

dbhole at icedtea.classpath.org dbhole at icedtea.classpath.org
Thu Jun 7 13:29:52 PDT 2012


changeset d7375e2a9076 in /hg/release/icedtea-web-1.2
details: http://icedtea.classpath.org/hg/release/icedtea-web-1.2?cmd=changeset;node=d7375e2a9076
author: Deepak Bhole <dbhole at redhat.com>
date: Fri Jun 01 16:05:18 2012 -0400

	Fixed PR863: Error passing strings to applet methods in Chromium


diffstat:

 ChangeLog                                         |  13 +++++++++++++
 NEWS                                              |   1 +
 plugin/icedteanp/IcedTeaJavaRequestProcessor.cc   |   4 ++--
 plugin/icedteanp/IcedTeaNPPlugin.cc               |  12 ++++++++++--
 plugin/icedteanp/IcedTeaPluginRequestProcessor.cc |   4 ++--
 plugin/icedteanp/IcedTeaPluginUtils.cc            |  16 ++++++++--------
 6 files changed, 36 insertions(+), 14 deletions(-)

diffs (139 lines):

diff -r 0cdefd555de7 -r d7375e2a9076 ChangeLog
--- a/ChangeLog	Wed May 23 13:05:12 2012 -0400
+++ b/ChangeLog	Fri Jun 01 16:05:18 2012 -0400
@@ -1,3 +1,16 @@
+2012-06-01  Deepak Bhole <dbhole at redhat.com>
+
+	PR863: Error passing strings to applet methods in Chromium
+	* plugin/icedteanp/IcedTeaJavaRequestProcessor.cc
+	(createJavaObjectFromVariant): Account for length of the characters.
+	* plugin/icedteanp/IcedTeaNPPlugin.cc (plugin_get_documentbase): Same.
+	* plugin/icedteanp/IcedTeaPluginRequestProcessor.cc (_eval): Print the
+	string's c_str rather than utf8characters/
+	* plugin/icedteanp/IcedTeaPluginUtils.cc (printNPVariant): Account for
+	length of the characters.
+	(NPVariantToString): Same.
+	(isObjectJSArray): Same.
+
 2012-05-23  Deepak Bhole <dbhole at redhat.com>
 
 	* AUTHORS: Added Martin Olsson to list.
diff -r 0cdefd555de7 -r d7375e2a9076 NEWS
--- a/NEWS	Wed May 23 13:05:12 2012 -0400
+++ b/NEWS	Fri Jun 01 16:05:18 2012 -0400
@@ -12,6 +12,7 @@
 * NetX
   - PR898: signed applications with big jnlp-file doesn't start (webstart affect like "frozen")
 * Plugin
+  - PR863: Error passing strings to applet methods in Chromium
   - PR895: IcedTea-Web searches for missing classes on each loadClass or findClass
 
 New in release 1.2 (2012-03-05):
diff -r 0cdefd555de7 -r d7375e2a9076 plugin/icedteanp/IcedTeaJavaRequestProcessor.cc
--- a/plugin/icedteanp/IcedTeaJavaRequestProcessor.cc	Wed May 23 13:05:12 2012 -0400
+++ b/plugin/icedteanp/IcedTeaJavaRequestProcessor.cc	Fri Jun 01 16:05:18 2012 -0400
@@ -905,9 +905,9 @@
     {
     	className = "java.lang.String";
 #if MOZILLA_VERSION_COLLAPSED < 1090200
-    	stringArg += NPVARIANT_TO_STRING(variant).utf8characters;
+    	stringArg.append(NPVARIANT_TO_STRING(variant).utf8characters, NPVARIANT_TO_STRING(variant).utf8length);
 #else
-    	stringArg += NPVARIANT_TO_STRING(variant).UTF8Characters;
+    	stringArg.append(NPVARIANT_TO_STRING(variant).UTF8Characters, NPVARIANT_TO_STRING(variant).UTF8Length);
 #endif
     } else if (NPVARIANT_IS_OBJECT(variant))
     {
diff -r 0cdefd555de7 -r d7375e2a9076 plugin/icedteanp/IcedTeaNPPlugin.cc
--- a/plugin/icedteanp/IcedTeaNPPlugin.cc	Wed May 23 13:05:12 2012 -0400
+++ b/plugin/icedteanp/IcedTeaNPPlugin.cc	Fri Jun 01 16:05:18 2012 -0400
@@ -1094,11 +1094,16 @@
                                href_id, &href);
 
   // Strip everything after the last "/"
+  char *href_str;
 #if MOZILLA_VERSION_COLLAPSED < 1090200
-  gchar** parts = g_strsplit (NPVARIANT_TO_STRING(href).utf8characters, "/", -1);
+  href_str = (char*) malloc(sizeof(char)*NPVARIANT_TO_STRING(href).utf8length + 1);
+  snprintf(href_str, NPVARIANT_TO_STRING(href).utf8length+1, "%s", NPVARIANT_TO_STRING(href).utf8characters);
 #else
-  gchar** parts = g_strsplit (NPVARIANT_TO_STRING(href).UTF8Characters, "/", -1);
+  href_str = (char*) malloc(sizeof(char)*NPVARIANT_TO_STRING(href).UTF8Length + 1);
+  snprintf(href_str, NPVARIANT_TO_STRING(href).UTF8Length+1, "%s", NPVARIANT_TO_STRING(href).UTF8Characters);
 #endif
+
+  gchar** parts = g_strsplit (href_str, "/", -1);
   guint parts_sz = g_strv_length (parts);
 
   std::string location_str;
@@ -1113,6 +1118,9 @@
   // Release references.
   browser_functions.releasevariantvalue(&href);
   browser_functions.releasevariantvalue(&location);
+  g_strfreev(parts);
+  free(href_str);
+  href_str = NULL;
  cleanup_done:
   PLUGIN_DEBUG ("plugin_get_documentbase return\n");
   PLUGIN_DEBUG("plugin_get_documentbase returning: %s\n", documentbase_copy);
diff -r 0cdefd555de7 -r d7375e2a9076 plugin/icedteanp/IcedTeaPluginRequestProcessor.cc
--- a/plugin/icedteanp/IcedTeaPluginRequestProcessor.cc	Wed May 23 13:05:12 2012 -0400
+++ b/plugin/icedteanp/IcedTeaPluginRequestProcessor.cc	Fri Jun 01 16:05:18 2012 -0400
@@ -842,12 +842,12 @@
     script.utf8characters = script_str->c_str();
     script.utf8length = script_str->size();
 
-    PLUGIN_DEBUG("Evaluating: %s\n", script.utf8characters);
+    PLUGIN_DEBUG("Evaluating: %s\n", script_str->c_str());
 #else
     script.UTF8Characters = script_str->c_str();
     script.UTF8Length = script_str->size();
 
-    PLUGIN_DEBUG("Evaluating: %s\n", script.UTF8Characters);
+    PLUGIN_DEBUG("Evaluating: %s\n", script_str->c_str());
 #endif
 
     ((AsyncCallThreadData*) data)->call_successful = browser_functions.evaluate(instance, window_ptr, &script, eval_variant);
diff -r 0cdefd555de7 -r d7375e2a9076 plugin/icedteanp/IcedTeaPluginUtils.cc
--- a/plugin/icedteanp/IcedTeaPluginUtils.cc	Wed May 23 13:05:12 2012 -0400
+++ b/plugin/icedteanp/IcedTeaPluginUtils.cc	Fri Jun 01 16:05:18 2012 -0400
@@ -669,9 +669,9 @@
     else if (NPVARIANT_IS_STRING(variant))
     {
 #if MOZILLA_VERSION_COLLAPSED < 1090200
-    	PLUGIN_DEBUG("STRING: %s\n", NPVARIANT_TO_STRING(variant).utf8characters);
+    	PLUGIN_DEBUG("STRING: %s (length=%d)\n", NPVARIANT_TO_STRING(variant).utf8characters, NPVARIANT_TO_STRING(variant).utf8length);
 #else
-    	PLUGIN_DEBUG("STRING: %s\n", NPVARIANT_TO_STRING(variant).UTF8Characters);
+    	PLUGIN_DEBUG("STRING: %s (length=%d)\n", NPVARIANT_TO_STRING(variant).UTF8Characters, NPVARIANT_TO_STRING(variant).UTF8Length);
 #endif
     }
     else
@@ -712,11 +712,11 @@
     {
     	free(str);
 #if MOZILLA_VERSION_COLLAPSED < 1090200
-    	str = (char*) malloc(sizeof(char)*NPVARIANT_TO_STRING(variant).utf8length);
-    	sprintf(str, "%s", NPVARIANT_TO_STRING(variant).utf8characters);
+    	str = (char*) malloc(sizeof(char)*NPVARIANT_TO_STRING(variant).utf8length + 1);
+    	snprintf(str, NPVARIANT_TO_STRING(variant).utf8length+1, "%s", NPVARIANT_TO_STRING(variant).utf8characters);
 #else
-        str = (char*) malloc(sizeof(char)*NPVARIANT_TO_STRING(variant).UTF8Length);
-        sprintf(str, "%s", NPVARIANT_TO_STRING(variant).UTF8Characters);
+    	str = (char*) malloc(sizeof(char)*NPVARIANT_TO_STRING(variant).UTF8Length + 1);
+    	snprintf(str, NPVARIANT_TO_STRING(variant).UTF8Length+1, "%s", NPVARIANT_TO_STRING(variant).UTF8Characters);
 #endif
     }
     else
@@ -867,9 +867,9 @@
     std::string constructor_name = std::string();
 
 #if MOZILLA_VERSION_COLLAPSED < 1090200
-    constructor_name.append(NPVARIANT_TO_STRING(constructor_str).utf8characters);
+    constructor_name.append(NPVARIANT_TO_STRING(constructor_str).utf8characters, NPVARIANT_TO_STRING(constructor_str).utf8length);
 #else
-    constructor_name.append(NPVARIANT_TO_STRING(constructor_str).UTF8Characters);
+    constructor_name.append(NPVARIANT_TO_STRING(constructor_str).UTF8Characters, NPVARIANT_TO_STRING(constructor_str).UTF8Length);
 #endif
 
     PLUGIN_DEBUG("Constructor for NPObject is %s\n", constructor_name.c_str());



More information about the distro-pkg-dev mailing list