diff --git a/ChangeLog b/ChangeLog index 3c130a1dd7..bda4b0b212 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +Thu Feb 20 22:21:26 2014 Tanaka Akira + + * ext/socket/raddrinfo.c (numeric_getaddrinfo): Use xcalloc. + Suggested by Eric Wong. + https://bugs.ruby-lang.org/issues/9525#note-14 + Thu Feb 20 11:21:13 2014 Masaki Matsushita * hash.c (rb_hash_flatten): fix behavior of flatten(-1). diff --git a/ext/socket/raddrinfo.c b/ext/socket/raddrinfo.c index 3eb92dabb9..b5622738f3 100644 --- a/ext/socket/raddrinfo.c +++ b/ext/socket/raddrinfo.c @@ -203,9 +203,8 @@ numeric_getaddrinfo(const char *node, const char *service, for (i = numberof(list)-1; 0 <= i; i--) { if ((hint_socktype == 0 || hint_socktype == list[i].socktype) && (hint_protocol == 0 || list[i].protocol == 0 || hint_protocol == list[i].protocol)) { - struct addrinfo *ai0 = xmalloc(sizeof(struct addrinfo)); + struct addrinfo *ai0 = xcalloc(1, sizeof(struct addrinfo)); struct sockaddr_in6 *sa = xmalloc(sizeof(struct sockaddr_in6)); - MEMZERO(ai0, sizeof(struct addrinfo), 1); INIT_SOCKADDR_IN6(sa, sizeof(struct sockaddr_in6)); memcpy(&sa->sin6_addr, ipv6addr, sizeof(ipv6addr)); sa->sin6_port = htons(port); @@ -229,9 +228,8 @@ numeric_getaddrinfo(const char *node, const char *service, for (i = numberof(list)-1; 0 <= i; i--) { if ((hint_socktype == 0 || hint_socktype == list[i].socktype) && (hint_protocol == 0 || list[i].protocol == 0 || hint_protocol == list[i].protocol)) { - struct addrinfo *ai0 = xmalloc(sizeof(struct addrinfo)); + struct addrinfo *ai0 = xcalloc(1, sizeof(struct addrinfo)); struct sockaddr_in *sa = xmalloc(sizeof(struct sockaddr_in)); - MEMZERO(ai0, sizeof(struct addrinfo), 1); INIT_SOCKADDR_IN(sa, sizeof(struct sockaddr_in)); memcpy(&sa->sin_addr, ipv4addr, sizeof(ipv4addr)); sa->sin_port = htons(port);