Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

t/op/taint.t fails test 846 on Windows #16921

Open
p5pRT opened this issue Apr 3, 2019 · 12 comments
Open

t/op/taint.t fails test 846 on Windows #16921

p5pRT opened this issue Apr 3, 2019 · 12 comments

Comments

@p5pRT
Copy link

p5pRT commented Apr 3, 2019

Migrated from rt.perl.org#133980 (status was 'open')

Searchable as RT133980$

@p5pRT
Copy link
Author

p5pRT commented Apr 3, 2019

From @steve-m-hay

Created by @steve-m-hay

Blead is currently failing test 846 in t/op/taint.t on Windows (this
is Windows 10)​:

I get the same result using VC12, VC14, VC14.1 and MinGW-w64 GCC 7.1.0, all x64.

See attached verbose output.

Perl Info

Flags:
    category=core
    severity=medium

Site configuration information for perl 5.29.10:

Configured by shay at Wed Apr  3 09:30:51 2019.

Summary of my perl5 (revision 5 version 29 subversion 10) configuration:
  Commit id: 930ded6545f2602708b01c3a2fdfe43bcaf771a6
  Platform:
    osname=MSWin32
    osvers=10.0.17763.379
    archname=MSWin32-x64-multi-thread
    uname=''
    config_args='undef'
    hint=recommended
    useposix=true
    d_sigaction=undef
    useithreads=define
    usemultiplicity=define
    use64bitint=define
    use64bitall=undef
    uselongdouble=undef
    usemymalloc=n
    default_inc_excludes_dot=define
    bincompat5005=undef
  Compiler:
    cc='cl'
    ccflags ='-nologo -GF -W3 -O1 -MD -Zi -DNDEBUG -GL -fp:precise
-DWIN32 -D_CONSOLE -DNO_STRICT -DWIN64 -DCONSERVATIVE
-D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE
-D_WINSOCK_DEPRECATED_NO_WARNINGS  -DPERL_TEXTMODE_SCRIPTS
-DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS'
    optimize='-O1 -MD -Zi -DNDEBUG -GL -fp:precise'
    cppflags='-DWIN32'
    ccversion='19.16.27025.1'
    gccversion=''
    gccosandvers=''
    intsize=4
    longsize=4
    ptrsize=8
    doublesize=8
    byteorder=12345678
    doublekind=3
    d_longlong=undef
    longlongsize=8
    d_longdbl=define
    longdblsize=8
    longdblkind=0
    ivtype='__int64'
    ivsize=8
    nvtype='double'
    nvsize=8
    Off_t='__int64'
    lseeksize=8
    alignbytes=8
    prototype=define
  Linker and Libraries:
    ld='link'
    ldflags ='-nologo -nodefaultlib -debug -opt:ref,icf -ltcg
-libpath:"c:\perl\lib\CORE"  -machine:AMD64'
    libpth="C:\Program Files (x86)\Microsoft Visual Studio\2017
15.9\Professional\VC\Tools\MSVC\14.16.27023\\lib\x64"
    libs=oldnames.lib kernel32.lib user32.lib gdi32.lib winspool.lib
comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib
netapi32.lib uuid.lib ws2_32.lib mpr.lib winmm.lib version.lib
odbc32.lib odbccp32.lib comctl32.lib msvcrt.lib vcruntime.lib ucrt.lib
    perllibs=oldnames.lib kernel32.lib user32.lib gdi32.lib
winspool.lib  comdlg32.lib advapi32.lib shell32.lib ole32.lib
oleaut32.lib netapi32.lib uuid.lib ws2_32.lib mpr.lib winmm.lib
version.lib odbc32.lib odbccp32.lib comctl32.lib msvcrt.lib
vcruntime.lib ucrt.lib
    libc=ucrt.lib
    so=dll
    useshrplib=true
    libperl=perl529.lib
    gnulibc_version=''
  Dynamic Linking:
    dlsrc=dl_win32.xs
    dlext=dll
    d_dlsymun=undef
    ccdlflags=' '
    cccdlflags=' '
    lddlflags='-dll -nologo -nodefaultlib -debug -opt:ref,icf -ltcg
-libpath:"c:\perl\lib\CORE"  -machine:AMD64'



@INC for perl 5.29.10:
    C:/perl/site/lib
    C:/perl/lib


Environment for perl 5.29.10:
    HOME (unset)
    LANG (unset)
    LANGUAGE (unset)
    LD_LIBRARY_PATH (unset)
    LOGDIR (unset)
    PATH=C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\perl\bin
    PERL_BADLANG (unset)
    SHELL (unset)

@p5pRT
Copy link
Author

p5pRT commented Apr 3, 2019

From @steve-m-hay

