develooper Front page | perl.perl5.porters | Postings from July 2001

[ID 20010704.003] Taint mode breaks global match

Thread Next
From:
dagl
Date:
July 4, 2001 03:12
Subject:
[ID 20010704.003] Taint mode breaks global match
Message ID:
200107041012.MAA16949@iweb.nextel.no
This is a bug report for perl from dag@nimrod.no,
generated with the help of perlbug 1.33 running under perl v5.6.1.


-----------------------------------------------------------------
In taint mode, pos() is not set after a global match on $_[0].

Run the example below and type in any string. In taint mode, pos() is
not set.

The example works as expected when taint mode is not set. A workaround
is to copy $_[0] into another scalar and do the match on that.

This is tested on several versions of Perl on Linux and Solaris. The
bug seems to have been introduced in Perl 5.005.


#!/usr/bin/perl -wT

sub parse($)
{
    $_[0] =~ /./g;
    print 'pos = ', pos($_[0]), "\n";
}

my $txt = <>;
parse($txt);
-----------------------------------------------------------------
---
Flags:
    category=core
    severity=medium
---
Site configuration information for perl v5.6.1:

Configured by root at Thu Apr 26 15:44:21 MET DST 2001.

Summary of my perl5 (revision 5.0 version 6 subversion 1) configuration:
  Platform:
    osname=solaris, osvers=2.6, archname=sun4-solaris-ld
    uname='sunos unsafe.nextra.no 5.6 generic_105181-26 sun4u sparc '
    config_args=''
    hint=recommended, useposix=true, d_sigaction=define
    usethreads=undef use5005threads=undef useithreads=undef usemultiplicity=undef
    useperlio=undef d_sfio=undef uselargefiles=define usesocks=undef
    use64bitint=undef use64bitall=undef uselongdouble=define
  Compiler:
    cc='cc', ccflags ='-I/local/BerkeleyDB/include -I/local/gnu/include -I/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64',
    optimize='-O',
    cppflags='-I/local/BerkeleyDB/include -I/local/gnu/include -I/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64'
    ccversion='Sun WorkShop 6 2000/06/19 C 5.1 Patch 109491-02', gccversion='', gccosandvers=''
    intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=4321
    d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=16
    ivtype='long', ivsize=4, nvtype='long double', nvsize=16, Off_t='off_t', lseeksize=8
    alignbytes=8, usemymalloc=y, prototype=define
  Linker and Libraries:
    ld='cc', ldflags ='-R/local/BerkeleyDB/lib:/local/gnu/lib:/local/lib:/opt/SUNWspro/WS6/lib:/usr/lib:/usr/ccs/lib -L/local/BerkeleyDB/lib -L/local/gnu/lib -L/local/lib  -L/opt/SUNWspro/lib -R/opt/SUNWspro/lib'
    libpth=/local/BerkeleyDB/lib /local/gnu/lib /local/lib /opt/SUNWspro/WS6/lib /usr/lib /usr/ccs/lib
    libs=-lsocket -lnsl -lgdbm -ldb -ldl -lm -lc -lcrypt -lsec -lsunmath
    perllibs=-lsocket -lnsl -ldl -lm -lc -lcrypt -lsec -lsunmath
    libc=/lib/libc.so, so=so, useshrplib=false, libperl=libperl.a
  Dynamic Linking:
    dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags=' '
    cccdlflags='-KPIC', lddlflags='-G -R/local/BerkeleyDB/lib:/local/gnu/lib:/local/lib:/opt/SUNWspro/WS6/lib:/opt/SUNWspro/lib:/usr/lib:/usr/ccs/lib -L/local/BerkeleyDB/lib -L/local/gnu/lib -L/local/lib -L/opt/SUNWspro/lib'

Locally applied patches:
    

---
@INC for perl v5.6.1:
    /local/perl/5.6.1/lib/5.6.1/sun4-solaris-ld
    /local/perl/5.6.1/lib/5.6.1
    /local/perl/5.6.1/lib/site_perl/5.6.1/sun4-solaris-ld
    /local/perl/5.6.1/lib/site_perl/5.6.1
    /local/perl/5.6.1/lib/site_perl
    /local/perl/lib
    .

---
Environment for perl v5.6.1:
    HOME=/home/d/dagl
    LANG (unset)
    LANGUAGE (unset)
    LC_CTYPE=iso_8859_1
    LD_LIBRARY_PATH (unset)
    LOGDIR (unset)
    PATH=/local/site/bin:/local/sbin:/local/acrobat/4/bin:/local/perl/5.005/bin:/local/gnu/bin:/local/bin:/usr/bin:/bin:/usr/ccs/bin:/usr/sbin:/local/X11/bin:/usr/ucb:/sbin:/usr/openwin/bin:/etc
    PERL_BADLANG (unset)
    SHELL=/local/gnu/bin/bash


Thread Next


nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About