From jh@cr1003333-a.crdva1.bc.home.com Sat Jun 19 22:16:23 1999
Return-Path: <jh@cr1003333-a.crdva1.bc.home.com>
Received: from cr1003333-a.crdva1.bc.home.com (cr1003333-a.crdva1.bc.wave.home.com [24.113.51.240])
	by hub.freebsd.org (Postfix) with ESMTP id 2A32314FA1
	for <FreeBSD-gnats-submit@freebsd.org>; Sat, 19 Jun 1999 22:16:22 -0700 (PDT)
	(envelope-from jh@cr1003333-a.crdva1.bc.home.com)
Received: (from jh@localhost)
	by cr1003333-a.crdva1.bc.home.com (8.9.3/8.9.3) id WAA05806;
	Sat, 19 Jun 1999 22:16:22 -0700 (PDT)
	(envelope-from jh)
Message-Id: <199906200516.WAA05806@cr1003333-a.crdva1.bc.home.com>
Date: Sat, 19 Jun 1999 22:16:22 -0700 (PDT)
From: Jonathan Hanna <jh@cr1003333-a.crdva1.bc.home.com>
Reply-To: pangolin@home.com
To: FreeBSD-gnats-submit@freebsd.org
Subject: infinite recursion in libalias with PKT_ALIAS_REVERSE
X-Send-Pr-Version: 3.2

>Number:         12304
>Category:       bin
>Synopsis:       infinite recursion in libalias with PKT_ALIAS_REVERSE
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    brian
>State:          closed
>Quarter:        
>Keywords:       
>Date-Required:  
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Sat Jun 19 22:20:00 PDT 1999
>Closed-Date:    Tue Jun 22 06:03:56 PDT 1999
>Last-Modified:  Tue Jun 22 06:04:38 PDT 1999
>Originator:     Jonathan Hanna
>Release:        FreeBSD 4.0-CURRENT i386
>Organization:
>Environment:

4.0-CURRENT
3.2-STABLE

>Description:

Setting PKT_ALIAS_REVERSE in libalias results in infinite
recursion of alternating alias-in and alias-out functions.

alias.c in libalias has this code:

int 
PacketAliasIn(char *ptr, int maxpacketsize)
{   
    struct in_addr alias_addr;
    struct ip *pip;
    int iresult;
    
    if (packetAliasMode & PKT_ALIAS_REVERSE) 
        return PacketAliasOut(ptr, maxpacketsize);
...

int 
PacketAliasOut(char *ptr,           /* valid IP packet */
               int  maxpacketsize   /* How much the packet data may grow
                                       (FTP and IRC inline changes) */
              )
{   
    int iresult;
    struct in_addr addr_save;
    struct ip *pip;
    
    if (packetAliasMode & PKT_ALIAS_REVERSE)
        return PacketAliasIn(ptr, maxpacketsize);
...

I noticed also that PKT_ALIAS_REVERSE is not documented int libalias.3. 


>How-To-Repeat:

Adding "-reverse" to a natd setup results in a core dump.

>Fix:

>Release-Note:
>Audit-Trail:
Responsible-Changed-From-To: freebsd-bugs->brian 
Responsible-Changed-By: brian 
Responsible-Changed-When: Sun Jun 20 15:09:28 PDT 1999 
Responsible-Changed-Why:  
I'll look after this. 
State-Changed-From-To: open->closed 
State-Changed-By: brian 
State-Changed-When: Tue Jun 22 06:03:56 PDT 1999 
State-Changed-Why:  
Fixed in -current.  I'll bring the changes back into stable shotrly. 
>Unformatted:
