Coverity fix 61/232161/2
authorsanghyeok.oh <sanghyeok.oh@samsung.com>
Wed, 29 Apr 2020 00:10:37 +0000 (09:10 +0900)
committersanghyeok.oh <sanghyeok.oh@samsung.com>
Tue, 19 May 2020 02:35:04 +0000 (11:35 +0900)
Change-Id: I57c318bdf8a0e2d8d731c002185946930392718e

dbus/dbus-message.c

index 6952fe4..7fec313 100644 (file)
@@ -5708,8 +5708,10 @@ _dbus_message_remarshal (DBusMessage *message, dbus_bool_t gvariant)
   for (i = 0; i < message->n_unix_fds; ++i) {
     ret->unix_fds[i] = _dbus_dup(message->unix_fds[i], NULL);
 
-    if (ret->unix_fds[i] < 0)
+    if (ret->unix_fds[i] < 0) {
+      ret->n_unix_fds = i;
       goto err;
+    }
   }
 
   ret->n_unix_fds = message->n_unix_fds;
@@ -5776,8 +5778,11 @@ err:
   _dbus_string_free (&ret->body);
 
 #ifdef HAVE_UNIX_FD_PASSING
-  close_unix_fds(ret->unix_fds, &ret->n_unix_fds);
-  dbus_free(ret->unix_fds);
+  if (ret->unix_fds)
+    {
+      close_unix_fds(ret->unix_fds, &ret->n_unix_fds);
+      dbus_free(ret->unix_fds);
+    }
 #endif
 
   return NULL;