From a6ae6a8b17b31d759ae90f5f6b33cfd5640d70f5 Mon Sep 17 00:00:00 2001 From: mame Date: Wed, 2 Oct 2013 12:41:28 +0000 Subject: * ext/socket/ifaddr.c (rsock_getifaddrs): fix possible memory leak. When a system had no interface, this function used xmalloc for root but did not return any reference to it. This patch fixes it by immediately returning an empty array if no interface is found. Coverity Scan found this bug. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43121 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ext/socket/ifaddr.c | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'ext/socket/ifaddr.c') diff --git a/ext/socket/ifaddr.c b/ext/socket/ifaddr.c index 5783dfc869..16cd47be5a 100644 --- a/ext/socket/ifaddr.c +++ b/ext/socket/ifaddr.c @@ -105,6 +105,10 @@ rsock_getifaddrs(void) if (ret == -1) rb_sys_fail("getifaddrs"); + if (!ifaddrs) { + return rb_ary_new(); + } + numifaddrs = 0; for (ifa = ifaddrs; ifa != NULL; ifa = ifa->ifa_next) numifaddrs++; -- cgit v1.2.3