diff --git a/src/unix/darwin.c b/src/unix/darwin.c index dab6ca99..cf95da21 100644 --- a/src/unix/darwin.c +++ b/src/unix/darwin.c @@ -258,8 +258,10 @@ int uv_interface_addresses(uv_interface_address_t** addresses, int* count) { } *addresses = uv__malloc(*count * sizeof(**addresses)); - if (!(*addresses)) + if (!(*addresses)) { + freeifaddrs(addrs); return -ENOMEM; + } address = *addresses; diff --git a/src/unix/freebsd.c b/src/unix/freebsd.c index c69608b1..ddfd0f28 100644 --- a/src/unix/freebsd.c +++ b/src/unix/freebsd.c @@ -373,8 +373,10 @@ int uv_interface_addresses(uv_interface_address_t** addresses, int* count) { } *addresses = uv__malloc(*count * sizeof(**addresses)); - if (!(*addresses)) + if (!(*addresses)) { + freeifaddrs(addrs); return -ENOMEM; + } address = *addresses; diff --git a/src/unix/linux-core.c b/src/unix/linux-core.c index e6e68283..3ff6fb15 100644 --- a/src/unix/linux-core.c +++ b/src/unix/linux-core.c @@ -814,8 +814,10 @@ int uv_interface_addresses(uv_interface_address_t** addresses, return 0; *addresses = uv__malloc(*count * sizeof(**addresses)); - if (!(*addresses)) + if (!(*addresses)) { + freeifaddrs(addrs); return -ENOMEM; + } address = *addresses; diff --git a/src/unix/netbsd.c b/src/unix/netbsd.c index 29f2a4de..ca48550f 100644 --- a/src/unix/netbsd.c +++ b/src/unix/netbsd.c @@ -298,8 +298,10 @@ int uv_interface_addresses(uv_interface_address_t** addresses, int* count) { *addresses = uv__malloc(*count * sizeof(**addresses)); - if (!(*addresses)) + if (!(*addresses)) { + freeifaddrs(addrs); return -ENOMEM; + } address = *addresses; diff --git a/src/unix/openbsd.c b/src/unix/openbsd.c index c8d54599..e6ca7a8b 100644 --- a/src/unix/openbsd.c +++ b/src/unix/openbsd.c @@ -313,8 +313,10 @@ int uv_interface_addresses(uv_interface_address_t** addresses, *addresses = uv__malloc(*count * sizeof(**addresses)); - if (!(*addresses)) + if (!(*addresses)) { + freeifaddrs(addrs); return -ENOMEM; + } address = *addresses; diff --git a/src/unix/sunos.c b/src/unix/sunos.c index 05b7a114..0c46817b 100644 --- a/src/unix/sunos.c +++ b/src/unix/sunos.c @@ -693,8 +693,10 @@ int uv_interface_addresses(uv_interface_address_t** addresses, int* count) { } *addresses = uv__malloc(*count * sizeof(**addresses)); - if (!(*addresses)) + if (!(*addresses)) { + freeifaddrs(addrs); return -ENOMEM; + } address = *addresses;