[Date Prev][Date Next] [Chronological] [Thread] [Top]

Re: (ITS#6862) Patch - Mozilla NSS - redux: disable pkcs11 fork checking for the software token



rmeggins@redhat.com wrote:
> Full_Name: Rich Megginson
> Version: 2.4.24 (current CVS HEAD)
> OS: RHEL6
> URL: ftp://ftp.openldap.org/incoming/openldap-2.4.24-use-strdup-for-nofork-envvar-20110310.patch
> Submission from: (NULL) (76.113.111.209)
>
>
> There was still a problem with the fix for
> http://www.openldap.org/its/index.cgi?findid=6811
>
> Under certain conditions, and with certain shells, the PR_SetEnv with the
> constant string was causing free() assertion failures in unrelated software.
>
> # su - foo
> free(0x173bd2) below bottom of memory. (memtop = 0x9898800 membot = 0x973e000)
> # gdb /bin/tcsh coredump
> (gdb) bt
> #0  0x00ed9416 in __kernel_vsyscall ()
> #1  0x006e02f1 in raise (sig=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:64
> #2  0x006e1d5e in abort () at abort.c:92
> #3  0x08084e6a in free (cp=0x8f2bd2) at tc.alloc.c:313
> #4  0x08063d83 in blkfree (av0=0x9e7d988) at sh.misc.c:158
> #5  0x0805af6f in tsetenv (name=0x80a3420 L"GROUP", val=0x9e32608
> L"valid_group") at sh.func.c:1725
> #6  0x0804d910 in main (argc=<value optimized out>, argv=0xbfa7e4f4) at
> sh.c:561
>
> Using PR_SetEnv with a strdup()ed string solved the problem.

At the expense of a small memory leak. Whatever happened to making PR_SetEnv() 
take care of this itself?

http://osdir.com/ml/mozilla.devel.nspr/2005-02/msg00011.html

I thought the point of NSPR was to provide a consistent cross-platform API. If 
PR_SetEnv() is documented to behave a particular way, and it doesn't, then 
this bug should be fixed in NSPR. If NSPR is unable to provide a consistent API...

I'm getting the feeling that you're plugging an unmaintainable code base in here.
-- 
   -- Howard Chu
   CTO, Symas Corp.           http://www.symas.com
   Director, Highland Sun     http://highlandsun.com/hyc/
   Chief Architect, OpenLDAP  http://www.openldap.org/project/