reserve: fix potential DBusMessage memory leak

Our reference to the message must always be dropped,
even if `dbus_connection_send()` fails.
This commit is contained in:
Barnabás Pőcze 2024-01-08 20:10:49 +01:00
parent 309f976f63
commit 9f3dec6b04

View file

@ -423,6 +423,7 @@ int rd_device_acquire(struct rd_device *d)
int rd_device_request_release(struct rd_device *d)
{
DBusMessage *m = NULL;
int res = 0;
if (d->priority <= INT32_MIN)
return -EBUSY;
@ -433,16 +434,22 @@ int rd_device_request_release(struct rd_device *d)
"RequestRelease")) == NULL) {
return -ENOMEM;
}
if (!dbus_message_append_args(m,
DBUS_TYPE_INT32, &d->priority,
DBUS_TYPE_INVALID)) {
dbus_message_unref(m);
return -ENOMEM;
res = -ENOMEM;
goto exit;
}
if (!dbus_connection_send(d->connection, m, NULL)) {
return -EIO;
res = -EIO;
goto exit;
}
return 0;
exit:
dbus_message_unref(m);
return res;
}
int rd_device_complete_release(struct rd_device *d, int res)