It seems that sequential A-type DNS reply data overwrites data returned by AAAA-type DNS reply data prior to that.
convert_hostent_to_gaih_addrtuple: replacing "free(*result);" with "while(*result) result = &result->next;" does the trick.
You can try it out on libc6=2.15-0ubuntu10.17 by a simple change:
cd157: e8 84 1e f5 ff -> e8 56 01 00 00 cd2b2: 66 66 66 66 66 2e 0f 1f 84 00 00 -> e3 08 49 89 cf 48 8b 09 eb f6 c3
It seems that sequential A-type DNS reply data overwrites data returned by AAAA-type DNS reply data prior to that.
convert_ hostent_ to_gaih_ addrtuple: replacing "free(*result);" with "while(*result) result = &result->next;" does the trick.
You can try it out on libc6=2. 15-0ubuntu10. 17 by a simple change:
cd157: e8 84 1e f5 ff -> e8 56 01 00 00
cd2b2: 66 66 66 66 66 2e 0f 1f 84 00 00 -> e3 08 49 89 cf 48 8b 09 eb f6 c3