--- glibc-2.5.orig/resolv/res_send.c +++ glibc-2.5/resolv/res_send.c @@ -739,7 +739,9 @@ send_vc(res_state statp, } } else len = resplen; - if (len < HFIXEDSZ) { + if (len < HFIXEDSZ || + (len < HFIXEDSZ + QFIXEDSZ && + anssiz >= HFIXEDSZ + QFIXEDSZ)) { /* * Undersized message. */ @@ -951,7 +953,9 @@ send_dg(res_state statp, goto err_out; } *gotsomewhere = 1; - if (resplen < HFIXEDSZ) { + if (resplen < HFIXEDSZ || + (resplen < HFIXEDSZ + QFIXEDSZ && + anssiz >= HFIXEDSZ + QFIXEDSZ)) { /* * Undersized message. */