[gssdp/gssdp_1.0] client: Plug various leaks
- From: Jens Georg <jensgeorg src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gssdp/gssdp_1.0] client: Plug various leaks
- Date: Fri, 11 Sep 2020 06:25:37 +0000 (UTC)
commit 5c3bab723d5047fd98eba657cf124261f165c347
Author: Jens Georg <jgeorg z400 fritz box>
Date: Fri Sep 11 08:24:53 2020 +0200
client: Plug various leaks
Fixes #10
libgssdp/gssdp-client.c | 17 +++++++++++++----
1 file changed, 13 insertions(+), 4 deletions(-)
---
diff --git a/libgssdp/gssdp-client.c b/libgssdp/gssdp-client.c
index 39b8b76..5734d5d 100644
--- a/libgssdp/gssdp-client.c
+++ b/libgssdp/gssdp-client.c
@@ -463,6 +463,8 @@ gssdp_client_dispose (GObject *object)
client->priv->device.host_addr = NULL;
}
+ g_clear_object (&client->priv->device.address_mask);
+
G_OBJECT_CLASS (gssdp_client_parent_class)->dispose (object);
}
@@ -2019,17 +2021,24 @@ success:
continue;
}
- device->host_ip = g_strdup (p);
+ /* If we ended up here with host_ip not being NULL, p is equal to host_ip */
+ if (device->host_ip == NULL)
+ device->host_ip = g_strdup (p);
- bytes = (const guint8 *) &s4->sin_addr;
- device->host_addr = g_inet_address_new_from_bytes
- (bytes, G_SOCKET_FAMILY_IPV4);
+ if (device->host_addr == NULL) {
+ bytes = (const guint8 *) &s4->sin_addr;
+ g_clear_object (&device->host_addr);
+ device->host_addr = g_inet_address_new_from_bytes
+ (bytes, G_SOCKET_FAMILY_IPV4);
+ }
s4_mask = (struct sockaddr_in *) ifa->ifa_netmask;
memcpy (&(device->mask), s4_mask, sizeof (struct sockaddr_in));
net_addr.s_addr = (in_addr_t) s4->sin_addr.s_addr &
(in_addr_t) s4_mask->sin_addr.s_addr;
q = inet_ntop (AF_INET, &net_addr, net, sizeof (net));
+
+ if (device->address_mask == NULL)
{
// Just assume that the netmask we got is correct
int prefix;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]