Date: Sun, 25 Jun 2000 23:44:23 -0700 (PDT) From: "tjk@tksoft.com" <tjk@tksoft.com> To: wes@softweyr.com (Wes Peters) Cc: dima@rdy.com, y-koga@jp.FreeBSD.org, wollman@khavrinen.lcs.mit.edu, silby@silby.com, freebsd-security@FreeBSD.ORG Subject: Re: Fwd: WuFTPD: Providing *remote* root since at least1994 Message-ID: <200006260644.XAA15576@uno.tksoft.com> In-Reply-To: <3956D5A3.1C2E8D06@softweyr.com> from "Wes Peters" at Jun 25, 0 10:01:39 pm
next in thread | previous in thread | raw e-mail | index | archive | help
The bottom line is that the wu-ftpd bug is caused by a line of code
which uses a user supplied string as the format string passed to
printf(). printf is: int printf(const char *, ...), where
the first argument is the format string. If the format string
is supplied by the user, then the function can do unintended
things.
Troy
>
> Dima Ruban wrote:
> >
> > Wes Peters writes:
> > > Dima Ruban wrote:
> > > >
> > > > What's the purpose of this patch?
> > > > I didn't look at the code, but to me it sounds like it's pretty much
> > > > irrelevant whether you gonna use ``foo(fmt, string)'' or ``foo(string)''
> > >
> > > If string contains formatting codes, foo("%s", string) does the right
> > > thing and just puts out the formatting codes in the string. foo(string)
> > > tries to interpret the embedded format codes and blows the stack.
> > >
> >
> > Well, if in addition to "fmt" argument, string will contain formatting code[s],
> > the result will be just the same. (at least with printf() family).
>
> Since when did printf try to interpret formatting codes within an argument
> string? In fact, it does not:
>
> wes@homer$ cat foo.c
> main()
> {
> char *s = "This is a %s string.\n";
>
> printf("\nWith format string:\n");
> printf("%s", s);
>
> printf("\nWithout format string:\n");
> printf(s);
> }
> wes@homer$ ./foo
>
> With format string:
> This is a %s string.
>
> Without format string:
> This is a This is a %s string.
> string.
>
> Notice the second output is scrambled, as printf apparently finds a
> pointer to the string on the stack and prints it within itself. Oops.
> As you can see, the first printf using the %s code worked fine.
>
> --
> "Where am I, and what am I doing in this handbasket?"
>
> Wes Peters Softweyr LLC
> wes@softweyr.com http://softweyr.com/
>
>
> To Unsubscribe: send mail to majordomo@FreeBSD.org
> with "unsubscribe freebsd-security" in the body of the message
>
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-security" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200006260644.XAA15576>
