Subject: Re: pkg/34422: security/sudo doesn't link
To: None <joerg@NetBSD.org, gnats-admin@netbsd.org, pkgsrc-bugs@netbsd.org,>
From: Jon Olsson <jon@univits.com>
List: pkgsrc-bugs
Date: 08/31/2006 09:25:07
The following reply was made to PR pkg/34422; it has been noted by GNATS.
From: Jon Olsson <jon@univits.com>
To: gnats-bugs@NetBSD.org
Cc:
Subject: Re: pkg/34422: security/sudo doesn't link
Date: Thu, 31 Aug 2006 11:24:12 +0200
On 2006-08-30, at 18.10, Joerg Sonnenberger wrote:
> The following reply was made to PR pkg/34422; it has been noted by
> GNATS.
>
> From: Joerg Sonnenberger <joerg@britannica.bec.de>
> To: gnats-bugs@NetBSD.org
> Cc:
> Subject: Re: pkg/34422: security/sudo doesn't link
> Date: Wed, 30 Aug 2006 18:00:46 +0200
>
> On Wed, Aug 30, 2006 at 02:10:00PM +0000, jon@univits.com wrote:
>> checking for isblank... yes
>
> Strange...
>
>> Undefined first referenced
>> symbol in file
>> isblank sudo_edit.o
>
> (a) Is isblank defined in ctype.h?
> If yes: is it perhaps not in libc, but some other library?
> If no: Can you compile the following program with warnings
> enabling and
> show me the result?
>
> #include <ctype.h>
> int
> main (void)
> {
> (void)isblank(1);
> ;
> return 0;
> }
Yes, seems it's defined somewhere, don't know where though:
$ grep isblank /usr/include/*.h
$ grep isblank /usr/include/**/*.h
/usr/include/unicode/uchar.h: * like isblank(). Their use is
generally discouraged because the C/POSIX
/usr/include/unicode/uchar.h: * - u_isblank: "horizontal spaces" =
TAB + Zs - ZWSP
/usr/include/unicode/uchar.h:u_isblank(UChar32 c);
/usr/include/unicode/urename.h:#define u_isblank u_isblank_3_2
Program output:
$ gcc -Wall x.c
x.c: In function 'main':
x.c:5: warning: implicit declaration of function 'isblank'
$ ./a.out
$ ldd a.out
libc.so.1 => /usr/lib/libc.so.1
libdl.so.1 => /usr/lib/libdl.so.1
/usr/platform/SUNW,Sun-Fire-V240/lib/libc_psr.so.1
$ nm /usr/lib/libc.so.1|grep isblank
$ nm /usr/lib/libdl.so.1|grep isblank
$ nm /usr/platform/SUNW,Sun-Fire-V240/lib/libc_psr.so.1|grep isblank
$
>
>> --- sudo_edit.c.orig 2004-11-25 15:32:34.000000000 -0200
>> +++ sudo_edit.c
>> @@ -205,6 +205,9 @@ int sudo_edit(argc, argv)
>> */
>> nargc = argc;
>> for (cp = editor + 1; *cp != '\0'; cp++) {
>> +#if defined(__SVR4) && defined(__sun)
>> +#define isblank(c) (c == ' ' ||c == '\t' ||c == '\r' ||c == '\n')
>> +#endif
>
> This is incorrect, since isblank(c) is true for c == ' ' || c == '\t'
> only.
Indeed.
Jon