[erlang-bugs] Potential endless loop in DNS resolver

Florian Weimer <>
Fri Jan 11 22:43:41 CET 2008

It seems to me that the following code from lib/kernel/src/inet_dns.erl
contains an endless loop:

dn_exp([N1,N2 | T], Buffer, Name) when N1 band ?INDIR_MASK =:= ?INDIR_MASK ->
    Offset = ((N1 band 16#3f) bsl 8) bor N2,
    case catch nthtail(Offset, Buffer) of
	{'EXIT', _} -> error;
	NDn -> 
	    %% We have to keep the Tail of original Dn in order to
	    %% prohibit ending up with the tail from an offset.
	    case dn_exp(NDn, Buffer, Name) of
		{ExpName, _} -> {ExpName, T};
		Res          -> Res

A compression reference which points to itself results in dn_exp being
called with the same argument over and over again.

More information about the erlang-bugs mailing list