diff options
author | David Walker <dave@mudsite.com> | 2016-08-24 11:22:05 -0600 |
---|---|---|
committer | David Walker <dave@mudsite.com> | 2016-08-24 11:22:05 -0600 |
commit | d59af68fd9d8babba99fa52291982c279a5aae40 (patch) | |
tree | 76591830ae38dd0a110886b01734db905e10ede9 /ext/sockets/sockets.c | |
parent | 7373ce914914e9a434216554a7e29aa4d1775d97 (diff) | |
download | php-git-d59af68fd9d8babba99fa52291982c279a5aae40.tar.gz |
Make sure to copy the right amount of mem over. IPv6 can be larger than struct sockaddr
Diffstat (limited to 'ext/sockets/sockets.c')
-rw-r--r-- | ext/sockets/sockets.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/ext/sockets/sockets.c b/ext/sockets/sockets.c index c39a6172ae..962fdbea66 100644 --- a/ext/sockets/sockets.c +++ b/ext/sockets/sockets.c @@ -2533,7 +2533,7 @@ PHP_FUNCTION(socket_addrinfo_lookup) if (strcmp(ZSTR_VAL(key), "ai_flags") == 0) { hints.ai_flags = Z_LVAL_P(hint); } else if (strcmp(ZSTR_VAL(key), "ai_socktype") == 0) { - hints.ai_socktype= Z_LVAL_P(hint); + hints.ai_socktype = Z_LVAL_P(hint); } else if (strcmp(ZSTR_VAL(key), "ai_protocol") == 0) { hints.ai_protocol = Z_LVAL_P(hint); } else if (strcmp(ZSTR_VAL(key), "ai_family") == 0) { @@ -2556,8 +2556,8 @@ PHP_FUNCTION(socket_addrinfo_lookup) res = emalloc(sizeof(struct addrinfo)); memcpy(res, rp, sizeof(struct addrinfo)); - res->ai_addr = emalloc(sizeof(struct sockaddr)); - memcpy(res->ai_addr, rp->ai_addr, sizeof(struct sockaddr)); + res->ai_addr = emalloc(rp->ai_addrlen); + memcpy(res->ai_addr, rp->ai_addr, rp->ai_addrlen); if (rp->ai_canonname != NULL) { res->ai_canonname = estrdup(rp->ai_canonname); @@ -2723,7 +2723,7 @@ PHP_FUNCTION(socket_addrinfo_explain) } array_init(&sockaddr); - switch(ai->ai_addr->sa_family) { + switch(ai->ai_family) { case AF_INET: { struct sockaddr_in *sa = (struct sockaddr_in *) ai->ai_addr; |