raster pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=d37958c1b0b005b8f04a6ee951d83f6af6e79689

commit d37958c1b0b005b8f04a6ee951d83f6af6e79689
Author: Carsten Haitzler (Rasterman) <ras...@rasterman.com>
Date:   Sun Jan 24 15:59:55 2021 +0000

    ethumb - fix asan complaint on mis-accessing struct after free in client
    
    @fix
---
 src/lib/ethumb_client/ethumb_client.c | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/src/lib/ethumb_client/ethumb_client.c 
b/src/lib/ethumb_client/ethumb_client.c
index 1175402887..70e56bce94 100644
--- a/src/lib/ethumb_client/ethumb_client.c
+++ b/src/lib/ethumb_client/ethumb_client.c
@@ -204,6 +204,7 @@ _ethumb_client_free(Ethumb_Client *client)
    if (client->invalid)
       return;
 
+   if (client->dbus_pending)
      {
         Eldbus_Pending *pending;
         EINA_LIST_FREE(client->dbus_pending, pending)
@@ -216,8 +217,11 @@ _ethumb_client_free(Ethumb_Client *client)
         struct _ethumb_pending_add *pending = data;
         if (pending->pending_call)
           {
-             eldbus_pending_cancel(pending->pending_call);
+             Eldbus_Pending *call = pending->pending_call;
+
+             pending->pending_call = NULL;
              pending->client = NULL;
+             eldbus_pending_cancel(call);
           }
         else
           {
@@ -245,8 +249,11 @@ _ethumb_client_free(Ethumb_Client *client)
           pending->free_data(pending->data);
         if (pending->pending_call)
           {
-             eldbus_pending_cancel(pending->pending_call);
+             Eldbus_Pending *call = pending->pending_call;
+
+             pending->pending_call = NULL;
              pending->client = NULL;
+             eldbus_pending_cancel(call);
           }
         else
           {

-- 


Reply via email to