From 1cbb0e766dbf2e25fd1bce9fb9f979019953b085 Mon Sep 17 00:00:00 2001 From: Ted Percival Date: Tue, 4 Aug 2009 15:33:56 -0600 Subject: [PATCH] Fix crash in rk_freeifaddrs due to freeing an invalid pointer Crash occurs on Linux systems that support AF_NETLINK but do not have getifaddrs() in libc (eg. SuSE 8.1). Signed-off-by: Love Hornquist Astrand --- lib/roken/getifaddrs.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/lib/roken/getifaddrs.c b/lib/roken/getifaddrs.c index c9d2446aa..281460add 100644 --- a/lib/roken/getifaddrs.c +++ b/lib/roken/getifaddrs.c @@ -853,6 +853,13 @@ rk_getifaddrs(struct ifaddrs **ifap) return 0; } +void ROKEN_LIB_FUNCTION +rk_freeifaddrs(struct ifaddrs *ifp) +{ + /* AF_NETLINK method uses a single allocation for all interfaces */ + free(ifp); +} + #else /* !AF_NETLINK */ /* @@ -1175,8 +1182,6 @@ rk_getifaddrs(struct ifaddrs **ifap) return ret; } -#endif /* !AF_NETLINK */ - void ROKEN_LIB_FUNCTION rk_freeifaddrs(struct ifaddrs *ifp) { @@ -1198,6 +1203,8 @@ rk_freeifaddrs(struct ifaddrs *ifp) } } +#endif /* !AF_NETLINK */ + #ifdef TEST void