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:
parent
72d5417857
commit
e2d3f9140b
|
@ -436,6 +436,7 @@ int rd_device_acquire(struct rd_device *d)
|
||||||
int rd_device_request_release(struct rd_device *d)
|
int rd_device_request_release(struct rd_device *d)
|
||||||
{
|
{
|
||||||
DBusMessage *m = NULL;
|
DBusMessage *m = NULL;
|
||||||
|
int res = 0;
|
||||||
|
|
||||||
if (d->priority <= INT32_MIN)
|
if (d->priority <= INT32_MIN)
|
||||||
return -EBUSY;
|
return -EBUSY;
|
||||||
|
@ -446,16 +447,22 @@ int rd_device_request_release(struct rd_device *d)
|
||||||
"RequestRelease")) == NULL) {
|
"RequestRelease")) == NULL) {
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
}
|
}
|
||||||
if (!dbus_message_append_args(m,
|
|
||||||
|
if (!dbus_message_append_args(m,
|
||||||
DBUS_TYPE_INT32, &d->priority,
|
DBUS_TYPE_INT32, &d->priority,
|
||||||
DBUS_TYPE_INVALID)) {
|
DBUS_TYPE_INVALID)) {
|
||||||
dbus_message_unref(m);
|
res = -ENOMEM;
|
||||||
return -ENOMEM;
|
goto exit;
|
||||||
}
|
|
||||||
if (!dbus_connection_send(d->connection, m, NULL)) {
|
|
||||||
return -EIO;
|
|
||||||
}
|
}
|
||||||
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)
|
int rd_device_complete_release(struct rd_device *d, int res)
|
||||||
|
|
Loading…
Reference in New Issue