[SSSD] [PATCH] Convert IN_MULTICAST parameter to host order
Lukas Slebodnik
lslebodn at redhat.com
Fri Sep 13 07:29:18 UTC 2013
On (12/09/13 18:47), Jakub Hrozek wrote:
>The attached patch fixes
>https://bugzilla.redhat.com/show_bug.cgi?id=1007475#c2
>From eaadcee0fc1335e7c37b2c04ae4fb39fe7a58b59 Mon Sep 17 00:00:00 2001
>From: Jakub Hrozek <jhrozek at redhat.com>
>Date: Thu, 12 Sep 2013 18:45:54 +0200
>Subject: [PATCH] Convert IN_MULTICAST parameter to host order
>
>https://fedorahosted.org/sssd/ticket/2087
>
>IN_MULTICAST accepts address in the host order, but network order was
>supplied.
>---
> src/monitor/monitor_netlink.c | 2 +-
> src/providers/ldap/sdap_async_sudo_hostinfo.c | 2 +-
> 2 files changed, 2 insertions(+), 2 deletions(-)
>
>diff --git a/src/monitor/monitor_netlink.c b/src/monitor/monitor_netlink.c
>index c013423780f318f2a0f12dd5fa50babe12cdcd18..6baf13652b3c42ad92669272f262ac8b59450efe 100644
>--- a/src/monitor/monitor_netlink.c
>+++ b/src/monitor/monitor_netlink.c
>@@ -610,7 +610,7 @@ static bool route_is_multicast(struct rtnl_route *route_obj)
> return false;
> }
>
>- return IN_MULTICAST(addr4->s_addr);
>+ return IN_MULTICAST(ntohl(addr4->s_addr));
> } else if (nl_addr_get_family(nl) == AF_INET6) {
> addr6 = nl_addr_get_binary_addr(nl);
> if (!addr6) {
>diff --git a/src/providers/ldap/sdap_async_sudo_hostinfo.c b/src/providers/ldap/sdap_async_sudo_hostinfo.c
>index 4e33babd505dd218ddfd37af21e62fb0bcbe451c..f0c728108f19d965c4b1f07f1067d6862fd0c371 100644
>--- a/src/providers/ldap/sdap_async_sudo_hostinfo.c
>+++ b/src/providers/ldap/sdap_async_sudo_hostinfo.c
>@@ -239,7 +239,7 @@ static int sdap_sudo_get_ip_addresses(TALLOC_CTX *mem_ctx,
> }
>
> /* ignore multicast */
>- if (IN_MULTICAST(ip4_addr->sin_addr.s_addr)) {
>+ if (IN_MULTICAST(ntohl(ip4_addr->sin_addr.s_addr))) {
> continue;
> }
IN_MULTICAST(a) is defined as
((((in_addr_t)(a)) & 0xf0000000) == 0xe0000000)
Therefore "argument a" have to be in host byte order, because
it dost not make sense to do a bitwise operation
with numbers of different byte orders.
With this patch, ntohl is used in each macro IN_MULTICAST.
bash$ git grep -n IN_MULTICAST
src/monitor/monitor_netlink.c:613: return IN_MULTICAST(ntohl(addr4->s_addr));
src/providers/dp_dyndns.c:181: if (IN_MULTICAST(ntohl(addr->s_addr))) {
src/providers/ldap/sdap_async_sudo_hostinfo.c:242: if (IN_MULTICAST(ntohl(ip4_addr->sin_addr.
ACK
LS
More information about the sssd-devel
mailing list