> On 12/16/2002 9:45 PM, Vincent Jardin wrote:
> > 
> > With FreeBSD, there are many ways to create a recursive local encapsulation 
> > loop within the IPv4 and IPv6 stack.
> ...
> > There is a simple local solution that is used by gif_output() that is not 
> > protected by any mutex:
> ..
> >     if (++called > max_gif_nesting) {
> >             log(LOG_NOTICE,
> >                 "gif_output: recursively called too many times(%d)\n",
> >                 called);
> >             m_freem(m);
> >             error = EIO;    /* is there better errno? */
> >             goto end;
> >     }
> > 
> > I am wondering if a more generic solution could be found, however I do not 
> > have any idea yet ;-(

Since we now have m_tag support, we could implement the solution OpenBSD
uses which catches actual loops instead of just refusing to nest more then
a certain amount.  See sys/net/if_gif.c rev 1.19.

-- Brooks

-- 
Any statement of the form "X is the one, true Y" is FALSE.
PGP fingerprint 655D 519C 26A7 82E7 2529  9BF0 5D8E 8BE9 F238 1AD4

Attachment: msg07896/pgp00000.pgp
Description: PGP signature

Reply via email to