Skip to content

Commit

Permalink
Fixed bug #76143 (Memory corruption: arbitrary NUL overwrite)
Browse files Browse the repository at this point in the history
  • Loading branch information
laruence committed Apr 10, 2018
1 parent 09d7ffa commit 8cfb648
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 13 deletions.
3 changes: 3 additions & 0 deletions NEWS
Expand Up @@ -22,6 +22,9 @@ PHP NEWS
. Fixed bug #76113 (mbstring does not build with Oniguruma 6.8.1).
(chrullrich, cmb)

- phpdbg:
. Fixed bug #76143 (Memory corruption: arbitrary NUL overwrite). (Laruence)

- SPL:
. Fixed bug #76131 (mismatch arginfo for splarray constructor).
(carusogabriel)
Expand Down
21 changes: 8 additions & 13 deletions sapi/phpdbg/phpdbg_io.c
Expand Up @@ -290,7 +290,7 @@ PHPDBG_API int phpdbg_create_listenable_socket(const char *addr, unsigned short
}
}

snprintf(port_buf, 7, "%u", port);
snprintf(port_buf, sizeof(port_buf), "%u", port);
if (!any_addr) {
rc = getaddrinfo(addr, port_buf, &hints, &res);
} else {
Expand All @@ -301,20 +301,18 @@ PHPDBG_API int phpdbg_create_listenable_socket(const char *addr, unsigned short
#ifndef PHP_WIN32
if (rc == EAI_SYSTEM) {
char buf[128];
int wrote;

wrote = snprintf(buf, 128, "Could not translate address '%s'", addr);
buf[wrote] = '\0';
snprintf(buf, sizeof(buf), "Could not translate address '%s'", addr);

zend_quiet_write(PHPDBG_G(io)[PHPDBG_STDERR].fd, buf, strlen(buf));

return sock;
} else {
#endif
char buf[256];
int wrote;

wrote = snprintf(buf, 256, "Host '%s' not found. %s", addr, estrdup(gai_strerror(rc)));
buf[wrote] = '\0';
snprintf(buf, sizeof(buf), "Host '%s' not found. %s", addr, estrdup(gai_strerror(rc)));

zend_quiet_write(PHPDBG_G(io)[PHPDBG_STDERR].fd, buf, strlen(buf));

return sock;
Expand All @@ -324,13 +322,10 @@ PHPDBG_API int phpdbg_create_listenable_socket(const char *addr, unsigned short
return sock;
}

if((sock = socket(res->ai_family, res->ai_socktype, res->ai_protocol)) == -1) {
char buf[128];
int wrote;
if ((sock = socket(res->ai_family, res->ai_socktype, res->ai_protocol)) == -1) {
const char *msg = "Unable to create socket";

wrote = sprintf(buf, "Unable to create socket");
buf[wrote] = '\0';
zend_quiet_write(PHPDBG_G(io)[PHPDBG_STDERR].fd, buf, strlen(buf));
zend_quiet_write(PHPDBG_G(io)[PHPDBG_STDERR].fd, msg, strlen(msg));

return sock;
}
Expand Down

0 comments on commit 8cfb648

Please sign in to comment.