Open p5pRT opened 5 years ago
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.
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
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
The RT System itself - Status changed from 'new' to 'open'
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​::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?
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".
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}/};
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
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 e8aa9efe194720b3919085f4299f812d661d5d53. Leaving ticket open for now since it would be nice to understand why the skip is necessary.
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 e8aa9efe194720b3919085f4299f812d661d5d53. 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
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 e8aa9efe194720b3919085f4299f812d661d5d53. 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.
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 e8aa9efe194720b3919085f4299f812d661d5d53. 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."
Migrated from rt.perl.org#133980 (status was 'open')
Searchable as RT133980$