20 lines
988 B
Text
20 lines
988 B
Text
- check whether 'mask' is NULL before dereferencing it
|
|
- on OpenBSD netmasks returned by getifaddrs(3) may have a zero af_family
|
|
|
|
Index: libgssdp/gssdp-net-posix.c
|
|
--- libgssdp/gssdp-net-posix.c.orig
|
|
+++ libgssdp/gssdp-net-posix.c
|
|
@@ -324,10 +324,11 @@ get_netmask (struct sockaddr *address,
|
|
GError *error = NULL;
|
|
|
|
g_return_val_if_fail (address != NULL, NULL);
|
|
- g_return_val_if_fail (address->sa_family == mask->sa_family, NULL);
|
|
+ g_return_val_if_fail (mask != NULL, NULL);
|
|
+ g_return_val_if_fail (address->sa_family == mask->sa_family ||
|
|
+ mask->sa_family == 0, NULL);
|
|
g_return_val_if_fail (address->sa_family == G_SOCKET_FAMILY_IPV4 ||
|
|
address->sa_family == G_SOCKET_FAMILY_IPV6, NULL);
|
|
- g_return_val_if_fail (mask != NULL, NULL);
|
|
|
|
if (address->sa_family == G_SOCKET_FAMILY_IPV4) {
|
|
struct sockaddr_in *s4 = (struct sockaddr_in *) address;
|