homescreen/hs-proxy: Guard against empty appids 47/26547/1 12.90.1 12.91.0 12.92.0 12.93.0 13.93.0 marlin/12.90.1 marlin/12.91.0 marlin/12.92.0 marlin/12.93.0 marlin_12.90.1 marlin_12.91.0 marlin_12.92.0 marlin_12.93.0 needlefish/13.93.0 needlefish_13.93.0
authorMarius Vlad <marius.vlad@collabora.com>
Thu, 29 Jul 2021 08:48:57 +0000 (11:48 +0300)
committerMarius Vlad <marius.vlad@collabora.com>
Thu, 29 Jul 2021 08:48:57 +0000 (11:48 +0300)
Bug-AGL: SPEC-4037

Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: I6a9b7fd74d81cb117afcb12639862288769b7fde

src/homescreen.cpp
src/hs-proxy.cpp

index 8470635..49850be 100644 (file)
@@ -162,9 +162,13 @@ static void tap_shortcut (afb_req_t request)
         ret = g_hs_instance->client_manager->handleRequest(request, __FUNCTION__, value);
         if(ret == AFB_REQ_NOT_STARTED_APPLICATION) {
             std::string id = g_hs_instance->app_info->getAppProperty(value, _keyId);
-            HS_AfmMainProxy afm_proxy;
-            afm_proxy.start(g_hs_instance, request, id);
-            ret = 0;
+           if (!id.empty()) {
+                   HS_AfmMainProxy afm_proxy;
+                   afm_proxy.start(g_hs_instance, request, id);
+                   ret = 0;
+           } else {
+                   ret = AFB_EVENT_BAD_REQUEST;
+           }
         }
     }
     else {
@@ -314,9 +318,13 @@ static void showWindow(afb_req_t request)
         ret = g_hs_instance->client_manager->handleRequest(request, __FUNCTION__, value);
         if(ret == AFB_REQ_NOT_STARTED_APPLICATION) {
             std::string id = g_hs_instance->app_info->getAppProperty(value, _keyId);
-            HS_AfmMainProxy afm_proxy;
-            afm_proxy.start(g_hs_instance, request, id);
-            ret = 0;
+           if (!id.empty()) {
+                   HS_AfmMainProxy afm_proxy;
+                   afm_proxy.start(g_hs_instance, request, id);
+                   ret = 0;
+           } else {
+                   ret = AFB_EVENT_BAD_REQUEST;
+           }
         }
     }
     else {
index cdbf249..ea8976c 100644 (file)
@@ -185,7 +185,7 @@ void HS_AfmMainProxy::start(struct hs_instance *instance, afb_req_t request, con
      * and client context there. We pass the closure_data with the client context
      * and the application id to remove it.
      */
-    if (!instance)
+    if (!instance || id.empty())
            return;
 
     cdata = static_cast<struct closure_data *>(calloc(1, sizeof(*cdata)));