[9695] in bugtraq

home help back first fref pref prev next nref lref last post

Re: Tetrix 1.13.16 is Vulnerable

daemon@ATHENA.MIT.EDU (Pavel Machek)
Sat Feb 20 18:29:34 1999

Date: 	Fri, 19 Feb 1999 11:04:42 +0100
Reply-To: Pavel Machek <pavel@BUG.UCW.CZ>
From: Pavel Machek <pavel@BUG.UCW.CZ>
X-To:         Steven Hodges <nsn@RAW.VELOWEB.COM>
To: BUGTRAQ@NETSPACE.ORG
In-Reply-To:  <Pine.LNX.4.05.9902171302470.1095-100000@raw.veloweb.com>; from
              Steven Hodges on Wed, Feb 17, 1999 at 01:03:45PM -0800

Hi!

>    I have recently found a buffer overflow in a TetriNet daemon for Linux
> called "Tetrix". To exploit this bug, you will need a hostname longer than
> 122 characters, and any method of connecting to the host on port 31457.
> Once you are connected, the overflow should take place.
>
> here is the patch!

...which does not work.

> diff -ru tetrinetx-1.13.16.orig/src/net.c tetrinetx-1.13.16/src/net.c
> --- tetrinetx-1.13.16.orig/src/net.c	Thu Dec 24 00:24:50 1998
> +++ tetrinetx-1.13.16/src/net.c	Sun Feb 14 16:22:11 1999
> @@ -250,15 +250,17 @@
>  unsigned long ip;
>  {
>    struct hostent *hp; unsigned long addr=ip;
> -  unsigned char *p; static char s[121];
> -/*  alarm(10);*/
> +  unsigned char *p; static char s[UHOSTLEN];
> +
>    hp=gethostbyaddr((char *)&addr,sizeof(addr),AF_INET); /*alarm(0);*/
>    if (hp==NULL) {
>      p=(unsigned char *)&addr;
>      sprintf(s,"%u.%u.%u.%u",p[0],p[1],p[2],p[3]);
>      return s;
>    }
> -  strcpy(s,hp->h_name); return s;
> +  strncpy(s,hp->h_name,(UHOSTLEN-1));
> +  s[strlen(s)]='\0';
> +  return s;

If s is not null-terminated after strncpy...

       The  strncpy()  function  is similar, except that not more
       than n bytes of src are copied. Thus, if there is no  null
       byte among the first n bytes of src, the result wil not be
       null-terminated.

...then s[strlen(s)]='\0'; will not help it - because strlen() looks
for \0 :-).

s[UHOSTLEN-1]='\0'; would be correct.

								Pavel

--
I'm really pavel@atrey.karlin.mff.cuni.cz. 	   Pavel
Look at http://atrey.karlin.mff.cuni.cz/~pavel/ ;-).

home help back first fref pref prev next nref lref last post