op/taint.t ..
1..1042
ok 1
ok 2 # skip Environment tainting tests skipped
ok 3 # skip Environment tainting tests skipped
ok 4 # skip Environment tainting tests skipped
ok 5 # skip Environment tainting tests skipped
# all directories are writeable
ok 6 # skip all directories are writeable
ok 7 # skip all directories are writeable
ok 8 # skip Not applicable to DOSish systems
ok 9 # skip Not applicable to DOSish systems
ok 10 # skip Not applicable to DOSish systems
ok 11 # skip Not applicable to DOSish systems
ok 12 # skip This is not VMS
ok 13 # skip This is not VMS
ok 14 # skip This is not VMS
ok 15 # skip This is not VMS
ok 16
ok 17
ok 18
ok 19
ok 20
ok 21
ok 22
ok 23
ok 24
ok 25
ok 26
ok 27
ok 28
ok 29
ok 30
ok 31
ok 32
ok 33
ok 34
ok 35
ok 36
ok 37
ok 38
ok 39
ok 40 - match with string tainted​: s tainted
ok 41 - match with string tainted​: res not tainted
ok 42 - match with string tainted​: $1 not tainted
ok 43 - match with string tainted​: res value
ok 44 - match with string tainted​: $1 value
ok 45 - match /g with string tainted​: s tainted
ok 46 - match /g with string tainted​: res not tainted
ok 47 - match /g with string tainted​: $1 not tainted
ok 48 - match /g with string tainted​: res value
ok 49 - match /g with string tainted​: $1 value
ok 50 - match with string tainted, list cxt​: s tainted
ok 51 - match with string tainted, list cxt​: res not tainted
ok 52 - match with string tainted, list cxt​: $1 not tainted
ok 53 - match with string tainted, list cxt​: res value
ok 54 - match with string tainted, list cxt​: $1 value
ok 55 - match /g with string tainted, list cxt​: s tainted
ok 56 - match /g with string tainted, list cxt​: res not tainted
ok 57 - match /g with string tainted, list cxt​: res2 not tainted
ok 58 - match /g with string tainted, list cxt​: $1 not tainted
ok 59 - match /g with string tainted, list cxt​: res value
ok 60 - match /g with string tainted, list cxt​: res2 value
ok 61 - match /g with string tainted, list cxt​: $1 value
ok 62 - match with pattern tainted​: s not tainted
ok 63 - match with pattern tainted​: res not tainted
ok 64 - match with pattern tainted​: $1 tainted
ok 65 - match with pattern tainted​: res value
ok 66 - match with pattern tainted​: $1 value
ok 67 - match /g with pattern tainted​: s not tainted
ok 68 - match /g with pattern tainted​: res not tainted
ok 69 - match /g with pattern tainted​: $1 tainted
ok 70 - match /g with pattern tainted​: res value
ok 71 - match /g with pattern tainted​: $1 value
ok 72 - match with pattern tainted via locale​: s not tainted
ok 73 - match with pattern tainted via locale​: res not tainted
ok 74 - match with pattern tainted via locale​: $1 tainted
ok 75 - match with pattern tainted via locale​: res value
ok 76 - match with pattern tainted via locale​: $1 value
ok 77 - match /g with pattern tainted via locale​: s not tainted
ok 78 - match /g with pattern tainted via locale​: res not tainted
ok 79 - match /g with pattern tainted via locale​: $1 tainted
ok 80 - match /g with pattern tainted via locale​: res value
ok 81 - match /g with pattern tainted via locale​: $1 value
ok 82 - match with pattern tainted, list cxt​: s not tainted
ok 83 - match with pattern tainted, list cxt​: res tainted
ok 84 - match with pattern tainted, list cxt​: $1 tainted
ok 85 - match with pattern tainted, list cxt​: res value
ok 86 - match with pattern tainted, list cxt​: $1 value
ok 87 - match /g with pattern tainted, list cxt​: s not tainted
ok 88 - match /g with pattern tainted, list cxt​: res tainted
ok 89 - match /g with pattern tainted, list cxt​: $1 tainted
ok 90 - match /g with pattern tainted, list cxt​: res value
ok 91 - match /g with pattern tainted, list cxt​: res2 value
ok 92 - match /g with pattern tainted, list cxt​: $1 value
ok 93 - match with pattern tainted via locale, list cxt​: s not tainted
ok 94 - match with pattern tainted via locale, list cxt​: res tainted
ok 95 - match with pattern tainted via locale, list cxt​: $1 tainted
ok 96 - match with pattern tainted via locale, list cxt​: res value
ok 97 - match with pattern tainted via locale, list cxt​: $1 value
ok 98 - match /g with pattern tainted via locale, list cxt​: s not tainted
ok 99 - match /g with pattern tainted via locale, list cxt​: res tainted
ok 100 - match /g with pattern tainted via locale, list cxt​: res2 tainted
ok 101 - match /g with pattern tainted via locale, list cxt​: $1 tainted
ok 102 - match /g with pattern tainted via locale, list cxt​: res value
ok 103 - match /g with pattern tainted via locale, list cxt​: res2 value
ok 104 - match /g with pattern tainted via locale, list cxt​: $1 value
ok 105 - substitution with string tainted​: s tainted
ok 106 - substitution with string tainted​: res not tainted
ok 107 - substitution with string tainted​: $1 not tainted
ok 108 - substitution with string tainted​: s value
ok 109 - substitution with string tainted​: res value
ok 110 - substitution with string tainted​: $1 value
ok 111 - substitution /g with string tainted​: s tainted
ok 112 - substitution /g with string tainted​: res tainted
ok 113 - substitution /g with string tainted​: $1 not tainted
ok 114 - substitution /g with string tainted​: s value
ok 115 - substitution /g with string tainted​: res value
ok 116 - substitution /g with string tainted​: $1 value
ok 117 - substitution /r with string tainted​: s tainted
ok 118 - substitution /r with string tainted​: res tainted
ok 119 - substitution /r with string tainted​: $1 not tainted
ok 120 - substitution /r with string tainted​: s value
ok 121 - substitution /r with string tainted​: res value
ok 122 - substitution /r with string tainted​: $1 value
ok 123 - substitution /e with string tainted​: code not tainted within /e
ok 124 - substitution /e with string tainted​: $1 not tainted within /e
ok 125 - substitution /e with string tainted​: s tainted
ok 126 - substitution /e with string tainted​: res not tainted
ok 127 - substitution /e with string tainted​: $1 not tainted
ok 128 - substitution /e with string tainted​: s value
ok 129 - substitution /e with string tainted​: res value
ok 130 - substitution /e with string tainted​: $1 value
ok 131 - substitution with pattern tainted​: s tainted
ok 132 - substitution with pattern tainted​: res not tainted
ok 133 - substitution with pattern tainted​: $1 tainted
ok 134 - substitution with pattern tainted​: s value
ok 135 - substitution with pattern tainted​: res value
ok 136 - substitution with pattern tainted​: $1 value
ok 137 - substitution /g with pattern tainted​: s tainted
ok 138 - substitution /g with pattern tainted​: res tainted
ok 139 - substitution /g with pattern tainted​: $1 tainted
ok 140 - substitution /g with pattern tainted​: s value
ok 141 - substitution /g with pattern tainted​: res value
ok 142 - substitution /g with pattern tainted​: $1 value
ok 143 - substitution /ge with pattern tainted​: code not tainted within /e
ok 144 - substitution /ge with pattern tainted​: s not tainted loop 1
ok 145 - substitution /ge with pattern tainted​: $1 tainted loop 1
ok 146 - substitution /ge with pattern tainted​: code not tainted within /e
ok 147 - substitution /ge with pattern tainted​: s tainted loop 2
ok 148 - substitution /ge with pattern tainted​: $1 tainted loop 2
ok 149 - substitution /ge with pattern tainted​: code not tainted within /e
ok 150 - substitution /ge with pattern tainted​: s tainted loop 3
ok 151 - substitution /ge with pattern tainted​: $1 tainted loop 3
ok 152 - substitution /ge with pattern tainted​: s tainted
ok 153 - substitution /ge with pattern tainted​: res tainted
ok 154 - substitution /ge with pattern tainted​: $1 tainted
ok 155 - substitution /ge with pattern tainted​: s value
ok 156 - substitution /ge with pattern tainted​: res value
ok 157 - substitution /ge with pattern tainted​: $1 value
ok 158 - substitution /r with pattern tainted​: s not tainted
ok 159 - substitution /r with pattern tainted​: res tainted
ok 160 - substitution /r with pattern tainted​: $1 tainted
ok 161 - substitution /r with pattern tainted​: s value
ok 162 - substitution /r with pattern tainted​: res value
ok 163 - substitution /r with pattern tainted​: $1 value
ok 164 - substitution with pattern tainted via locale​: s tainted
ok 165 - substitution with pattern tainted via locale​: res not tainted
ok 166 - substitution with pattern tainted via locale​: $1 tainted
ok 167 - substitution with pattern tainted via locale​: s value
ok 168 - substitution with pattern tainted via locale​: res value
ok 169 - substitution with pattern tainted via locale​: $1 value
ok 170 - substitution /g with pattern tainted via locale​: s tainted
ok 171 - substitution /g with pattern tainted via locale​: res tainted
ok 172 - substitution /g with pattern tainted via locale​: $1 tainted
ok 173 - substitution /g with pattern tainted via locale​: s value
ok 174 - substitution /g with pattern tainted via locale​: res value
ok 175 - substitution /g with pattern tainted via locale​: $1 value
ok 176 - substitution /r with pattern tainted via locale​: s not tainted
ok 177 - substitution /r with pattern tainted via locale​: res tainted
ok 178 - substitution /r with pattern tainted via locale​: $1 tainted
ok 179 - substitution /r with pattern tainted via locale​: s value
ok 180 - substitution /r with pattern tainted via locale​: res value
ok 181 - substitution /r with pattern tainted via locale​: $1 value
ok 182 - substitution with partial replacement tainted​: s tainted
ok 183 - substitution with partial replacement tainted​: res not tainted
ok 184 - substitution with partial replacement tainted​: $1 not tainted
ok 185 - substitution with partial replacement tainted​: s value
ok 186 - substitution with partial replacement tainted​: res value
ok 187 - substitution with partial replacement tainted​: $1 value
ok 188 - substitution /g with partial replacement tainted​: s tainted
ok 189 - substitution /g with partial replacement tainted​: res not tainted
ok 190 - substitution /g with partial replacement tainted​: $1 not tainted
ok 191 - substitution /g with partial replacement tainted​: s value
ok 192 - substitution /g with partial replacement tainted​: res value
ok 193 - substitution /g with partial replacement tainted​: $1 value
ok 194 - substitution /ge with partial replacement tainted​: code not tainted within /e
ok 195 - substitution /ge with partial replacement tainted​: s not tainted loop 1
ok 196 - substitution /ge with partial replacement tainted​: $1 not tainted within /e
ok 197 - substitution /ge with partial replacement tainted​: code not tainted within /e
ok 198 - substitution /ge with partial replacement tainted​: s tainted loop 2
ok 199 - substitution /ge with partial replacement tainted​: $1 not tainted within /e
ok 200 - substitution /ge with partial replacement tainted​: code not tainted within /e
ok 201 - substitution /ge with partial replacement tainted​: s tainted loop 3
ok 202 - substitution /ge with partial replacement tainted​: $1 not tainted within /e
ok 203 - substitution /ge with partial replacement tainted​: s tainted
ok 204 - substitution /ge with partial replacement tainted​: res tainted
ok 205 - substitution /ge with partial replacement tainted​: $1 not tainted
ok 206 - substitution /ge with partial replacement tainted​: s value
ok 207 - substitution /ge with partial replacement tainted​: res value
ok 208 - substitution /ge with partial replacement tainted​: $1 value
ok 209 - substitution /r with partial replacement tainted​: s not tainted
ok 210 - substitution /r with partial replacement tainted​: res tainted
ok 211 - substitution /r with partial replacement tainted​: $1 not tainted
ok 212 - substitution /r with partial replacement tainted​: s value
ok 213 - substitution /r with partial replacement tainted​: res value
ok 214 - substitution /r with partial replacement tainted​: $1 value
ok 215 - substitution with whole replacement tainted​: s tainted
ok 216 - substitution with whole replacement tainted​: res not tainted
ok 217 - substitution with whole replacement tainted​: $1 not tainted
ok 218 - substitution with whole replacement tainted​: s value
ok 219 - substitution with whole replacement tainted​: res value
ok 220 - substitution with whole replacement tainted​: $1 value
ok 221 - substitution /g with whole replacement tainted​: s tainted
ok 222 - substitution /g with whole replacement tainted​: res not tainted
ok 223 - substitution /g with whole replacement tainted​: $1 not tainted
ok 224 - substitution /g with whole replacement tainted​: s value
ok 225 - substitution /g with whole replacement tainted​: res value
ok 226 - substitution /g with whole replacement tainted​: $1 value
ok 227 - substitution /ge with whole replacement tainted​: code not tainted within /e
ok 228 - substitution /ge with whole replacement tainted​: s not tainted loop 1
ok 229 - substitution /ge with whole replacement tainted​: $1 not tainted within /e
ok 230 - substitution /ge with whole replacement tainted​: code not tainted within /e
ok 231 - substitution /ge with whole replacement tainted​: s tainted loop 2
ok 232 - substitution /ge with whole replacement tainted​: $1 not tainted within /e
ok 233 - substitution /ge with whole replacement tainted​: code not tainted within /e
ok 234 - substitution /ge with whole replacement tainted​: s tainted loop 3
ok 235 - substitution /ge with whole replacement tainted​: $1 not tainted within /e
ok 236 - substitution /ge with whole replacement tainted​: s tainted
ok 237 - substitution /ge with whole replacement tainted​: res tainted
ok 238 - substitution /ge with whole replacement tainted​: $1 not tainted
ok 239 - substitution /ge with whole replacement tainted​: s value
ok 240 - substitution /ge with whole replacement tainted​: res value
ok 241 - substitution /ge with whole replacement tainted​: $1 value
ok 242 - substitution /r with whole replacement tainted​: s not tainted
ok 243 - substitution /r with whole replacement tainted​: res tainted
ok 244 - substitution /r with whole replacement tainted​: $1 not tainted
ok 245 - substitution /r with whole replacement tainted​: s value
ok 246 - substitution /r with whole replacement tainted​: res value
ok 247 - substitution /r with whole replacement tainted​: $1 value
ok 248 - use re 'taint'​: match with string tainted​: s tainted
ok 249 - use re 'taint'​: match with string tainted​: res not tainted
ok 250 - use re 'taint'​: match with string tainted​: $1 tainted
ok 251 - use re 'taint'​: match with string tainted​: res value
ok 252 - use re 'taint'​: match with string tainted​: $1 value
ok 253 - use re 'taint'​: match /g with string tainted​: s tainted
ok 254 - use re 'taint'​: match /g with string tainted​: res not tainted
ok 255 - use re 'taint'​: match /g with string tainted​: $1 tainted
ok 256 - use re 'taint'​: match /g with string tainted​: res value
ok 257 - use re 'taint'​: match /g with string tainted​: $1 value
ok 258 - use re 'taint'​: match with string tainted, list cxt​: s tainted
ok 259 - use re 'taint'​: match with string tainted, list cxt​: res tainted
ok 260 - use re 'taint'​: match with string tainted, list cxt​: $1 tainted
ok 261 - use re 'taint'​: match with string tainted, list cxt​: res value
ok 262 - use re 'taint'​: match with string tainted, list cxt​: $1 value
ok 263 - use re 'taint'​: match /g with string tainted, list cxt​: s tainted
ok 264 - use re 'taint'​: match /g with string tainted, list cxt​: res tainted
ok 265 - use re 'taint'​: match /g with string tainted, list cxt​: res2 tainted
ok 266 - use re 'taint'​: match /g with string tainted, list cxt​: $1 not tainted
ok 267 - use re 'taint'​: match /g with string tainted, list cxt​: res value
ok 268 - use re 'taint'​: match /g with string tainted, list cxt​: res2 value
ok 269 - use re 'taint'​: match /g with string tainted, list cxt​: $1 value
ok 270 - use re 'taint'​: match with pattern tainted​: s not tainted
ok 271 - use re 'taint'​: match with pattern tainted​: res not tainted
ok 272 - use re 'taint'​: match with pattern tainted​: $1 tainted
ok 273 - use re 'taint'​: match with pattern tainted​: res value
ok 274 - use re 'taint'​: match with pattern tainted​: $1 value
ok 275 - use re 'taint'​: match /g with pattern tainted​: s not tainted
ok 276 - use re 'taint'​: match /g with pattern tainted​: res not tainted
ok 277 - use re 'taint'​: match /g with pattern tainted​: $1 tainted
ok 278 - use re 'taint'​: match /g with pattern tainted​: res value
ok 279 - use re 'taint'​: match /g with pattern tainted​: $1 value
ok 280 - use re 'taint'​: match with pattern tainted via locale​: s not tainted
ok 281 - use re 'taint'​: match with pattern tainted via locale​: res not tainted
ok 282 - use re 'taint'​: match with pattern tainted via locale​: $1 tainted
ok 283 - use re 'taint'​: match with pattern tainted via locale​: res value
ok 284 - use re 'taint'​: match with pattern tainted via locale​: $1 value
ok 285 - use re 'taint'​: match /g with pattern tainted via locale​: s not tainted
ok 286 - use re 'taint'​: match /g with pattern tainted via locale​: res not tainted
ok 287 - use re 'taint'​: match /g with pattern tainted via locale​: $1 tainted
ok 288 - use re 'taint'​: match /g with pattern tainted via locale​: res value
ok 289 - use re 'taint'​: match /g with pattern tainted via locale​: $1 value
ok 290 - use re 'taint'​: match with pattern tainted, list cxt​: s not tainted
ok 291 - use re 'taint'​: match with pattern tainted, list cxt​: res tainted
ok 292 - use re 'taint'​: match with pattern tainted, list cxt​: $1 tainted
ok 293 - use re 'taint'​: match with pattern tainted, list cxt​: res value
ok 294 - use re 'taint'​: match with pattern tainted, list cxt​: $1 value
ok 295 - use re 'taint'​: match /g with pattern tainted, list cxt​: s not tainted
ok 296 - use re 'taint'​: match /g with pattern tainted, list cxt​: res tainted
ok 297 - use re 'taint'​: match /g with pattern tainted, list cxt​: $1 tainted
ok 298 - use re 'taint'​: match /g with pattern tainted, list cxt​: res value
ok 299 - use re 'taint'​: match /g with pattern tainted, list cxt​: res2 value
ok 300 - use re 'taint'​: match /g with pattern tainted, list cxt​: $1 value
ok 301 - use re 'taint'​: match with pattern tainted via locale, list cxt​: s not tainted
ok 302 - use re 'taint'​: match with pattern tainted via locale, list cxt​: res tainted
ok 303 - use re 'taint'​: match with pattern tainted via locale, list cxt​: $1 tainted
ok 304 - use re 'taint'​: match with pattern tainted via locale, list cxt​: res value
ok 305 - use re 'taint'​: match with pattern tainted via locale, list cxt​: $1 value
ok 306 - use re 'taint'​: match /g with pattern tainted via locale, list cxt​: s not tainted
ok 307 - use re 'taint'​: match /g with pattern tainted via locale, list cxt​: res tainted
ok 308 - use re 'taint'​: match /g with pattern tainted via locale, list cxt​: res2 tainted
ok 309 - use re 'taint'​: match /g with pattern tainted via locale, list cxt​: $1 tainted
ok 310 - use re 'taint'​: match /g with pattern tainted via locale, list cxt​: res value
ok 311 - use re 'taint'​: match /g with pattern tainted via locale, list cxt​: res2 value
ok 312 - use re 'taint'​: match /g with pattern tainted via locale, list cxt​: $1 value
ok 313 - use re 'taint'​: substitution with string tainted​: s tainted
ok 314 - use re 'taint'​: substitution with string tainted​: res not tainted
ok 315 - use re 'taint'​: substitution with string tainted​: $1 tainted
ok 316 - use re 'taint'​: substitution with string tainted​: s value
ok 317 - use re 'taint'​: substitution with string tainted​: res value
ok 318 - use re 'taint'​: substitution with string tainted​: $1 value
ok 319 - use re 'taint'​: substitution /g with string tainted​: s tainted
ok 320 - use re 'taint'​: substitution /g with string tainted​: res tainted
ok 321 - use re 'taint'​: substitution /g with string tainted​: $1 tainted
ok 322 - use re 'taint'​: substitution /g with string tainted​: s value
ok 323 - use re 'taint'​: substitution /g with string tainted​: res value
ok 324 - use re 'taint'​: substitution /g with string tainted​: $1 value
ok 325 - use re 'taint'​: substitution /r with string tainted​: s tainted
ok 326 - use re 'taint'​: substitution /r with string tainted​: res tainted
ok 327 - use re 'taint'​: substitution /r with string tainted​: $1 tainted
ok 328 - use re 'taint'​: substitution /r with string tainted​: s value
ok 329 - use re 'taint'​: substitution /r with string tainted​: res value
ok 330 - use re 'taint'​: substitution /r with string tainted​: $1 value
ok 331 - use re 'taint'​: substitution /e with string tainted​: code not tainted within /e
ok 332 - use re 'taint'​: substitution /e with string tainted​: abcd tainted within /e
ok 333 - use re 'taint'​: substitution /e with string tainted​: s tainted
ok 334 - use re 'taint'​: substitution /e with string tainted​: res not tainted
ok 335 - use re 'taint'​: substitution /e with string tainted​: $1 tainted
ok 336 - use re 'taint'​: substitution /e with string tainted​: s value
ok 337 - use re 'taint'​: substitution /e with string tainted​: res value
ok 338 - use re 'taint'​: substitution /e with string tainted​: $1 value
ok 339 - use re 'taint'​: substitution with pattern tainted​: s tainted
ok 340 - use re 'taint'​: substitution with pattern tainted​: res not tainted
ok 341 - use re 'taint'​: substitution with pattern tainted​: $1 tainted
ok 342 - use re 'taint'​: substitution with pattern tainted​: s value
ok 343 - use re 'taint'​: substitution with pattern tainted​: res value
ok 344 - use re 'taint'​: substitution with pattern tainted​: $1 value
ok 345 - use re 'taint'​: substitution /g with pattern tainted​: s tainted
ok 346 - use re 'taint'​: substitution /g with pattern tainted​: res tainted
ok 347 - use re 'taint'​: substitution /g with pattern tainted​: $1 tainted
ok 348 - use re 'taint'​: substitution /g with pattern tainted​: s value
ok 349 - use re 'taint'​: substitution /g with pattern tainted​: res value
ok 350 - use re 'taint'​: substitution /g with pattern tainted​: $1 value
ok 351 - use re 'taint'​: substitution /ge with pattern tainted​: code not tainted within /e
ok 352 - use re 'taint'​: substitution /ge with pattern tainted​: s not tainted loop 1
ok 353 - use re 'taint'​: substitution /ge with pattern tainted​: $1 tainted loop 1
ok 354 - use re 'taint'​: substitution /ge with pattern tainted​: code not tainted within /e
ok 355 - use re 'taint'​: substitution /ge with pattern tainted​: s tainted loop 2
ok 356 - use re 'taint'​: substitution /ge with pattern tainted​: $1 tainted loop 2
ok 357 - use re 'taint'​: substitution /ge with pattern tainted​: code not tainted within /e
ok 358 - use re 'taint'​: substitution /ge with pattern tainted​: s tainted loop 3
ok 359 - use re 'taint'​: substitution /ge with pattern tainted​: $1 tainted loop 3
ok 360 - use re 'taint'​: substitution /ge with pattern tainted​: s tainted
ok 361 - use re 'taint'​: substitution /ge with pattern tainted​: res tainted
ok 362 - use re 'taint'​: substitution /ge with pattern tainted​: $1 tainted
ok 363 - use re 'taint'​: substitution /ge with pattern tainted​: s value
ok 364 - use re 'taint'​: substitution /ge with pattern tainted​: res value
ok 365 - use re 'taint'​: substitution /ge with pattern tainted​: $1 value
ok 366 - use re 'taint'​: substitution /r with pattern tainted​: s not tainted
ok 367 - use re 'taint'​: substitution /r with pattern tainted​: res tainted
ok 368 - use re 'taint'​: substitution /r with pattern tainted​: $1 tainted
ok 369 - use re 'taint'​: substitution /r with pattern tainted​: s value
ok 370 - use re 'taint'​: substitution /r with pattern tainted​: res value
ok 371 - use re 'taint'​: substitution /r with pattern tainted​: $1 value
ok 372 - use re 'taint'​: substitution with pattern tainted via locale​: s tainted
ok 373 - use re 'taint'​: substitution with pattern tainted via locale​: res not tainted
ok 374 - use re 'taint'​: substitution with pattern tainted via locale​: $1 tainted
ok 375 - use re 'taint'​: substitution with pattern tainted via locale​: s value
ok 376 - use re 'taint'​: substitution with pattern tainted via locale​: res value
ok 377 - use re 'taint'​: substitution with pattern tainted via locale​: $1 value
ok 378 - use re 'taint'​: substitution /g with pattern tainted via locale​: s tainted
ok 379 - use re 'taint'​: substitution /g with pattern tainted via locale​: res tainted
ok 380 - use re 'taint'​: substitution /g with pattern tainted via locale​: $1 tainted
ok 381 - use re 'taint'​: substitution /g with pattern tainted via locale​: s value
ok 382 - use re 'taint'​: substitution /g with pattern tainted via locale​: res value
ok 383 - use re 'taint'​: substitution /g with pattern tainted via locale​: $1 value
ok 384 - use re 'taint'​: substitution /r with pattern tainted via locale​: s not tainted
ok 385 - use re 'taint'​: substitution /r with pattern tainted via locale​: res tainted
ok 386 - use re 'taint'​: substitution /r with pattern tainted via locale​: $1 tainted
ok 387 - use re 'taint'​: substitution /r with pattern tainted via locale​: s value
ok 388 - use re 'taint'​: substitution /r with pattern tainted via locale​: res value
ok 389 - use re 'taint'​: substitution /r with pattern tainted via locale​: $1 value
ok 390 - use re 'taint'​: substitution with partial replacement tainted​: s tainted
ok 391 - use re 'taint'​: substitution with partial replacement tainted​: res not tainted
ok 392 - use re 'taint'​: substitution with partial replacement tainted​: $1 not tainted
ok 393 - use re 'taint'​: substitution with partial replacement tainted​: s value
ok 394 - use re 'taint'​: substitution with partial replacement tainted​: res value
ok 395 - use re 'taint'​: substitution with partial replacement tainted​: $1 value
ok 396 - use re 'taint'​: substitution /g with partial replacement tainted​: s tainted
ok 397 - use re 'taint'​: substitution /g with partial replacement tainted​: res not tainted
ok 398 - use re 'taint'​: substitution /g with partial replacement tainted​: $1 not tainted
ok 399 - use re 'taint'​: substitution /g with partial replacement tainted​: s value
ok 400 - use re 'taint'​: substitution /g with partial replacement tainted​: res value
ok 401 - use re 'taint'​: substitution /g with partial replacement tainted​: $1 value
ok 402 - use re 'taint'​: substitution /ge with partial replacement tainted​: code not tainted within /e
ok 403 - use re 'taint'​: substitution /ge with partial replacement tainted​: s not tainted loop 1
ok 404 - use re 'taint'​: substitution /ge with partial replacement tainted​: $1 not tainted
ok 405 - use re 'taint'​: substitution /ge with partial replacement tainted​: code not tainted within /e
ok 406 - use re 'taint'​: substitution /ge with partial replacement tainted​: s tainted loop 2
ok 407 - use re 'taint'​: substitution /ge with partial replacement tainted​: $1 not tainted
ok 408 - use re 'taint'​: substitution /ge with partial replacement tainted​: code not tainted within /e
ok 409 - use re 'taint'​: substitution /ge with partial replacement tainted​: s tainted loop 3
ok 410 - use re 'taint'​: substitution /ge with partial replacement tainted​: $1 not tainted
ok 411 - use re 'taint'​: substitution /ge with partial replacement tainted​: s tainted
ok 412 - use re 'taint'​: substitution /ge with partial replacement tainted​: res tainted
ok 413 - use re 'taint'​: substitution /ge with partial replacement tainted​: $1 not tainted
ok 414 - use re 'taint'​: substitution /ge with partial replacement tainted​: s value
ok 415 - use re 'taint'​: substitution /ge with partial replacement tainted​: res value
ok 416 - use re 'taint'​: substitution /ge with partial replacement tainted​: $1 value
ok 417 - use re 'taint'​: substitution /r with partial replacement tainted​: s not tainted
ok 418 - use re 'taint'​: substitution /r with partial replacement tainted​: res tainted
ok 419 - use re 'taint'​: substitution /r with partial replacement tainted​: $1 not tainted
ok 420 - use re 'taint'​: substitution /r with partial replacement tainted​: s value
ok 421 - use re 'taint'​: substitution /r with partial replacement tainted​: res value
ok 422 - use re 'taint'​: substitution /r with partial replacement tainted​: $1 value
ok 423 - use re 'taint'​: substitution with whole replacement tainted​: s tainted
ok 424 - use re 'taint'​: substitution with whole replacement tainted​: res not tainted
ok 425 - use re 'taint'​: substitution with whole replacement tainted​: $1 not tainted
ok 426 - use re 'taint'​: substitution with whole replacement tainted​: s value
ok 427 - use re 'taint'​: substitution with whole replacement tainted​: res value
ok 428 - use re 'taint'​: substitution with whole replacement tainted​: $1 value
ok 429 - use re 'taint'​: substitution /g with whole replacement tainted​: s tainted
ok 430 - use re 'taint'​: substitution /g with whole replacement tainted​: res not tainted
ok 431 - use re 'taint'​: substitution /g with whole replacement tainted​: $1 not tainted
ok 432 - use re 'taint'​: substitution /g with whole replacement tainted​: s value
ok 433 - use re 'taint'​: substitution /g with whole replacement tainted​: res value
ok 434 - use re 'taint'​: substitution /g with whole replacement tainted​: $1 value
ok 435 - use re 'taint'​: substitution /ge with whole replacement tainted​: code not tainted within /e
ok 436 - use re 'taint'​: substitution /ge with whole replacement tainted​: s not tainted loop 1
ok 437 - use re 'taint'​: substitution /ge with whole replacement tainted​: $1 not tainted
ok 438 - use re 'taint'​: substitution /ge with whole replacement tainted​: code not tainted within /e
ok 439 - use re 'taint'​: substitution /ge with whole replacement tainted​: s tainted loop 2
ok 440 - use re 'taint'​: substitution /ge with whole replacement tainted​: $1 not tainted
ok 441 - use re 'taint'​: substitution /ge with whole replacement tainted​: code not tainted within /e
ok 442 - use re 'taint'​: substitution /ge with whole replacement tainted​: s tainted loop 3
ok 443 - use re 'taint'​: substitution /ge with whole replacement tainted​: $1 not tainted
ok 444 - use re 'taint'​: substitution /ge with whole replacement tainted​: s tainted
ok 445 - use re 'taint'​: substitution /ge with whole replacement tainted​: res tainted
ok 446 - use re 'taint'​: substitution /ge with whole replacement tainted​: $1 not tainted
ok 447 - use re 'taint'​: substitution /ge with whole replacement tainted​: s value
ok 448 - use re 'taint'​: substitution /ge with whole replacement tainted​: res value
ok 449 - use re 'taint'​: substitution /ge with whole replacement tainted​: $1 value
ok 450 - use re 'taint'​: substitution /r with whole replacement tainted​: s not tainted
ok 451 - use re 'taint'​: substitution /r with whole replacement tainted​: res tainted
ok 452 - use re 'taint'​: substitution /r with whole replacement tainted​: $1 not tainted
ok 453 - use re 'taint'​: substitution /r with whole replacement tainted​: s value
ok 454 - use re 'taint'​: substitution /r with whole replacement tainted​: res value
ok 455 - use re 'taint'​: substitution /r with whole replacement tainted​: $1 value
ok 456 - 121854​: res tainted
ok 457 - 121854​: res not tainted
ok 458
ok 459
ok 460
ok 461
ok 462
ok 463 - Exited with status 0
ok 464
ok 465
ok 466
ok 467
ok 468
ok 469
ok 470
ok 471
ok 472
ok 473
ok 474
ok 475
ok 476
ok 477
ok 478
ok 479
ok 480
ok 481
ok 482
ok 483 - chmod
ok 484
ok 485 # skip truncate() is not available
ok 486 # skip truncate() is not available
ok 487 - rename
ok 488
ok 489 - unlink
ok 490
ok 491 - utime
ok 492
ok 493 # skip chown() is not available
ok 494 # skip chown() is not available
ok 495 - link
ok 496
ok 497 # skip symlink() is not available
ok 498 # skip symlink() is not available
ok 499 - mkdir
ok 500
ok 501 - rmdir
ok 502
ok 503 - chdir
ok 504
ok 505 # skip chroot() is not available
ok 506 # skip chroot() is not available
ok 507 - require
ok 508
ok 509 - do
ok 510
ok 511 - open for read
ok 512
ok 513 - open for read
ok 514
ok 515
ok 516 - open for write
ok 517
ok 518 - open for write
ok 519
ok 520 - popen to
ok 521
ok 522 - popen from
ok 523
ok 524 - popen to
ok 525
ok 526 - popen from
ok 527
ok 528 - exec
ok 529
ok 530 - system
ok 531
ok 532 - backticks
ok 533
ok 534 # skip This is not VMS
ok 535 # skip This is not VMS
ok 536 - kill
ok 537
ok 538 # skip setpgrp() is not available
ok 539 # skip setpgrp() is not available
ok 540 # skip setpriority() is not available
ok 541 # skip setpriority() is not available
ok 542 # skip syscall() is not available
ok 543 # skip syscall() is not available
ok 544
ok 545 - ioctl
ok 546
ok 547
ok 548 - ioctl
ok 549
ok 550 # skip fcntl() is not available
ok 551 # skip fcntl() is not available
ok 552 # skip fcntl() is not available
ok 553 # skip fcntl() is not available
ok 554
ok 555
ok 556
ok 557
ok 558
ok 559
ok 560
ok 561
ok 562
ok 563
ok 564
ok 565
ok 566
ok 567
ok 568
ok 569
ok 570
ok 571
ok 572
ok 573
ok 574
ok 575
ok 576
ok 577
ok 578
ok 579
ok 580
ok 581
ok 582
ok 583
ok 584
ok 585
ok 586
ok 587
ok 588
ok 589
ok 590
ok 591
ok 592
ok 593
ok 594
ok 595
ok 596 # skip getpwent() is not available
ok 597 # skip getpwent() is not available
ok 598 # skip getpwent() is not available
ok 599 # skip getpwent() is not available
ok 600 # skip getpwent() is not available
ok 601 # skip getpwent() is not available
ok 602 # skip getpwent() is not available
ok 603 # skip getpwent() is not available
ok 604 # skip getpwent() is not available
ok 605
ok 606 # skip readlink() or symlink() is not available
ok 607
ok 608
ok 609
ok 610
ok 611
ok 612 # skip no IPC​::SysV
ok 613 # skip no IPC​::SysV
ok 614
ok 615
ok 616
ok 617
ok 618
ok 619
ok 620
ok 621
ok 622
ok 623
ok 624
ok 625
ok 626
ok 627 - sysopen
ok 628
ok 629 - sysopen
ok 630
ok 631 - sysopen
ok 632
ok 633 - sysopen
ok 634
ok 635 - sysopen
ok 636
ok 637
ok 638
ok 639 - sysopen
ok 640
ok 641 - sysopen
ok 642
ok 643 - sysopen
ok 644
ok 645 - sysopen
ok 646
ok 647 - sysopen
ok 648
ok 649
ok 650
ok 651 - sysopen
ok 652
ok 653 - sysopen
ok 654
ok 655 - sysopen
ok 656
ok 657 - sysopen
ok 658
ok 659 - sysopen
ok 660
ok 661
ok 662
ok 663
ok 664 - $^TAINT is on
ok 665 - $^TAINT is not assignable
ok 666 - Assigning to ${^TAINT} fails
ok 667
ok 668
ok 669
ok 670 # skip system {} has different semantics on Win32
ok 671 - exec
ok 672
ok 673 - exec
ok 674
ok 675 - exec
ok 676
ok 677 - exec
ok 678
ok 679 - exec
ok 680
ok 681 - system
ok 682
ok 683 - system
ok 684
ok 685 - system
ok 686
ok 687 - system
ok 688
ok 689 - system
ok 690
ok 691
ok 692
ok 693
ok 694
ok 695
ok 696
ok 697
ok 698
ok 699
ok 700
ok 701
ok 702
ok 703
ok 704
ok 705
ok 706
ok 707
ok 708
ok 709
ok 710
ok 711
ok 712
ok 713
ok 714
ok 715
ok 716
ok 717
ok 718
ok 719
ok 720
ok 721
ok 722
ok 723
ok 724
ok 725
ok 726
ok 727
ok 728
ok 729
ok 730
ok 731
ok 732
ok 733
ok 734
ok 735
ok 736 - infinite m//g on arrays (aelemfast)
ok 737 - infinite m//g on arrays (aelem)
ok 738 - infinite m//g on hashes (helem)
ok 739 - Arithmetic on tainted dualvars works
ok 740 # skip fork() is not available
ok 741 # skip fork() is not available
ok 742 # skip fork() is not available
ok 743 - $AUTOLOAD can be untainted
ok 744 - $AUTOLOAD can be untainted
ok 745 - $AUTOLOAD can be tainted
ok 746 - $AUTOLOAD can be tainted
ok 747 - $AUTOLOAD can be untainted
ok 748 - $AUTOLOAD can be untainted
ok 749 - printf doesn't like tainted formats
ok 750
ok 751 - printf doesn't like tainted format expressions
ok 752
# foo
ok 753 - printf accepts other tainted args
ok 754 - sprintf doesn't like tainted formats
ok 755
ok 756 - sprintf doesn't like tainted format expressions
ok 757
ok 758 - sprintf accepts other tainted args
ok 759 - Assignment to untainted variable
ok 760 - Assignment to tainted variable
ok 761 - eval doesn't like tainted strings
ok 762
ok 763
ok 764
ok 765 - \S match with chr 78
ok 766
ok 767 - \S match with chr 163
ok 768
ok 769 - \S match with chr 256
ok 770 - tainted crypt
ok 771 - untainted crypt
ok 772 - tainted complement
ok 773 - untainted complement
ok 774 - tainted data
ok 775 - tainted result 0
ok 776 - correct content 0
ok 777 - tainted result 1
ok 778 - correct content 1
ok 779 - tainted result 2
ok 780 - correct content 2
ok 781 - tainted result 3
ok 782 - correct content 3
ok 783 - still tainted data
ok 784 - tainted result 0
ok 785 - correct content 0
ok 786 - tainted result 1
ok 787 - correct content 1
ok 788 - tainted result 2
ok 789 - correct content 2
ok 790 - tainted result 3
ok 791 - correct content 3
ok 792 - still tainted data
ok 793 - tainted result 0
ok 794 - correct content 0
ok 795 - tainted result 1
ok 796 - correct content 1
ok 797 - tainted result 2
ok 798 - correct content 2
ok 799 - tainted result 3
ok 800 - correct content 3
ok 801 - pack a* preserves tainting
ok 802 - pack A* preserves tainting
ok 803 - pack a*a* preserves tainting
ok 804 - tainted $!
ok 805 - tied arg1 tainted
ok 806 - tied arg2 tainted
ok 807 - tied arg1 tainted
ok 808 - tied arg2 tainted
ok 809 - tied STORE called correct number of times
ok 810 - sprintf '%s', '', '0'
ok 811 - sprintf ' %s', '', '0'
ok 812 - sprintf '%s%s', '', '0'
ok 813 - sprintf '%s', '', '456'
ok 814 - sprintf ' %s', '', '456'
ok 815 - sprintf '%s%s', '', '456'
ok 816 - sprintf '%s', '123', '0'
ok 817 - sprintf ' %s', '123', '0'
ok 818 - sprintf '%s%s', '123', '0'
ok 819 - sprintf '%s', '123', '456'
ok 820 - sprintf ' %s', '123', '456'
ok 821 - sprintf '%s%s', '123', '456'
ok 822 - $1 should be tainted
ok 823 - $untainted should be untainted
ok 824 - $untainted should still be untainted
ok 825 - $untainted should yet still be untainted
ok 826 - formline survives a tainted dynamic picture
ok 827 - format accumulator not tainted yet
ok 828 - tainted formline argument makes a tainted accumulator
ok 829 - accumulator can be explicitly untainted
ok 830 - accumulator still untainted
ok 831 - accumulator can be explicitly tainted
ok 832 - accumulator still tainted
ok 833 - accumulator untainted again
ok 834 - accumulator still untainted
ok 835 - the accumulator should be tainted already
ok 836 - tainted formline picture makes a tainted accumulator
ok 837 - regex optimization of single char /[]/i doesn't taint
ok 838 - regex optimization of single char /[]/i doesn't taint
ok 839 - RT 81230
ok 840 - Constants folded value not tainted
ok 841 - match bare regex
ok 842 - match bare regex taint
ok 843 - match bare regex taint value
ok 844 - user-defined property​: non-tainted case
ok 845 - user-defined property​: tainted case
not ok 846 - user-defined property; defn not known until runtime, tainted case
ok 847 - lc(tainted) taints its return value
ok 848 - lcfirst(tainted) taints its return value
ok 849 - uc(tainted) taints its return value
ok 850 - ucfirst(tainted) taints its return value
ok 851 - tainted value returned from when is correct
ok 852 - tainted value returned from when stays tainted
ok 853 - tainted value returned from given end is correct
ok 854 - tainted value returned from given end stays tainted
ok 855 - tainted value returned from default is correct
ok 856 - tainted value returned from default stays tainted
ok 857 - initial taintedness
ok 858 - constant is tainted properly
ok 859 - tainting not broken yet
ok 860 - tainting still works after index() of the constant
ok 861 - $tainted ~~ ["whatever", "match"]
ok 862 - $tainted ~~ ["whatever", undef]
ok 863 - no death when TARG of ref is tainted
ok 864 - PID not tainted initially
ok 865 - PID not tainted when read in tainted expression
ok 866 - under locale, lc(latin1) taints the result
ok 867 - under locale, lc(utf8) taints the result
ok 868 - under locale, \Flatin1 taints the result
ok 869 - under locale, \Futf8 taints the result
ok 870 - error should be propagated
ok 871 - tainted (?{})
ok 872 - reset does not taint undef
ok 873 - tainted constant as logop condition should not prevent "use"
ok 874 - + SETi
ok 875 - - SETi
ok 876 - * SETi
ok 877 - + SETn
ok 878 - - SETn
ok 879 - * SETn
ok 880
ok 881 - list assign tainted a
ok 882 - list assign tainted b
ok 883 - list assign tainted c
ok 884 - list assign detainted a
ok 885 - list assign detainted b
ok 886 - list assign detainted c
ok 887 - list assign empty rhs a
ok 888 - list assign empty rhs b
ok 889 - list assign empty rhs c
ok 890 - list assign already tainted expression a
ok 891 - list assign already tainted expression b
ok 892 - list assign already tainted expression c
ok 893 - list assign post tainted expression a
ok 894 - list assign post tainted expression b
ok 895 - overload preserves cleanliness
ok 896 - overload preserves taint
ok 897 - substitution with partial replacement overloaded and clean​: s not tainted
ok 898 - substitution with partial replacement overloaded and clean​: res not tainted
ok 899 - substitution with partial replacement overloaded and clean​: $1 not tainted
ok 900 - substitution with partial replacement overloaded and clean​: s value
ok 901 - substitution with partial replacement overloaded and clean​: res value
ok 902 - substitution with partial replacement overloaded and clean​: $1 value
ok 903 - substitution with partial replacement overloaded and tainted​: s tainted
ok 904 - substitution with partial replacement overloaded and tainted​: res not tainted
ok 905 - substitution with partial replacement overloaded and tainted​: $1 not tainted
ok 906 - substitution with partial replacement overloaded and tainted​: s value
ok 907 - substitution with partial replacement overloaded and tainted​: res value
ok 908 - substitution with partial replacement overloaded and tainted​: $1 value
ok 909 - substitution with whole replacement overloaded and clean​: s not tainted
ok 910 - substitution with whole replacement overloaded and clean​: res not tainted
ok 911 - substitution with whole replacement overloaded and clean​: $1 not tainted
ok 912 - substitution with whole replacement overloaded and clean​: s value
ok 913 - substitution with whole replacement overloaded and clean​: res value
ok 914 - substitution with whole replacement overloaded and clean​: $1 value
ok 915 - substitution with whole replacement overloaded and tainted​: s tainted
ok 916 - substitution with whole replacement overloaded and tainted​: res not tainted
ok 917 - substitution with whole replacement overloaded and tainted​: $1 not tainted
ok 918 - substitution with whole replacement overloaded and tainted​: s value
ok 919 - substitution with whole replacement overloaded and tainted​: res value
ok 920 - substitution with whole replacement overloaded and tainted​: $1 value
ok 921 - substitution /e with partial replacement overloaded and clean​: s not tainted
ok 922 - substitution /e with partial replacement overloaded and clean​: res not tainted
ok 923 - substitution /e with partial replacement overloaded and clean​: $1 not tainted
ok 924 - substitution /e with partial replacement overloaded and clean​: s value
ok 925 - substitution /e with partial replacement overloaded and clean​: res value
ok 926 - substitution /e with partial replacement overloaded and clean​: $1 value
ok 927 - substitution /e with partial replacement overloaded and tainted​: s tainted
ok 928 - substitution /e with partial replacement overloaded and tainted​: res not tainted
ok 929 - substitution /e with partial replacement overloaded and tainted​: $1 not tainted
ok 930 - substitution /e with partial replacement overloaded and tainted​: s value
ok 931 - substitution /e with partial replacement overloaded and tainted​: res value
ok 932 - substitution /e with partial replacement overloaded and tainted​: $1 value
ok 933 - substitution /e with whole replacement overloaded and clean​: s not tainted
ok 934 - substitution /e with whole replacement overloaded and clean​: res not tainted
ok 935 - substitution /e with whole replacement overloaded and clean​: $1 not tainted
ok 936 - substitution /e with whole replacement overloaded and clean​: s value
ok 937 - substitution /e with whole replacement overloaded and clean​: res value
ok 938 - substitution /e with whole replacement overloaded and clean​: $1 value
ok 939 - substitution /e with whole replacement overloaded and tainted​: s tainted
ok 940 - substitution /e with whole replacement overloaded and tainted​: res not tainted
ok 941 - substitution /e with whole replacement overloaded and tainted​: $1 not tainted
ok 942 - substitution /e with whole replacement overloaded and tainted​: s value
ok 943 - substitution /e with whole replacement overloaded and tainted​: res value
ok 944 - substitution /e with whole replacement overloaded and tainted​: $1 value
ok 945 - substitution /e with extra code and partial replacement overloaded and clean​: s not tainted
ok 946 - substitution /e with extra code and partial replacement overloaded and clean​: res not tainted
ok 947 - substitution /e with extra code and partial replacement overloaded and clean​: $1 not tainted
ok 948 - substitution /e with extra code and partial replacement overloaded and clean​: s value
ok 949 - substitution /e with extra code and partial replacement overloaded and clean​: res value
ok 950 - substitution /e with extra code and partial replacement overloaded and clean​: $1 value
ok 951 - substitution /e with extra code and partial replacement overloaded and tainted​: s tainted
ok 952 - substitution /e with extra code and partial replacement overloaded and tainted​: res not tainted
ok 953 - substitution /e with extra code and partial replacement overloaded and tainted​: $1 not tainted
ok 954 - substitution /e with extra code and partial replacement overloaded and tainted​: s value
ok 955 - substitution /e with extra code and partial replacement overloaded and tainted​: res value
ok 956 - substitution /e with extra code and partial replacement overloaded and tainted​: $1 value
ok 957 - substitution /e with extra code and whole replacement overloaded and clean​: s not tainted
ok 958 - substitution /e with extra code and whole replacement overloaded and clean​: res not tainted
ok 959 - substitution /e with extra code and whole replacement overloaded and clean​: $1 not tainted
ok 960 - substitution /e with extra code and whole replacement overloaded and clean​: s value
ok 961 - substitution /e with extra code and whole replacement overloaded and clean​: res value
ok 962 - substitution /e with extra code and whole replacement overloaded and clean​: $1 value
ok 963 - substitution /e with extra code and whole replacement overloaded and tainted​: s tainted
ok 964 - substitution /e with extra code and whole replacement overloaded and tainted​: res not tainted
ok 965 - substitution /e with extra code and whole replacement overloaded and tainted​: $1 not tainted
ok 966 - substitution /e with extra code and whole replacement overloaded and tainted​: s value
ok 967 - substitution /e with extra code and whole replacement overloaded and tainted​: res value
ok 968 - substitution /e with extra code and whole replacement overloaded and tainted​: $1 value
ok 969 - substitution /r with partial replacement overloaded and clean​: s not tainted
ok 970 - substitution /r with partial replacement overloaded and clean​: res not tainted
ok 971 - substitution /r with partial replacement overloaded and clean​: $1 not tainted
ok 972 - substitution /r with partial replacement overloaded and clean​: s value
ok 973 - substitution /r with partial replacement overloaded and clean​: res value
ok 974 - substitution /r with partial replacement overloaded and clean​: $1 value
ok 975 - substitution /r with partial replacement overloaded and tainted​: s not tainted
ok 976 - substitution /r with partial replacement overloaded and tainted​: res tainted
ok 977 - substitution /r with partial replacement overloaded and tainted​: $1 not tainted
ok 978 - substitution /r with partial replacement overloaded and tainted​: s value
ok 979 - substitution /r with partial replacement overloaded and tainted​: res value
ok 980 - substitution /r with partial replacement overloaded and tainted​: $1 value
ok 981 - substitution /r with whole replacement overloaded and clean​: s not tainted
ok 982 - substitution /r with whole replacement overloaded and clean​: res not tainted
ok 983 - substitution /r with whole replacement overloaded and clean​: $1 not tainted
ok 984 - substitution /r with whole replacement overloaded and clean​: s value
ok 985 - substitution /r with whole replacement overloaded and clean​: res value
ok 986 - substitution /r with whole replacement overloaded and clean​: $1 value
ok 987 - substitution /r with whole replacement overloaded and tainted​: s not tainted
ok 988 - substitution /r with whole replacement overloaded and tainted​: res tainted
ok 989 - substitution /r with whole replacement overloaded and tainted​: $1 not tainted
ok 990 - substitution /r with whole replacement overloaded and tainted​: s value
ok 991 - substitution /r with whole replacement overloaded and tainted​: res value
ok 992 - substitution /r with whole replacement overloaded and tainted​: $1 value
ok 993 - substitution /g with partial replacement overloaded and clean​: s not tainted
ok 994 - substitution /g with partial replacement overloaded and clean​: res not tainted
ok 995 - substitution /g with partial replacement overloaded and clean​: $1 not tainted
ok 996 - substitution /g with partial replacement overloaded and clean​: s value
ok 997 - substitution /g with partial replacement overloaded and clean​: res value
ok 998 - substitution /g with partial replacement overloaded and clean​: $1 value
ok 999 - substitution /g with partial replacement overloaded and tainted​: s tainted
ok 1000 - substitution /g with partial replacement overloaded and tainted​: res not tainted
ok 1001 - substitution /g with partial replacement overloaded and tainted​: $1 not tainted
ok 1002 - substitution /g with partial replacement overloaded and tainted​: s value
ok 1003 - substitution /g with partial replacement overloaded and tainted​: res value
ok 1004 - substitution /g with partial replacement overloaded and tainted​: $1 value
ok 1005 - substitution /g with whole replacement overloaded and clean​: s not tainted
ok 1006 - substitution /g with whole replacement overloaded and clean​: res not tainted
ok 1007 - substitution /g with whole replacement overloaded and clean​: $1 not tainted
ok 1008 - substitution /g with whole replacement overloaded and clean​: s value
ok 1009 - substitution /g with whole replacement overloaded and clean​: res value
ok 1010 - substitution /g with whole replacement overloaded and clean​: $1 value
ok 1011 - substitution /g with whole replacement overloaded and tainted​: s tainted
ok 1012 - substitution /g with whole replacement overloaded and tainted​: res not tainted
ok 1013 - substitution /g with whole replacement overloaded and tainted​: $1 not tainted
ok 1014 - substitution /g with whole replacement overloaded and tainted​: s value
ok 1015 - substitution /g with whole replacement overloaded and tainted​: res value
ok 1016 - substitution /g with whole replacement overloaded and tainted​: $1 value
ok 1017 - substitution /ge with partial replacement overloaded and clean​: s not tainted
ok 1018 - substitution /ge with partial replacement overloaded and clean​: res not tainted
ok 1019 - substitution /ge with partial replacement overloaded and clean​: $1 not tainted
ok 1020 - substitution /ge with partial replacement overloaded and clean​: s value
ok 1021 - substitution /ge with partial replacement overloaded and clean​: res value
ok 1022 - substitution /ge with partial replacement overloaded and clean​: $1 value
ok 1023 - substitution /ge with partial replacement overloaded and tainted​: s tainted
ok 1024 - substitution /ge with partial replacement overloaded and tainted​: res not tainted
ok 1025 - substitution /ge with partial replacement overloaded and tainted​: $1 not tainted
ok 1026 - substitution /ge with partial replacement overloaded and tainted​: s value
ok 1027 - substitution /ge with partial replacement overloaded and tainted​: res value
ok 1028 - substitution /ge with partial replacement overloaded and tainted​: $1 value
ok 1029 - substitution /ge with whole replacement overloaded and clean​: s not tainted
ok 1030 - substitution /ge with whole replacement overloaded and clean​: res not tainted
ok 1031 - substitution /ge with whole replacement overloaded and clean​: $1 not tainted
ok 1032 - substitution /ge with whole replacement overloaded and clean​: s value
ok 1033 - substitution /ge with whole replacement overloaded and clean​: res value
ok 1034 - substitution /ge with whole replacement overloaded and clean​: $1 value
ok 1035 - substitution /ge with whole replacement overloaded and tainted​: s tainted
ok 1036 - substitution /ge with whole replacement overloaded and tainted​: res not tainted
ok 1037 - substitution /ge with whole replacement overloaded and tainted​: $1 not tainted
ok 1038 - substitution /ge with whole replacement overloaded and tainted​: s value
ok 1039 - substitution /ge with whole replacement overloaded and tainted​: res value
ok 1040 - substitution /ge with whole replacement overloaded and tainted​: $1 value
ok 1041 - RT \#132385
ok 1042 - Match on tainted multiline data should fail promptly
Failed 1/1042 subtests
  (less 50 skipped subtests​: 991 okay)

Test Summary Report


op/taint.t (Wstat​: 0 Tests​: 1042 Failed​: 1)
  Failed test​: 846
Files=1, Tests=1042, 0 wallclock secs ( 0.06 usr + 0.00 sys = 0.06 CPU)
Result​: FAIL

@p5pRT
Copy link
Author

p5pRT commented Apr 4, 2019

From @iabyn

On Wed, Apr 03, 2019 at 09​:59​:15AM -0700, Steve Hay (via RT) wrote​:

Blead is currently failing test 846 in t/op/taint.t on Windows (this
is Windows 10)​:

I get the same result using VC12, VC14, VC14.1 and MinGW-w64 GCC 7.1.0, all x64.

I can't reproduce it on linux. The test is​:

  {

  local $ENV{XX} = '\p{IsB}'; # Making it an environment variable taints it

  fresh_perl_like(<<'EOF',
  BEGIN { $re = qr/$ENV{XX}/; }

  sub IsB { "42" };
  "B" =~ $re
  EOF
  qr/Insecure user-defined property \\p\{main​::IsB\}/,
  { switches => [ "-T" ] },
  "user-defined property; defn not known until runtime, tainted case");
  }

This whiffs of stuff that Karl's been tweaking recently.

--
The warp engines start playing up a bit, but seem to sort themselves out
after a while without any intervention from boy genius Wesley Crusher.
  -- Things That Never Happen in "Star Trek" #17

@p5pRT
Copy link
Author

p5pRT commented Apr 4, 2019

The RT System itself - Status changed from 'new' to 'open'

@p5pRT
Copy link
Author

p5pRT commented Apr 4, 2019

From @khwilliamson

On 4/4/19 3​:19 AM, Dave Mitchell wrote​:

On Wed, Apr 03, 2019 at 09​:59​:15AM -0700, Steve Hay (via RT) wrote​:

Blead is currently failing test 846 in t/op/taint.t on Windows (this
is Windows 10)​:

I get the same result using VC12, VC14, VC14.1 and MinGW-w64 GCC 7.1.0, all x64.

I can't reproduce it on linux. The test is​:

 \{

     local $ENV\{XX\} = '\\p\{IsB\}';   \# Making it an environment variable taints it

     fresh\_perl\_like\(\<\<'EOF'\,
         BEGIN \{ $re = qr/$ENV\{XX\}/; \}

         sub IsB \{ "42" \};
         "B" =~ $re
 EOF
      qr/Insecure user\-defined property \\\\p\\\{main&#8203;::IsB\\\}/\,
      \{ switches => \[ "\-T" \] \}\,
     "user\-defined property; defn not known until runtime\, tainted case"\);
 \}

This whiffs of stuff that Karl's been tweaking recently.

I can reproduce it on the WIndows box attached to dromedary. Is there
something about windows that differs from Linux in regards to tainting?

@p5pRT
Copy link
Author

p5pRT commented Apr 4, 2019

From @iabyn

On Thu, Apr 04, 2019 at 07​:51​:53AM -0600, Karl Williamson wrote​:

I can reproduce it on the WIndows box attached to dromedary. Is there
something about windows that differs from Linux in regards to tainting?

Nothing that I'm aware of

--
In England there is a special word which means the last sunshine
of the summer. That word is "spring".

@p5pRT
Copy link
Author

p5pRT commented Apr 4, 2019

From @khwilliamson

On 4/4/19 9​:19 AM, Dave Mitchell wrote​:

On Thu, Apr 04, 2019 at 07​:51​:53AM -0600, Karl Williamson wrote​:

I can reproduce it on the WIndows box attached to dromedary. Is there
something about windows that differs from Linux in regards to tainting?

Nothing that I'm aware of

In particular it is this that isn't getting tainted​:

local $ENV{XX} = '\p{IsB}'; # Making it an environment variable taints it

The other taint tests work that use different ways to taint, such as

  $prop = "IsA$TAINT";
  eval { "A" =~ /\p{$prop}/};

@p5pRT
Copy link
Author

p5pRT commented Apr 12, 2019

From @khwilliamson

On Thu, 04 Apr 2019 10​:49​:37 -0700, public@​khwilliamson.com wrote​:

On 4/4/19 9​:19 AM, Dave Mitchell wrote​:

On Thu, Apr 04, 2019 at 07​:51​:53AM -0600, Karl Williamson wrote​:

I can reproduce it on the WIndows box attached to dromedary. Is there
something about windows that differs from Linux in regards to tainting?

Nothing that I'm aware of

In particular it is this that isn't getting tainted​:

local $ENV{XX} = '\p{IsB}'; # Making it an environment variable taints it

The other taint tests work that use different ways to taint, such as

 $prop = "IsA$TAINT";
 eval \{ "A" =~ /\\p\{$prop\}/\};

I noticed that elsewhere in this .t, tests for ENV being tainted are skipped. Unskipping them causes them to fail. The commit that added the skip dates from the 1990's as part of an omnibus update, so there's no commit message.

I suspect the answer to this ticket is to skip this test on the same platforms the other ENV tests are skipped for.
--
Karl Williamson

@p5pRT
Copy link
Author

p5pRT commented Apr 19, 2019

From @steve-m-hay

On Fri, 12 Apr 2019 11​:43​:18 -0700, khw wrote​:

On Thu, 04 Apr 2019 10​:49​:37 -0700, public@​khwilliamson.com wrote​:

On 4/4/19 9​:19 AM, Dave Mitchell wrote​:

On Thu, Apr 04, 2019 at 07​:51​:53AM -0600, Karl Williamson wrote​:

I can reproduce it on the WIndows box attached to dromedary. Is
there
something about windows that differs from Linux in regards to
tainting?

Nothing that I'm aware of

In particular it is this that isn't getting tainted​:

local $ENV{XX} = '\p{IsB}'; # Making it an environment variable
taints it

The other taint tests work that use different ways to taint, such as

$prop = "IsA$TAINT";
eval { "A" =~ /\p{$prop}/};

I noticed that elsewhere in this .t, tests for ENV being tainted are
skipped. Unskipping them causes them to fail. The commit that added
the skip dates from the 1990's as part of an omnibus update, so
there's no commit message.

I suspect the answer to this ticket is to skip this test on the same
platforms the other ENV tests are skipped for.

Now skipped, in commit e8aa9ef. Leaving ticket open for now since it would be nice to understand why the skip is necessary.

@p5pRT
Copy link
Author

p5pRT commented Apr 20, 2019

From @khwilliamson

On 4/19/19 10​:18 AM, Steve Hay via RT wrote​:

On Fri, 12 Apr 2019 11​:43​:18 -0700, khw wrote​:

On Thu, 04 Apr 2019 10​:49​:37 -0700, public@​khwilliamson.com wrote​:

On 4/4/19 9​:19 AM, Dave Mitchell wrote​:

On Thu, Apr 04, 2019 at 07​:51​:53AM -0600, Karl Williamson wrote​:

I can reproduce it on the WIndows box attached to dromedary. Is
there
something about windows that differs from Linux in regards to
tainting?

Nothing that I'm aware of

In particular it is this that isn't getting tainted​:

local $ENV{XX} = '\p{IsB}'; # Making it an environment variable
taints it

The other taint tests work that use different ways to taint, such as

$prop = "IsA$TAINT";
eval { "A" =~ /\p{$prop}/};

I noticed that elsewhere in this .t, tests for ENV being tainted are
skipped. Unskipping them causes them to fail. The commit that added
the skip dates from the 1990's as part of an omnibus update, so
there's no commit message.

I suspect the answer to this ticket is to skip this test on the same
platforms the other ENV tests are skipped for.

Now skipped, in commit e8aa9ef. Leaving ticket open for now since it would be nice to understand why the skip is necessary.

I asked jhi, and he doesn't remember. He suggested Gurusamy Sarathy,
but I don't know how to get hold of him.

---
via perlbug​: queue​: perl5 status​: open
https://rt-archive.perl.org/perl5/Ticket/Display.html?id=133980

@p5pRT
Copy link
Author

p5pRT commented Apr 22, 2019

From @steve-m-hay

On Sat, 20 Apr 2019 00​:05​:49 -0700, public@​khwilliamson.com wrote​:

On 4/19/19 10​:18 AM, Steve Hay via RT wrote​:

On Fri, 12 Apr 2019 11​:43​:18 -0700, khw wrote​:

On Thu, 04 Apr 2019 10​:49​:37 -0700, public@​khwilliamson.com wrote​:

On 4/4/19 9​:19 AM, Dave Mitchell wrote​:

On Thu, Apr 04, 2019 at 07​:51​:53AM -0600, Karl Williamson wrote​:

I can reproduce it on the WIndows box attached to dromedary. Is
there
something about windows that differs from Linux in regards to
tainting?

Nothing that I'm aware of

In particular it is this that isn't getting tainted​:

local $ENV{XX} = '\p{IsB}'; # Making it an environment variable
taints it

The other taint tests work that use different ways to taint, such
as

$prop = "IsA$TAINT";
eval { "A" =~ /\p{$prop}/};

I noticed that elsewhere in this .t, tests for ENV being tainted are
skipped. Unskipping them causes them to fail. The commit that
added
the skip dates from the 1990's as part of an omnibus update, so
there's no commit message.

I suspect the answer to this ticket is to skip this test on the same
platforms the other ENV tests are skipped for.

Now skipped, in commit e8aa9ef.
Leaving ticket open for now since it would be nice to understand why
the skip is necessary.

I asked jhi, and he doesn't remember. He suggested Gurusamy Sarathy,
but I don't know how to get hold of him.

I found Gurusamy Sarathy, now Sarathy Naicker, on LinkedIn :-) I will ask him to take a quick look at this ticket in the hope that something here may jog his memory.

Additional information, which I emailed to Karl (and Jan Dubois) but didn't put on this ticket yet​:

"I wonder if it might be at least partly related to the Perl Host thing (iperlsys.h), which I think (?) is only used on Windows (win32/perlhost.h).

By default, perl on Windows is built with USE_IMP_SYS set to 'define' in the win32/Makefile. That #defines PERL_IMPLICIT_SYS, pulls in a couple of extra source files, including win32/perlhost.h, and results in all OS calls being encapsulated in interfaces like what PerlIO does for IO.

For environment handling, the OS calls go through PerlEnv. Maybe that has some problem with taint?

If you build with USE_IMP_SYS=define commented out then test 846 now passes, but unfortunately other tests (2, 4 and 5) that are normally skipped still fail when not skipped so this isn't the whole story."

So the current situation is that tests 2, 3, 4, 5 and 846 are skipped because they fail in a default build, which has PERL_IMPLICIT_SYS defined. With PERL_IMPLICIT_SYS undefined tests 3 and 846 now pass, but tests 2, 4 and 5 still fail.

@p5pRT
Copy link
Author

p5pRT commented Apr 24, 2019

From @steve-m-hay

On Mon, 22 Apr 2019 08​:55​:24 -0700, shay wrote​:

On Sat, 20 Apr 2019 00​:05​:49 -0700, public@​khwilliamson.com wrote​:

