browser-plugin: Make sure to use the UTF8Length parameter

Some plugin hosts may have junk after the UTF8Characters that we need to strip
off. No current browsers that I know of do this, but it still helps to be
correct.
This commit is contained in:
Jasper St. Pierre 2011-11-16 23:47:35 -05:00
parent 85e243982b
commit ab6a7773ce

View File

@ -455,7 +455,7 @@ plugin_enable_extension (PluginObject *obj,
NPString uuid, NPString uuid,
gboolean enabled) gboolean enabled)
{ {
const gchar *uuid_str = uuid.UTF8Characters; gchar *uuid_str = g_strndup (uuid.UTF8Characters, uuid.UTF8Length);
if (!uuid_is_valid (uuid_str)) if (!uuid_is_valid (uuid_str))
return FALSE; return FALSE;
@ -468,6 +468,8 @@ plugin_enable_extension (PluginObject *obj,
NULL, /* callback */ NULL, /* callback */
NULL /* user_data */); NULL /* user_data */);
g_free (uuid_str);
return TRUE; return TRUE;
} }
@ -476,7 +478,7 @@ plugin_install_extension (PluginObject *obj,
NPString uuid, NPString uuid,
NPString version_tag) NPString version_tag)
{ {
const gchar *uuid_str = uuid.UTF8Characters; gchar *uuid_str = g_strndup (uuid.UTF8Characters, uuid.UTF8Length);
if (!uuid_is_valid (uuid_str)) if (!uuid_is_valid (uuid_str))
return FALSE; return FALSE;
@ -491,6 +493,8 @@ plugin_install_extension (PluginObject *obj,
NULL, /* callback */ NULL, /* callback */
NULL /* user_data */); NULL /* user_data */);
g_free (uuid_str);
return TRUE; return TRUE;
} }
@ -501,9 +505,9 @@ plugin_uninstall_extension (PluginObject *obj,
{ {
GError *error = NULL; GError *error = NULL;
GVariant *res; GVariant *res;
const gchar *uuid_str; gchar *uuid_str;
uuid_str = uuid.UTF8Characters; uuid_str = g_strndup (uuid.UTF8Characters, uuid.UTF8Length);
if (!uuid_is_valid (uuid_str)) if (!uuid_is_valid (uuid_str))
return FALSE; return FALSE;
@ -516,6 +520,8 @@ plugin_uninstall_extension (PluginObject *obj,
NULL, /* cancellable */ NULL, /* cancellable */
&error); &error);
g_free (uuid_str);
if (!res) if (!res)
{ {
g_warning ("Failed to uninstall extension: %s", error->message); g_warning ("Failed to uninstall extension: %s", error->message);
@ -533,9 +539,9 @@ plugin_get_info (PluginObject *obj,
{ {
GError *error = NULL; GError *error = NULL;
GVariant *res; GVariant *res;
const gchar *uuid_str; gchar *uuid_str;
uuid_str = uuid.UTF8Characters; uuid_str = g_strndup (uuid.UTF8Characters, uuid.UTF8Length);
if (!uuid_is_valid (uuid_str)) if (!uuid_is_valid (uuid_str))
return FALSE; return FALSE;
@ -547,6 +553,8 @@ plugin_get_info (PluginObject *obj,
NULL, /* cancellable */ NULL, /* cancellable */
&error); &error);
g_free (uuid_str);
if (!res) if (!res)
{ {
g_warning ("Failed to retrieve extension metadata: %s", error->message); g_warning ("Failed to retrieve extension metadata: %s", error->message);
@ -564,9 +572,9 @@ plugin_get_errors (PluginObject *obj,
{ {
GError *error = NULL; GError *error = NULL;
GVariant *res; GVariant *res;
const gchar *uuid_str; gchar *uuid_str;
uuid_str = uuid.UTF8Characters; uuid_str = g_strndup (uuid.UTF8Characters, uuid.UTF8Length);
if (!uuid_is_valid (uuid_str)) if (!uuid_is_valid (uuid_str))
return FALSE; return FALSE;
@ -578,6 +586,8 @@ plugin_get_errors (PluginObject *obj,
NULL, /* cancellable */ NULL, /* cancellable */
&error); &error);
g_free (uuid_str);
if (!res) if (!res)
{ {
g_warning ("Failed to retrieve errors: %s", error->message); g_warning ("Failed to retrieve errors: %s", error->message);