mirror of
				https://gitlab.freedesktop.org/pipewire/pipewire.git
				synced 2025-11-03 09:01:54 -05:00 
			
		
		
		
	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
					
				
					 1 changed files with 14 additions and 7 deletions
				
			
		| 
						 | 
				
			
			@ -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)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue