Este «gran éxito» ha sido bautizado como GHOST, tiene su propio logo y de momento (habrá que esperar) no tiene dominio propio y web para hacer pruebas, cuestión de tiempo, para que cumpla con todos los requisitos (resumimos: nombre pegadizo, logo y dominio+web para hacer pruebas). Vamos a lo que nos interesa, quién, qué, cómo y el diámetro del cráter que podría dejar su explotación.
(157) resbuf->h_name = strcpy (hostname, name);
(125) hostname = (char *) h_alias_ptr + sizeof (*h_alias_ptr);
(124) h_alias_ptr = (char **) ((char *) h_addr_ptrs + sizeof (*h_addr_ptrs));
(122-123) h_addr_ptrs = (host_addr_list_t *) ((char *) host_addr + sizeof (*host_addr));
(121) host_addr = (host_addr_t *) *buffer;
(116) *buffer = new_buf;
(101) *buffer_size = size_needed;
(102) new_buf = (char *) realloc (*buffer, *buffer_size);
(85-86) size_needed = (sizeof (*host_addr) + sizeof (*h_addr_ptrs) + strlen (name) + 1);
int
__nss_hostname_digits_dots (const char *name, struct hostent *resbuf,
char **buffer, size_t *buffer_size,
size_t buflen, struct hostent **result,
enum nss_status *status, int af, int *h_errnop)
size_needed = (sizeof (*host_addr)
+ sizeof (*h_addr_ptrs)
+ sizeof (*h_alias_ptr) + strlen (name) + 1);
Comprobamos como se ha añadido el elemento faltante: ‘h_alias_ptr‘. Bug neutralizado.
ja ja ja… últimamente suenas como a locutor de radio… me recordaste a Three Dog de Fallout 3