From e6b18ffaea7d557eec3028a37c043da67a78550c Mon Sep 17 00:00:00 2001 From: David Herrmann Date: Wed, 26 Aug 2015 12:30:56 +0200 Subject: sd-dhcp: don't randomly ref objects In our API design, getter-functions don't ref objects. Calls like foo_get_bar() will not ref 'bar'. We never do that and there is no real reason to do it in single threaded APIs. If you need a ref-count, you better take it yourself *BEFORE* doing anything else on the parent object (as this might invalidate your pointer). Right now, sd_dhcp?_get_lease() refs the lease it returns. A lot of code-paths in systemd do not expect this and thus leak the lease reference. Fix this by changing the API to not ref returned objects. --- src/libsystemd-network/sd-dhcp6-client.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/libsystemd-network/sd-dhcp6-client.c') diff --git a/src/libsystemd-network/sd-dhcp6-client.c b/src/libsystemd-network/sd-dhcp6-client.c index bc17c6adc5..10c3654020 100644 --- a/src/libsystemd-network/sd-dhcp6-client.c +++ b/src/libsystemd-network/sd-dhcp6-client.c @@ -260,7 +260,7 @@ int sd_dhcp6_client_get_lease(sd_dhcp6_client *client, sd_dhcp6_lease **ret) { if (!client->lease) return -ENOMSG; - *ret = sd_dhcp6_lease_ref(client->lease); + *ret = client->lease; return 0; } -- cgit v1.2.3-54-g00ecf