9fans - fans of the OS Plan 9 from Bell Labs
 help / color / mirror / Atom feed
* [9fans] libc/strcmp bug?
@ 2002-08-10  0:35 Skip Tavakkolian
  2002-08-10  4:46 ` Alexander Viro
  2002-08-10 23:43 ` david presotto
  0 siblings, 2 replies; 5+ messages in thread
From: Skip Tavakkolian @ 2002-08-10  0:35 UTC (permalink / raw)
  To: 9fans

I believe there is a bug in /sys/src/libc/port/strcmp.c, because it
does not check for null pointers getting passed in before
dereferencing them.  I ran into it when attempting to Post some mail;
'marshal' dies with this message:

marshal 2014: suicide: sys: trap: fault read addr=0x0 pc=0x00006feb

Inspection points to the strcmp:

term% acid 2014
/proc/2014/text:386 plan 9 executable

/sys/lib/acid/port
/sys/lib/acid/386
acid: stk()
At pc:0x00006feb:strcmp+0xe /sys/src/libc/port/strcmp.c:10
strcmp(s1=0x00000000,s2=0x00013c5a) /sys/src/libc/port/strcmp.c:5
	called from islikeatty+0x32 /sys/src/cmd/upas/common/libsys.c:709
islikeatty(fd=0x00000000) /sys/src/cmd/upas/common/libsys.c:701
	called from holdon+0xf /sys/src/cmd/upas/common/libsys.c:719
holdon() /sys/src/cmd/upas/common/libsys.c:715
	called from main+0x856 /sys/src/cmd/upas/marshal/marshal.c:271
main(argv=0x7fffefec,argc=0x00000000) /sys/src/cmd/upas/marshal/marshal.c:162
	called from _main+0x31 /sys/src/libc/386/main9.s:16
acid:

I'm not sure why the first arg to strcmp was null.  I'm still investigating.



^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [9fans] libc/strcmp bug?
  2002-08-10  0:35 [9fans] libc/strcmp bug? Skip Tavakkolian
@ 2002-08-10  4:46 ` Alexander Viro
  2002-08-10  5:44   ` arisawa
  2002-08-10 23:43 ` david presotto
  1 sibling, 1 reply; 5+ messages in thread
From: Alexander Viro @ 2002-08-10  4:46 UTC (permalink / raw)
  To: 9fans



On Fri, 9 Aug 2002, Skip Tavakkolian wrote:

> I believe there is a bug in /sys/src/libc/port/strcmp.c, because it
> does not check for null pointers getting passed in before
> dereferencing them.

Not a libc bug.  Making sure that arguments of strcmp() are non-NULL is
responsibility of caller.



^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [9fans] libc/strcmp bug?
  2002-08-10  4:46 ` Alexander Viro
@ 2002-08-10  5:44   ` arisawa
  0 siblings, 0 replies; 5+ messages in thread
From: arisawa @ 2002-08-10  5:44 UTC (permalink / raw)
  To: 9fans

Hello,

Viro said:
>On Fri, 9 Aug 2002, Skip Tavakkolian wrote:
>
>> I believe there is a bug in /sys/src/libc/port/strcmp.c, because
it
>> does not check for null pointers getting passed in before
>> dereferencing them.
>
>Not a libc bug.  Making sure that arguments of strcmp() are
non-NULL >is responsibility of caller.

I agree with Viro.
If null pointer is allowed, strcmp() should be something like
bellow:

int
xstrcmp(char *s, char *t)
{
        if(s == nil){
                if(t)
                        return -1;
                return 0;
        }
        if(t)
                return strcmp(s,t);
        return 1;
}

I used this code somewhere because it was useful.

Kenji Arisawa


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [9fans] libc/strcmp bug?
  2002-08-10  0:35 [9fans] libc/strcmp bug? Skip Tavakkolian
  2002-08-10  4:46 ` Alexander Viro
@ 2002-08-10 23:43 ` david presotto
  1 sibling, 0 replies; 5+ messages in thread
From: david presotto @ 2002-08-10 23:43 UTC (permalink / raw)
  To: 9fans

That's a bug in marshal.
----- Original Message -----
From: "Skip Tavakkolian" <fst@centurytel.net>
To: <9fans@cse.psu.edu>
Sent: Friday, August 09, 2002 8:35 PM
Subject: [9fans] libc/strcmp bug?


> I believe there is a bug in /sys/src/libc/port/strcmp.c, because it
> does not check for null pointers getting passed in before
> dereferencing them.  I ran into it when attempting to Post some mail;
> 'marshal' dies with this message:
>
> marshal 2014: suicide: sys: trap: fault read addr=0x0 pc=0x00006feb
>
> Inspection points to the strcmp:
>
> term% acid 2014
> /proc/2014/text:386 plan 9 executable
>
> /sys/lib/acid/port
> /sys/lib/acid/386
> acid: stk()
> At pc:0x00006feb:strcmp+0xe /sys/src/libc/port/strcmp.c:10
> strcmp(s1=0x00000000,s2=0x00013c5a) /sys/src/libc/port/strcmp.c:5
> called from islikeatty+0x32 /sys/src/cmd/upas/common/libsys.c:709
> islikeatty(fd=0x00000000) /sys/src/cmd/upas/common/libsys.c:701
> called from holdon+0xf /sys/src/cmd/upas/common/libsys.c:719
> holdon() /sys/src/cmd/upas/common/libsys.c:715
> called from main+0x856 /sys/src/cmd/upas/marshal/marshal.c:271
> main(argv=0x7fffefec,argc=0x00000000)
/sys/src/cmd/upas/marshal/marshal.c:162
> called from _main+0x31 /sys/src/libc/386/main9.s:16
> acid:
>
> I'm not sure why the first arg to strcmp was null.  I'm still
investigating.
>
>



^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [9fans] libc/strcmp bug?
@ 2002-08-10  3:23 Skip Tavakkolian
  0 siblings, 0 replies; 5+ messages in thread
From: Skip Tavakkolian @ 2002-08-10  3:23 UTC (permalink / raw)
  To: 9fans

Of course. My mistake.

> Not a libc bug.  Making sure that arguments of strcmp() are non-NULL is
> responsibility of caller.



^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2002-08-10 23:43 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2002-08-10  0:35 [9fans] libc/strcmp bug? Skip Tavakkolian
2002-08-10  4:46 ` Alexander Viro
2002-08-10  5:44   ` arisawa
2002-08-10 23:43 ` david presotto
2002-08-10  3:23 Skip Tavakkolian

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).