From c630b9512122039558f73abb4efdedc98da7e268 Mon Sep 17 00:00:00 2001 From: brian Date: Tue, 22 Jun 1999 11:20:03 +0000 Subject: Don't get caught in an infinite recursion when PKT_ALIAS_REVERSE is set. Document PKT_ALIAS_REVERSE. Pointed out by: Jonathan Hanna PR: 12304 --- lib/libalias/alias.c | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) (limited to 'lib/libalias/alias.c') diff --git a/lib/libalias/alias.c b/lib/libalias/alias.c index 10e0ccc..8b18a73 100644 --- a/lib/libalias/alias.c +++ b/lib/libalias/alias.c @@ -1174,8 +1174,12 @@ PacketAliasIn(char *ptr, int maxpacketsize) struct ip *pip; int iresult; - if (packetAliasMode & PKT_ALIAS_REVERSE) - return PacketAliasOut(ptr, maxpacketsize); + if (packetAliasMode & PKT_ALIAS_REVERSE) { + packetAliasMode &= ~PKT_ALIAS_REVERSE; + iresult = PacketAliasOut(ptr, maxpacketsize); + packetAliasMode |= PKT_ALIAS_REVERSE; + return iresult; + } HouseKeeping(); ClearCheckNewLink(); @@ -1256,8 +1260,12 @@ PacketAliasOut(char *ptr, /* valid IP packet */ struct in_addr addr_save; struct ip *pip; - if (packetAliasMode & PKT_ALIAS_REVERSE) - return PacketAliasIn(ptr, maxpacketsize); + if (packetAliasMode & PKT_ALIAS_REVERSE) { + packetAliasMode &= ~PKT_ALIAS_REVERSE; + iresult = PacketAliasIn(ptr, maxpacketsize); + packetAliasMode |= PKT_ALIAS_REVERSE; + return iresult; + } HouseKeeping(); ClearCheckNewLink(); -- cgit v1.1