On 4/19/19 10​:18 AM, Steve Hay via RT wrote​:

On Fri, 12 Apr 2019 11​:43​:18 -0700, khw wrote​:

On Thu, 04 Apr 2019 10​:49​:37 -0700, public@​khwilliamson.com wrote​:

On 4/4/19 9​:19 AM, Dave Mitchell wrote​:

On Thu, Apr 04, 2019 at 07​:51​:53AM -0600, Karl Williamson wrote​:

I can reproduce it on the WIndows box attached to dromedary.
Is
there
something about windows that differs from Linux in regards to
tainting?

Nothing that I'm aware of

In particular it is this that isn't getting tainted​:

local $ENV{XX} = '\p{IsB}'; # Making it an environment variable
taints it

The other taint tests work that use different ways to taint, such
as

$prop = "IsA$TAINT";
eval { "A" =~ /\p{$prop}/};

I noticed that elsewhere in this .t, tests for ENV being tainted
are
skipped. Unskipping them causes them to fail. The commit that
added
the skip dates from the 1990's as part of an omnibus update, so
there's no commit message.

I suspect the answer to this ticket is to skip this test on the
same
platforms the other ENV tests are skipped for.

Now skipped, in commit e8aa9ef.
Leaving ticket open for now since it would be nice to understand
why
the skip is necessary.

I asked jhi, and he doesn't remember. He suggested Gurusamy Sarathy,
but I don't know how to get hold of him.

I found Gurusamy Sarathy, now Sarathy Naicker, on LinkedIn :-) I will
ask him to take a quick look at this ticket in the hope that something
here may jog his memory.

Reply from Sarathy​: "the Perl Host option probably uses an implementation that fetches from the environment in a dynamic fashion. The traditional unix notion of a contiguous environment block is not well-supported on windows, and is non-existent in virtualized environments like web servers. Off hand, I can't remember why that would change the semantics for tainting, but perhaps there isn't enough context for the taint flag to propagate when dynamically fetching and creating a temporary SV under those conditions? Might also be worth tracking down how the %ENV magic results in calling the equivalent of getenv() on windows to see at what point the taint propagation fails."

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants