diff options
Diffstat (limited to 'libc/dns/net/gethnamaddr.c')
-rw-r--r-- | libc/dns/net/gethnamaddr.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/libc/dns/net/gethnamaddr.c b/libc/dns/net/gethnamaddr.c index 8f5800a..42f0d0a 100644 --- a/libc/dns/net/gethnamaddr.c +++ b/libc/dns/net/gethnamaddr.c @@ -640,6 +640,9 @@ android_read_hostent(FILE* proxy, struct hostent* hp, char* hbuf, size_t hbuflen ptr += size; } + // Fix alignment after variable-length data. + ptr = (char*)ALIGN(ptr); + int aliases_len = ((int)(aliases - aliases_ptrs) + 1) * sizeof(*hp->h_aliases); if (ptr + aliases_len > hbuf_end) { goto nospc; @@ -674,6 +677,9 @@ android_read_hostent(FILE* proxy, struct hostent* hp, char* hbuf, size_t hbuflen ptr += size; } + // Fix alignment after variable-length data. + ptr = (char*)ALIGN(ptr); + int addrs_len = ((int)(addr_p - addr_ptrs) + 1) * sizeof(*hp->h_addr_list); if (ptr + addrs_len > hbuf_end) { goto nospc; |