INN 2.4.5 crashing in Perl_doing_taint()

Julien ÉLIE julien at trigofacile.com
Wed Jan 21 07:23:35 UTC 2009


Hi,

> (gdb) where
> #0  0x281bbd90 in Perl_doing_taint () from
> /usr/local/lib/perl5/5.8.9/mach/CORE/libperl.so
> #1  0x281bbdd4 in Perl_sys_init3 () from
> /usr/local/lib/perl5/5.8.9/mach/CORE/libperl.so
> #2  0x08090e74 in PERLsetup ()
> #3  0x0805c088 in main ()

Changes between 5.8.8 and 5.8.9:
    http://search.cpan.org/~nwclark/perl-5.8.9/pod/perl589delta.pod

    PERL_SYS_INIT, PERL_SYS_INIT3 and PERL_SYS_TERM macros have been changed into functions.

They now use Perl_sys_init3.  It does that:

#define PERL_SYS_INIT3(argc, argv, env) Perl_sys_init3(argc, argv, env)

void
Perl_sys_init3(int* argc, char*** argv, char*** env)
{
    PERL_UNUSED_ARG(argc); /* may not be used depending on _BODY macro */
    PERL_UNUSED_ARG(argv);
    PERL_UNUSED_ARG(env);
    PERL_SYS_INIT3_BODY(argc, argv, env);
}

#  define PERL_SYS_INIT3_BODY(argcp, argvp, envp)       \
  { void *xreg[2];                              \
    MALLOC_CHECK_TAINT(*argcp, *argvp, *envp)   \
    _response(argcp, argvp);                    \
    _wildcard(argcp, argvp);                    \
    Perl_OS2_init3(*envp, xreg, 0);             \
    PERLIO_INIT

#  define MALLOC_CHECK_TAINT(argc,argv,env)     STMT_START {    \
        if (doing_taint(argc,argv,env)) {                       \
                MallocCfg_ptr[MallocCfg_skip_cfg_env] = 1;      \
    }} STMT_END;


I assume tainting fails here.

Perl 5.10.0 also has these changes (except that "dVAR;" is called first in
Perl_sys_init3).
So maybe INN does not work on FreeBSD with Perl 5.10.0 too...

-- 
Julien ÉLIE

« L'éternité, c'est long, surtout vers la fin. » (Woody Allen) 




More information about the inn-workers mailing list