1
Fork 0

pw-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-07 17:29:14 +01:00 committed by Wim Taymans
parent 72d5417857
commit e2d3f9140b
1 changed files with 14 additions and 7 deletions

View File

@ -436,6 +436,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;
@ -446,16 +447,22 @@ int rd_device_request_release(struct rd_device *d)
"RequestRelease")) == NULL) {
return -ENOMEM;
}
if (!dbus_message_append_args(m,
if (!dbus_message_append_args(m,
DBUS_TYPE_INT32, &d->priority,
DBUS_TYPE_INVALID)) {
dbus_message_unref(m);
return -ENOMEM;
}
if (!dbus_connection_send(d->connection, m, NULL)) {
return -EIO;
res = -ENOMEM;
goto exit;
}
return 0;
if (!dbus_connection_send(d->connection, m, NULL)) {
res = -EIO;
goto exit;
}
exit:
dbus_message_unref(m);
return res;
}
int rd_device_complete_release(struct rd_device *d, int res)