[epiphany/pgriffis/web-extension-gtask: 11/15] WebExtensions: Handle invalid args passed to ephy_send_message()




commit fd6a226e4b23f3a7def9429235d38e6a3b7461c4
Author: Patrick Griffis <pgriffis igalia com>
Date:   Thu May 26 13:12:24 2022 -0500

    WebExtensions: Handle invalid args passed to ephy_send_message()
    
    Part-of: <https://gitlab.gnome.org/GNOME/epiphany/-/merge_requests/1119>

 embed/web-process-extension/ephy-webextension-api.c | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)
---
diff --git a/embed/web-process-extension/ephy-webextension-api.c 
b/embed/web-process-extension/ephy-webextension-api.c
index 41cd1f6dc..31f11f767 100644
--- a/embed/web-process-extension/ephy-webextension-api.c
+++ b/embed/web-process-extension/ephy-webextension-api.c
@@ -224,7 +224,14 @@ ephy_send_message (const char *function_name,
   char *args_json;
 
   /* TODO: If function_args is list and last arg is callable, treat it as `chrome` API. */
-  /* TODO: Check for valid types for args, resolve, reject. */
+
+  if (!jsc_value_is_function (reject_callback))
+    return; /* Can't reject in this case. */
+
+  if (!jsc_value_is_array (function_args) || !jsc_value_is_function (resolve_callback)) {
+    g_autoptr (JSCValue) ret = jsc_value_function_call (reject_callback, G_TYPE_STRING, "Invalid Arguments", 
G_TYPE_NONE);
+    return;
+  }
 
   task = g_task_new (extension, NULL, (GAsyncReadyCallback)on_ephy_message_finish, NULL);
   data = ephy_message_data_new (resolve_callback, reject_callback);


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]