RHEL Engineering is moving the tracking of its product development work on RHEL 6 through RHEL 9 to Red Hat Jira (issues.redhat.com). If you're a Red Hat customer, please continue to file support cases via the Red Hat customer portal. If you're not, please head to the "RHEL project" in Red Hat Jira and file new tickets here. Individual Bugzilla bugs in the statuses "NEW", "ASSIGNED", and "POST" are being migrated throughout September 2023. Bugs of Red Hat partners with an assigned Engineering Partner Manager (EPM) are migrated in late September as per pre-agreed dates. Bugs against components "kernel", "kernel-rt", and "kpatch" are only migrated if still in "NEW" or "ASSIGNED". If you cannot log in to RH Jira, please consult article #7032570. That failing, please send an e-mail to the RH Jira admins at rh-issues@redhat.com to troubleshoot your issue as a user management inquiry. The email creates a ServiceNow ticket with Red Hat. Individual Bugzilla bugs that are migrated will be moved to status "CLOSED", resolution "MIGRATED", and set with "MigratedToJIRA" in "Keywords". The link to the successor Jira issue will be found under "Links", have a little "two-footprint" icon next to it, and direct you to the "RHEL project" in Red Hat Jira (issue links are of type "https://issues.redhat.com/browse/RHEL-XXXX", where "X" is a digit). This same link will be available in a blue banner at the top of the page informing you that that bug has been migrated.
Bug 1084796 - upstream test fails in FIPS mode
Summary: upstream test fails in FIPS mode
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: Red Hat Enterprise Linux 7
Classification: Red Hat
Component: perl
Version: 7.0
Hardware: All
OS: Linux
unspecified
high
Target Milestone: rc
: ---
Assignee: Petr Pisar
QA Contact: Martin Kyral
URL: https://rt.perl.org/Ticket/Display.ht...
Whiteboard:
Depends On:
Blocks: 839624
TreeView+ depends on / blocked
 
Reported: 2014-04-06 17:17 UTC by Ondrej Moriš
Modified: 2015-03-05 07:55 UTC (History)
4 users (show)

Fixed In Version: perl-5.16.3-285.el7
Doc Type: Bug Fix
Doc Text:
Cause: Executing perl upstream tests while FIPS mode is enabled. Consequence: Some tests fail. Fix: t/op/crypt.t and t/op/taint.t tests have been modified to use SHA-256 hash algorithm if default algorithm is not available. Result: All perl upstream tests run in FIPS-enabled environment pass.
Clone Of:
: 1128032 (view as bug list)
Environment:
Last Closed: 2015-03-05 07:55:16 UTC
Target Upstream Version:
Embargoed:


Attachments (Terms of Use)
Proposed fix for t/op/crypt.t (1.78 KB, patch)
2014-04-07 10:39 UTC, Petr Pisar
no flags Details | Diff
Proposed fix for t/op/taint.t (1.65 KB, patch)
2014-12-01 14:52 UTC, Petr Pisar
no flags Details | Diff


Links
System ID Private Priority Status Summary Last Updated
Red Hat Product Errata RHBA-2015:0338 0 normal SHIPPED_LIVE perl bug fix update 2015-03-05 12:22:38 UTC

Description Ondrej Moriš 2014-04-06 17:17:00 UTC
Description of problem:

The upstream test fails in FIPS mode, the following tests fails:

:: [   FAIL   ] :: Test: crypt.t (Expected 0, got 1):

Use of uninitialized value in substr at ./op/crypt.t line 33.
substr outside of string at ./op/crypt.t line 33.
Use of uninitialized value in substr at ./op/crypt.t line 33.
substr outside of string at ./op/crypt.t line 33.
Use of uninitialized value in string ne at ./op/crypt.t line 33.
Use of uninitialized value in string ne at ./op/crypt.t line 33.
# Failed test 1 - salt makes a difference at ./op/crypt.t line 33
./op/crypt.t .. 
Failed 1/4 subtests 

Test Summary Report
-------------------
./op/crypt.t (Wstat: 0 Tests: 4 Failed: 1)
  Failed test:  1
Files=1, Tests=4,  1 wallclock secs ( 0.02 usr  0.00 sys +  0.01 cusr  0.00 csys =  0.03 CPU)
Result: FAIL
Use of uninitialized value in substr at ./op/crypt.t line 33.
substr outside of string at ./op/crypt.t line 33.
Use of uninitialized value in substr at ./op/crypt.t line 33.
substr outside of string at ./op/crypt.t line 33.
Use of uninitialized value in string ne at ./op/crypt.t line 33.
Use of uninitialized value in string ne at ./op/crypt.t line 33.
# Failed test 1 - salt makes a difference at ./op/crypt.t line 33
./op/crypt.t .. 
1..4
not ok 1 - salt makes a difference
ok 2 - wide characters ungood
ok 3 - downgrade to eight bit characters
ok 4 - downgrade results agree
Failed 1/4 subtests 

Test Summary Report
-------------------
./op/crypt.t (Wstat: 0 Tests: 4 Failed: 1)
  Failed test:  1
Files=1, Tests=4,  0 wallclock secs ( 0.02 usr  0.00 sys +  0.01 cusr  0.00 csys =  0.03 CPU)
Result: FAIL

:: [   FAIL   ] :: Test: taint.t (Expected 0, got 1)

Use of uninitialized value in split at /usr/share/perl5/vendor_perl/TAP/Parser/SourceHandler/Perl.pm line 170.
# Failed test 694 - tainted crypt at ./op/taint.t line 1876
./op/taint.t .. 
Failed 1/794 subtests 
	(less 6 skipped subtests: 787 okay)

Test Summary Report
-------------------
./op/taint.t (Wstat: 0 Tests: 794 Failed: 1)
  Failed test:  694
Files=1, Tests=794,  0 wallclock secs ( 0.11 usr  0.01 sys +  0.11 cusr  0.03 csys =  0.26 CPU)
Result: FAIL
Use of uninitialized value in split at /usr/share/perl5/vendor_perl/TAP/Parser/SourceHandler/Perl.pm line 170.
# Failed test 694 - tainted crypt at ./op/taint.t line 1876
./op/taint.t .. 
1..794
ok 1
ok 2
ok 3
ok 4
ok 5
ok 6
ok 7
ok 8 # skip This is not VMS
ok 9 # skip This is not VMS
ok 10 # skip This is not VMS
ok 11 # skip This is not VMS
ok 12
ok 13
ok 14
ok 15
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 - match with string tainted: s tainted
ok 37 - match with string tainted: res not tainted
ok 38 - match with string tainted: $1 not tainted
ok 39 - match with string tainted: res value
ok 40 - match with string tainted: $1 value
ok 41 - match /g with string tainted: s tainted
ok 42 - match /g with string tainted: res not tainted
ok 43 - match /g with string tainted: $1 not tainted
ok 44 - match /g with string tainted: res value
ok 45 - match /g with string tainted: $1 value
ok 46 - match with string tainted, list cxt: s tainted
ok 47 - match with string tainted, list cxt: res not tainted
ok 48 - match with string tainted, list cxt: $1 not tainted
ok 49 - match with string tainted, list cxt: res value
ok 50 - match with string tainted, list cxt: $1 value
ok 51 - match /g with string tainted, list cxt: s tainted
ok 52 - match /g with string tainted, list cxt: res not tainted
ok 53 - match /g with string tainted, list cxt: res2 not tainted
ok 54 - match /g with string tainted, list cxt: $1 not tainted
ok 55 - match /g with string tainted, list cxt: res value
ok 56 - match /g with string tainted, list cxt: res2 value
ok 57 - match /g with string tainted, list cxt: $1 value
ok 58 - match with pattern tainted: s not tainted
ok 59 - match with pattern tainted: res not tainted
ok 60 - match with pattern tainted: $1 tainted
ok 61 - match with pattern tainted: res value
ok 62 - match with pattern tainted: $1 value
ok 63 - match /g with pattern tainted: s not tainted
ok 64 - match /g with pattern tainted: res not tainted
ok 65 - match /g with pattern tainted: $1 tainted
ok 66 - match /g with pattern tainted: res value
ok 67 - match /g with pattern tainted: $1 value
ok 68 - match with pattern tainted via locale: s not tainted
ok 69 - match with pattern tainted via locale: res not tainted
ok 70 - match with pattern tainted via locale: $1 tainted
ok 71 - match with pattern tainted via locale: res value
ok 72 - match with pattern tainted via locale: $1 value
ok 73 - match /g with pattern tainted via locale: s not tainted
ok 74 - match /g with pattern tainted via locale: res not tainted
ok 75 - match /g with pattern tainted via locale: $1 tainted
ok 76 - match /g with pattern tainted via locale: res value
ok 77 - match /g with pattern tainted via locale: $1 value
ok 78 - match with pattern tainted, list cxt: s not tainted
ok 79 - match with pattern tainted, list cxt: res tainted
ok 80 - match with pattern tainted, list cxt: $1 tainted
ok 81 - match with pattern tainted, list cxt: res value
ok 82 - match with pattern tainted, list cxt: $1 value
ok 83 - match /g with pattern tainted, list cxt: s not tainted
ok 84 - match /g with pattern tainted, list cxt: res tainted
ok 85 - match /g with pattern tainted, list cxt: $1 tainted
ok 86 - match /g with pattern tainted, list cxt: res value
ok 87 - match /g with pattern tainted, list cxt: res2 value
ok 88 - match /g with pattern tainted, list cxt: $1 value
ok 89 - match with pattern tainted via locale, list cxt: s not tainted
ok 90 - match with pattern tainted via locale, list cxt: res tainted
ok 91 - match with pattern tainted via locale, list cxt: $1 tainted
ok 92 - match with pattern tainted via locale, list cxt: res value
ok 93 - match with pattern tainted via locale, list cxt: $1 value
ok 94 - match /g with pattern tainted via locale, list cxt: s not tainted
ok 95 - match /g with pattern tainted via locale, list cxt: res tainted
ok 96 - match /g with pattern tainted via locale, list cxt: res2 tainted
ok 97 - match /g with pattern tainted via locale, list cxt: $1 tainted
ok 98 - match /g with pattern tainted via locale, list cxt: res value
ok 99 - match /g with pattern tainted via locale, list cxt: res2 value
ok 100 - match /g with pattern tainted via locale, list cxt: $1 value
ok 101 - substitution with string tainted: s tainted
ok 102 - substitution with string tainted: res not tainted
ok 103 - substitution with string tainted: $1 not tainted
ok 104 - substitution with string tainted: s value
ok 105 - substitution with string tainted: res value
ok 106 - substitution with string tainted: $1 value
ok 107 - substitution /g with string tainted: s tainted
ok 108 - substitution /g with string tainted: res tainted
ok 109 - substitution /g with string tainted: $1 not tainted
ok 110 - substitution /g with string tainted: s value
ok 111 - substitution /g with string tainted: res value
ok 112 - substitution /g with string tainted: $1 value
ok 113 - substitution /r with string tainted: s tainted
ok 114 - substitution /r with string tainted: res tainted
ok 115 - substitution /r with string tainted: $1 not tainted
ok 116 - substitution /r with string tainted: s value
ok 117 - substitution /r with string tainted: res value
ok 118 - substitution /r with string tainted: $1 value
ok 119 - substitution /e with string tainted: code not tainted within /e
ok 120 - substitution /e with string tainted: $1 not tainted within /e
ok 121 - substitution /e with string tainted: s tainted
ok 122 - substitution /e with string tainted: res not tainted
ok 123 - substitution /e with string tainted: $1 not tainted
ok 124 - substitution /e with string tainted: s value
ok 125 - substitution /e with string tainted: res value
ok 126 - substitution /e with string tainted: $1 value
ok 127 - substitution with pattern tainted: s tainted
ok 128 - substitution with pattern tainted: res not tainted
ok 129 - substitution with pattern tainted: $1 tainted
ok 130 - substitution with pattern tainted: s value
ok 131 - substitution with pattern tainted: res value
ok 132 - substitution with pattern tainted: $1 value
ok 133 - substitution /g with pattern tainted: s tainted
ok 134 - substitution /g with pattern tainted: res tainted
ok 135 - substitution /g with pattern tainted: $1 tainted
ok 136 - substitution /g with pattern tainted: s value
ok 137 - substitution /g with pattern tainted: res value
ok 138 - substitution /g with pattern tainted: $1 value
ok 139 - substitution /ge with pattern tainted: code not tainted within /e
ok 140 - substitution /ge with pattern tainted: s not tainted loop 1
ok 141 - substitution /ge with pattern tainted: $1 tainted loop 1
ok 142 - substitution /ge with pattern tainted: code not tainted within /e
ok 143 - substitution /ge with pattern tainted: s tainted loop 2
ok 144 - substitution /ge with pattern tainted: $1 tainted loop 2
ok 145 - substitution /ge with pattern tainted: code not tainted within /e
ok 146 - substitution /ge with pattern tainted: s tainted loop 3
ok 147 - substitution /ge with pattern tainted: $1 tainted loop 3
ok 148 - substitution /ge with pattern tainted: s tainted
ok 149 - substitution /ge with pattern tainted: res tainted
ok 150 - substitution /ge with pattern tainted: $1 tainted
ok 151 - substitution /ge with pattern tainted: s value
ok 152 - substitution /ge with pattern tainted: res value
ok 153 - substitution /ge with pattern tainted: $1 value
ok 154 - substitution /r with pattern tainted: s not tainted
ok 155 - substitution /r with pattern tainted: res tainted
ok 156 - substitution /r with pattern tainted: $1 tainted
ok 157 - substitution /r with pattern tainted: s value
ok 158 - substitution /r with pattern tainted: res value
ok 159 - substitution /r with pattern tainted: $1 value
ok 160 - substitution with pattern tainted via locale: s tainted
ok 161 - substitution with pattern tainted via locale: res not tainted
ok 162 - substitution with pattern tainted via locale: $1 tainted
ok 163 - substitution with pattern tainted via locale: s value
ok 164 - substitution with pattern tainted via locale: res value
ok 165 - substitution with pattern tainted via locale: $1 value
ok 166 - substitution /g with pattern tainted via locale: s tainted
ok 167 - substitution /g with pattern tainted via locale: res tainted
ok 168 - substitution /g with pattern tainted via locale: $1 tainted
ok 169 - substitution /g with pattern tainted via locale: s value
ok 170 - substitution /g with pattern tainted via locale: res value
ok 171 - substitution /g with pattern tainted via locale: $1 value
ok 172 - substitution /r with pattern tainted via locale: s not tainted
ok 173 - substitution /r with pattern tainted via locale: res tainted
ok 174 - substitution /r with pattern tainted via locale: $1 tainted
ok 175 - substitution /r with pattern tainted via locale: s value
ok 176 - substitution /r with pattern tainted via locale: res value
ok 177 - substitution /r with pattern tainted via locale: $1 value
ok 178 - substitution with replacement tainted: s tainted
ok 179 - substitution with replacement tainted: res not tainted
ok 180 - substitution with replacement tainted: $1 not tainted
ok 181 - substitution with replacement tainted: s value
ok 182 - substitution with replacement tainted: res value
ok 183 - substitution with replacement tainted: $1 value
ok 184 - substitution /g with replacement tainted: s tainted
ok 185 - substitution /g with replacement tainted: res not tainted
ok 186 - substitution /g with replacement tainted: $1 not tainted
ok 187 - substitution /g with replacement tainted: s value
ok 188 - substitution /g with replacement tainted: res value
ok 189 - substitution /g with replacement tainted: $1 value
ok 190 - substitution /ge with replacement tainted: code not tainted within /e
ok 191 - substitution /ge with replacement tainted: s not tainted loop 1
ok 192 - substitution /ge with replacement tainted: $1 not tainted within /e
ok 193 - substitution /ge with replacement tainted: code not tainted within /e
ok 194 - substitution /ge with replacement tainted: s tainted loop 2
ok 195 - substitution /ge with replacement tainted: $1 not tainted within /e
ok 196 - substitution /ge with replacement tainted: code not tainted within /e
ok 197 - substitution /ge with replacement tainted: s tainted loop 3
ok 198 - substitution /ge with replacement tainted: $1 not tainted within /e
ok 199 - substitution /ge with replacement tainted: s tainted
ok 200 - substitution /ge with replacement tainted: res tainted
ok 201 - substitution /ge with replacement tainted: $1 not tainted
ok 202 - substitution /ge with replacement tainted: s value
ok 203 - substitution /ge with replacement tainted: res value
ok 204 - substitution /ge with replacement tainted: $1 value
ok 205 - substitution /r with replacement tainted: s not tainted
ok 206 - substitution /r with replacement tainted: res tainted
ok 207 - substitution /r with replacement tainted: $1 not tainted
ok 208 - substitution /r with replacement tainted: s value
ok 209 - substitution /r with replacement tainted: res value
ok 210 - substitution /r with replacement tainted: $1 value
ok 211 - use re 'taint': match with string tainted: s tainted
ok 212 - use re 'taint': match with string tainted: res not tainted
ok 213 - use re 'taint': match with string tainted: $1 tainted
ok 214 - use re 'taint': match with string tainted: res value
ok 215 - use re 'taint': match with string tainted: $1 value
ok 216 - use re 'taint': match /g with string tainted: s tainted
ok 217 - use re 'taint': match /g with string tainted: res not tainted
ok 218 - use re 'taint': match /g with string tainted: $1 tainted
ok 219 - use re 'taint': match /g with string tainted: res value
ok 220 - use re 'taint': match /g with string tainted: $1 value
ok 221 - use re 'taint': match with string tainted, list cxt: s tainted
ok 222 - use re 'taint': match with string tainted, list cxt: res tainted
ok 223 - use re 'taint': match with string tainted, list cxt: $1 tainted
ok 224 - use re 'taint': match with string tainted, list cxt: res value
ok 225 - use re 'taint': match with string tainted, list cxt: $1 value
ok 226 - use re 'taint': match /g with string tainted, list cxt: s tainted
ok 227 - use re 'taint': match /g with string tainted, list cxt: res tainted
ok 228 - use re 'taint': match /g with string tainted, list cxt: res2 tainted
ok 229 - use re 'taint': match /g with string tainted, list cxt: $1 not tainted
ok 230 - use re 'taint': match /g with string tainted, list cxt: res value
ok 231 - use re 'taint': match /g with string tainted, list cxt: res2 value
ok 232 - use re 'taint': match /g with string tainted, list cxt: $1 value
ok 233 - use re 'taint': match with pattern tainted: s not tainted
ok 234 - use re 'taint': match with pattern tainted: res not tainted
ok 235 - use re 'taint': match with pattern tainted: $1 tainted
ok 236 - use re 'taint': match with pattern tainted: res value
ok 237 - use re 'taint': match with pattern tainted: $1 value
ok 238 - use re 'taint': match /g with pattern tainted: s not tainted
ok 239 - use re 'taint': match /g with pattern tainted: res not tainted
ok 240 - use re 'taint': match /g with pattern tainted: $1 tainted
ok 241 - use re 'taint': match /g with pattern tainted: res value
ok 242 - use re 'taint': match /g with pattern tainted: $1 value
ok 243 - use re 'taint': match with pattern tainted via locale: s not tainted
ok 244 - use re 'taint': match with pattern tainted via locale: res not tainted
ok 245 - use re 'taint': match with pattern tainted via locale: $1 tainted
ok 246 - use re 'taint': match with pattern tainted via locale: res value
ok 247 - use re 'taint': match with pattern tainted via locale: $1 value
ok 248 - use re 'taint': match /g with pattern tainted via locale: s not tainted
ok 249 - use re 'taint': match /g with pattern tainted via locale: res not tainted
ok 250 - use re 'taint': match /g with pattern tainted via locale: $1 tainted
ok 251 - use re 'taint': match /g with pattern tainted via locale: res value
ok 252 - use re 'taint': match /g with pattern tainted via locale: $1 value
ok 253 - use re 'taint': match with pattern tainted, list cxt: s not tainted
ok 254 - use re 'taint': match with pattern tainted, list cxt: res tainted
ok 255 - use re 'taint': match with pattern tainted, list cxt: $1 tainted
ok 256 - use re 'taint': match with pattern tainted, list cxt: res value
ok 257 - use re 'taint': match with pattern tainted, list cxt: $1 value
ok 258 - use re 'taint': match /g with pattern tainted, list cxt: s not tainted
ok 259 - use re 'taint': match /g with pattern tainted, list cxt: res tainted
ok 260 - use re 'taint': match /g with pattern tainted, list cxt: $1 tainted
ok 261 - use re 'taint': match /g with pattern tainted, list cxt: res value
ok 262 - use re 'taint': match /g with pattern tainted, list cxt: res2 value
ok 263 - use re 'taint': match /g with pattern tainted, list cxt: $1 value
ok 264 - use re 'taint': match with pattern tainted via locale, list cxt: s not tainted
ok 265 - use re 'taint': match with pattern tainted via locale, list cxt: res tainted
ok 266 - use re 'taint': match with pattern tainted via locale, list cxt: $1 tainted
ok 267 - use re 'taint': match with pattern tainted via locale, list cxt: res value
ok 268 - use re 'taint': match with pattern tainted via locale, list cxt: $1 value
ok 269 - use re 'taint': match /g with pattern tainted via locale, list cxt: s not tainted
ok 270 - use re 'taint': match /g with pattern tainted via locale, list cxt: res tainted
ok 271 - use re 'taint': match /g with pattern tainted via locale, list cxt: res2 tainted
ok 272 - use re 'taint': match /g with pattern tainted via locale, list cxt: $1 tainted
ok 273 - use re 'taint': match /g with pattern tainted via locale, list cxt: res value
ok 274 - use re 'taint': match /g with pattern tainted via locale, list cxt: res2 value
ok 275 - use re 'taint': match /g with pattern tainted via locale, list cxt: $1 value
ok 276 - use re 'taint': substitution with string tainted: s tainted
ok 277 - use re 'taint': substitution with string tainted: res not tainted
ok 278 - use re 'taint': substitution with string tainted: $1 tainted
ok 279 - use re 'taint': substitution with string tainted: s value
ok 280 - use re 'taint': substitution with string tainted: res value
ok 281 - use re 'taint': substitution with string tainted: $1 value
ok 282 - use re 'taint': substitution /g with string tainted: s tainted
ok 283 - use re 'taint': substitution /g with string tainted: res tainted
ok 284 - use re 'taint': substitution /g with string tainted: $1 tainted
ok 285 - use re 'taint': substitution /g with string tainted: s value
ok 286 - use re 'taint': substitution /g with string tainted: res value
ok 287 - use re 'taint': substitution /g with string tainted: $1 value
ok 288 - use re 'taint': substitution /r with string tainted: s tainted
ok 289 - use re 'taint': substitution /r with string tainted: res tainted
ok 290 - use re 'taint': substitution /r with string tainted: $1 tainted
ok 291 - use re 'taint': substitution /r with string tainted: s value
ok 292 - use re 'taint': substitution /r with string tainted: res value
ok 293 - use re 'taint': substitution /r with string tainted: $1 value
ok 294 - use re 'taint': substitution /e with string tainted: code not tainted within /e
ok 295 - use re 'taint': substitution /e with string tainted: abcd tainted within /e
ok 296 - use re 'taint': substitution /e with string tainted: s tainted
ok 297 - use re 'taint': substitution /e with string tainted: res not tainted
ok 298 - use re 'taint': substitution /e with string tainted: $1 tainted
ok 299 - use re 'taint': substitution /e with string tainted: s value
ok 300 - use re 'taint': substitution /e with string tainted: res value
ok 301 - use re 'taint': substitution /e with string tainted: $1 value
ok 302 - use re 'taint': substitution with pattern tainted: s tainted
ok 303 - use re 'taint': substitution with pattern tainted: res not tainted
ok 304 - use re 'taint': substitution with pattern tainted: $1 tainted
ok 305 - use re 'taint': substitution with pattern tainted: s value
ok 306 - use re 'taint': substitution with pattern tainted: res value
ok 307 - use re 'taint': substitution with pattern tainted: $1 value
ok 308 - use re 'taint': substitution /g with pattern tainted: s tainted
ok 309 - use re 'taint': substitution /g with pattern tainted: res tainted
ok 310 - use re 'taint': substitution /g with pattern tainted: $1 tainted
ok 311 - use re 'taint': substitution /g with pattern tainted: s value
ok 312 - use re 'taint': substitution /g with pattern tainted: res value
ok 313 - use re 'taint': substitution /g with pattern tainted: $1 value
ok 314 - use re 'taint': substitution /ge with pattern tainted: code not tainted within /e
ok 315 - use re 'taint': substitution /ge with pattern tainted: s not tainted loop 1
ok 316 - use re 'taint': substitution /ge with pattern tainted: $1 tainted loop 1
ok 317 - use re 'taint': substitution /ge with pattern tainted: code not tainted within /e
ok 318 - use re 'taint': substitution /ge with pattern tainted: s tainted loop 2
ok 319 - use re 'taint': substitution /ge with pattern tainted: $1 tainted loop 2
ok 320 - use re 'taint': substitution /ge with pattern tainted: code not tainted within /e
ok 321 - use re 'taint': substitution /ge with pattern tainted: s tainted loop 3
ok 322 - use re 'taint': substitution /ge with pattern tainted: $1 tainted loop 3
ok 323 - use re 'taint': substitution /ge with pattern tainted: s tainted
ok 324 - use re 'taint': substitution /ge with pattern tainted: res tainted
ok 325 - use re 'taint': substitution /ge with pattern tainted: $1 tainted
ok 326 - use re 'taint': substitution /ge with pattern tainted: s value
ok 327 - use re 'taint': substitution /ge with pattern tainted: res value
ok 328 - use re 'taint': substitution /ge with pattern tainted: $1 value
ok 329 - use re 'taint': substitution /r with pattern tainted: s not tainted
ok 330 - use re 'taint': substitution /r with pattern tainted: res tainted
ok 331 - use re 'taint': substitution /r with pattern tainted: $1 tainted
ok 332 - use re 'taint': substitution /r with pattern tainted: s value
ok 333 - use re 'taint': substitution /r with pattern tainted: res value
ok 334 - use re 'taint': substitution /r with pattern tainted: $1 value
ok 335 - use re 'taint': substitution with pattern tainted via locale: s tainted
ok 336 - use re 'taint': substitution with pattern tainted via locale: res not tainted
ok 337 - use re 'taint': substitution with pattern tainted via locale: $1 tainted
ok 338 - use re 'taint': substitution with pattern tainted via locale: s value
ok 339 - use re 'taint': substitution with pattern tainted via locale: res value
ok 340 - use re 'taint': substitution with pattern tainted via locale: $1 value
ok 341 - use re 'taint': substitution /g with pattern tainted via locale: s tainted
ok 342 - use re 'taint': substitution /g with pattern tainted via locale: res tainted
ok 343 - use re 'taint': substitution /g with pattern tainted via locale: $1 tainted
ok 344 - use re 'taint': substitution /g with pattern tainted via locale: s value
ok 345 - use re 'taint': substitution /g with pattern tainted via locale: res value
ok 346 - use re 'taint': substitution /g with pattern tainted via locale: $1 value
ok 347 - use re 'taint': substitution /r with pattern tainted via locale: s not tainted
ok 348 - use re 'taint': substitution /r with pattern tainted via locale: res tainted
ok 349 - use re 'taint': substitution /r with pattern tainted via locale: $1 tainted
ok 350 - use re 'taint': substitution /r with pattern tainted via locale: s value
ok 351 - use re 'taint': substitution /r with pattern tainted via locale: res value
ok 352 - use re 'taint': substitution /r with pattern tainted via locale: $1 value
ok 353 - use re 'taint': substitution with replacement tainted: s tainted
ok 354 - use re 'taint': substitution with replacement tainted: res not tainted
ok 355 - use re 'taint': substitution with replacement tainted: $1 not tainted
ok 356 - use re 'taint': substitution with replacement tainted: s value
ok 357 - use re 'taint': substitution with replacement tainted: res value
ok 358 - use re 'taint': substitution with replacement tainted: $1 value
ok 359 - use re 'taint': substitution /g with replacement tainted: s tainted
ok 360 - use re 'taint': substitution /g with replacement tainted: res not tainted
ok 361 - use re 'taint': substitution /g with replacement tainted: $1 not tainted
ok 362 - use re 'taint': substitution /g with replacement tainted: s value
ok 363 - use re 'taint': substitution /g with replacement tainted: res value
ok 364 - use re 'taint': substitution /g with replacement tainted: $1 value
ok 365 - use re 'taint': substitution /ge with replacement tainted: code not tainted within /e
ok 366 - use re 'taint': substitution /ge with replacement tainted: s not tainted loop 1
ok 367 - use re 'taint': substitution /ge with replacement tainted: $1 not tainted
ok 368 - use re 'taint': substitution /ge with replacement tainted: code not tainted within /e
ok 369 - use re 'taint': substitution /ge with replacement tainted: s tainted loop 2
ok 370 - use re 'taint': substitution /ge with replacement tainted: $1 not tainted
ok 371 - use re 'taint': substitution /ge with replacement tainted: code not tainted within /e
ok 372 - use re 'taint': substitution /ge with replacement tainted: s tainted loop 3
ok 373 - use re 'taint': substitution /ge with replacement tainted: $1 not tainted
ok 374 - use re 'taint': substitution /ge with replacement tainted: s tainted
ok 375 - use re 'taint': substitution /ge with replacement tainted: res tainted
ok 376 - use re 'taint': substitution /ge with replacement tainted: $1 not tainted
ok 377 - use re 'taint': substitution /ge with replacement tainted: s value
ok 378 - use re 'taint': substitution /ge with replacement tainted: res value
ok 379 - use re 'taint': substitution /ge with replacement tainted: $1 value
ok 380 - use re 'taint': substitution /r with replacement tainted: s not tainted
ok 381 - use re 'taint': substitution /r with replacement tainted: res tainted
ok 382 - use re 'taint': substitution /r with replacement tainted: $1 not tainted
ok 383 - use re 'taint': substitution /r with replacement tainted: s value
ok 384 - use re 'taint': substitution /r with replacement tainted: res value
ok 385 - use re 'taint': substitution /r with replacement tainted: $1 value
ok 386
ok 387
ok 388
ok 389
ok 390
ok 391 - Exited with status 0
ok 392
ok 393
ok 394
ok 395
ok 396
ok 397
ok 398
ok 399
ok 400
ok 401
ok 402
ok 403
ok 404
ok 405
ok 406
ok 407
ok 408
ok 409
ok 410
ok 411 - chmod
ok 412
ok 413 - truncate
ok 414
ok 415 - rename
ok 416
ok 417 - unlink
ok 418
ok 419 - utime
ok 420
ok 421 - chown
ok 422
ok 423 - link
ok 424
ok 425 - symlink
ok 426
ok 427 - mkdir
ok 428
ok 429 - rmdir
ok 430
ok 431 - chdir
ok 432
ok 433 - chroot
ok 434
ok 435 - require
ok 436
ok 437 - open for read
ok 438
ok 439 - open for read
ok 440
ok 441
ok 442 - open for write
ok 443
ok 444 - open for write
ok 445
ok 446 - popen to
ok 447
ok 448 - popen from
ok 449
ok 450 - popen to
ok 451
ok 452 - popen from
ok 453
ok 454 - exec
ok 455
ok 456 - system
ok 457
ok 458 - backticks
ok 459
ok 460 # skip This is not VMS
ok 461 # skip This is not VMS
ok 462 - kill
ok 463
ok 464 - setpgrp
ok 465
ok 466 - setpriority
ok 467
ok 468 - syscall
ok 469
ok 470
ok 471 - ioctl
ok 472
ok 473
ok 474 - ioctl
ok 475
ok 476 - fcntl
ok 477
ok 478 - fcntl
ok 479
ok 480
ok 481
ok 482
ok 483
ok 484
ok 485
ok 486
ok 487
ok 488
ok 489
ok 490
ok 491
ok 492
ok 493
ok 494
ok 495
ok 496
ok 497
ok 498
ok 499
ok 500
ok 501
ok 502
ok 503
ok 504
ok 505
ok 506
ok 507
ok 508
ok 509
ok 510
ok 511
ok 512
ok 513
ok 514
ok 515
ok 516
ok 517
ok 518
ok 519
ok 520
ok 521
ok 522
ok 523
ok 524
ok 525
ok 526
ok 527
ok 528 - ge?cos
ok 529
ok 530 - shell
ok 531
ok 532
ok 533
ok 534
ok 535
ok 536
ok 537
ok 538
ok 539
ok 540
ok 541
ok 542
ok 543
ok 544
ok 545
ok 546
ok 547
ok 548
ok 549
ok 550
ok 551
ok 552
ok 553 - sysopen
ok 554
ok 555 - sysopen
ok 556
ok 557 - sysopen
ok 558
ok 559 - sysopen
ok 560
ok 561 - sysopen
ok 562
ok 563
ok 564
ok 565 - sysopen
ok 566
ok 567 - sysopen
ok 568
ok 569 - sysopen
ok 570
ok 571 - sysopen
ok 572
ok 573 - sysopen
ok 574
ok 575
ok 576
ok 577 - sysopen
ok 578
ok 579 - sysopen
ok 580
ok 581 - sysopen
ok 582
ok 583 - sysopen
ok 584
ok 585 - sysopen
ok 586
ok 587
ok 588
ok 589
ok 590 - $^TAINT is on
ok 591 - $^TAINT is not assignable
ok 592 - Assigning to ${^TAINT} fails
ok 593
ok 594
ok 595
ok 596
ok 597 - exec
ok 598
ok 599 - exec
ok 600
ok 601 - exec
ok 602
ok 603 - exec
ok 604
ok 605 - exec
ok 606
ok 607 - system
ok 608
ok 609 - system
ok 610
ok 611 - system
ok 612
ok 613 - system
ok 614
ok 615 - system
ok 616
ok 617
ok 618
ok 619
ok 620
ok 621
ok 622
ok 623
ok 624
ok 625
ok 626
ok 627
ok 628
ok 629
ok 630
ok 631
ok 632
ok 633
ok 634
ok 635
ok 636
ok 637
ok 638
ok 639
ok 640
ok 641
ok 642
ok 643
ok 644
ok 645
ok 646
ok 647
ok 648
ok 649
ok 650
ok 651
ok 652
ok 653
ok 654
ok 655
ok 656
ok 657
ok 658
ok 659
ok 660 - infinite m//g on arrays (aelemfast)
ok 661 - infinite m//g on arrays (aelem)
ok 662 - infinite m//g on hashes (helem)
ok 663 - Arithmetic on tainted dualvars works
ok 664 - fork triggers %ENV check
ok 665 - pipe/fork/open/close failed
ok 666 - popen neglects %ENV check
ok 667 - $AUTOLOAD can be untainted
ok 668 - $AUTOLOAD can be untainted
ok 669 - $AUTOLOAD can be tainted
ok 670 - $AUTOLOAD can be tainted
ok 671 - $AUTOLOAD can be untainted
ok 672 - $AUTOLOAD can be untainted
ok 673 - printf doesn't like tainted formats
ok 674
ok 675 - printf doesn't like tainted format expressions
ok 676
# foo
ok 677 - printf accepts other tainted args
ok 678 - sprintf doesn't like tainted formats
ok 679
ok 680 - sprintf doesn't like tainted format expressions
ok 681
ok 682 - sprintf accepts other tainted args
ok 683 - Assignment to untainted variable
ok 684 - Assignment to tainted variable
ok 685 - eval doesn't like tainted strings
ok 686
ok 687
ok 688
ok 689 - \S match with chr 78
ok 690
ok 691 - \S match with chr 163
ok 692
ok 693 - \S match with chr 256
not ok 694 - tainted crypt
ok 695 - untainted crypt
ok 696 - tainted complement
ok 697 - untainted complement
ok 698 - tainted data
ok 699 - tainted result 0
ok 700 - correct content 0
ok 701 - tainted result 1
ok 702 - correct content 1
ok 703 - tainted result 2
ok 704 - correct content 2
ok 705 - tainted result 3
ok 706 - correct content 3
ok 707 - still tainted data
ok 708 - tainted result 0
ok 709 - correct content 0
ok 710 - tainted result 1
ok 711 - correct content 1
ok 712 - tainted result 2
ok 713 - correct content 2
ok 714 - tainted result 3
ok 715 - correct content 3
ok 716 - still tainted data
ok 717 - tainted result 0
ok 718 - correct content 0
ok 719 - tainted result 1
ok 720 - correct content 1
ok 721 - tainted result 2
ok 722 - correct content 2
ok 723 - tainted result 3
ok 724 - correct content 3
ok 725 - pack a* preserves tainting
ok 726 - pack A* preserves tainting
ok 727 - pack a*a* preserves tainting
ok 728 - tainted $!
ok 729 - tied arg1 tainted
ok 730 - tied arg2 tainted
ok 731 - tied arg1 tainted
ok 732 - tied arg2 tainted
ok 733 - tied STORE called correct number of times
ok 734 - sprintf '%s', '', '0'
ok 735 - sprintf ' %s', '', '0'
ok 736 - sprintf '%s%s', '', '0'
ok 737 - sprintf '%s', '', '456'
ok 738 - sprintf ' %s', '', '456'
ok 739 - sprintf '%s%s', '', '456'
ok 740 - sprintf '%s', '123', '0'
ok 741 - sprintf ' %s', '123', '0'
ok 742 - sprintf '%s%s', '123', '0'
ok 743 - sprintf '%s', '123', '456'
ok 744 - sprintf ' %s', '123', '456'
ok 745 - sprintf '%s%s', '123', '456'
ok 746 - $1 should be tainted
ok 747 - $untainted should be untainted
ok 748 - $untainted should still be untainted
ok 749 - $untainted should yet still be untainted
ok 750 - formline survives a tainted dynamic picture
ok 751 - format accumulator not tainted yet
ok 752 - tainted formline argument makes a tainted accumulator
ok 753 - accumulator can be explicitly untainted
ok 754 - accumulator still untainted
ok 755 - accumulator can be explicitly tainted
ok 756 - accumulator still tainted
ok 757 - accumulator untainted again
ok 758 - accumulator still untainted
not ok 759 - the accumulator should be tainted already # TODO get magic handled too late?
# Failed test 759 - the accumulator should be tainted already at ./op/taint.t line 2047
ok 760 - tainted formline picture makes a tainted accumulator
ok 761 - regex optimization of single char /[]/i doesn't taint
ok 762 - regex optimization of single char /[]/i doesn't taint
ok 763 - RT 81230
ok 764 - Constants folded value not tainted
ok 765 - match bare regex
ok 766 - match bare regex taint
ok 767 - match bare regex taint value
ok 768 - user-defined property: non-tainted case
ok 769 - user-defined property: tainted case
ok 770 - lc(tainted) taints its return value
ok 771 - lcfirst(tainted) taints its return value
ok 772 - uc(tainted) taints its return value
ok 773 - ucfirst(tainted) taints its return value
ok 774 - tainted value returned from when is correct
ok 775 - tainted value returned from when stays tainted
ok 776 - tainted value returned from given end is correct
ok 777 - tainted value returned from given end stays tainted
ok 778 - tainted value returned from default is correct
ok 779 - tainted value returned from default stays tainted
ok 780 - initial taintedness
ok 781 - constant is tainted properly
ok 782 - tainting not broken yet
ok 783 - tainting still works after index() of the constant
ok 784 - $tainted ~~ ["whatever", "match"]
ok 785 - $tainted ~~ ["whatever", undef]
ok 786 - no death when TARG of ref is tainted
ok 787 - PID not tainted initially
ok 788 - PID not tainted when read in tainted expression
ok 789 - under locale, lc(latin1) taints the result
ok 790 - under locale, lc(utf8) taints the result
ok 791 - under locale, \Flatin1 taints the result
ok 792 - under locale, \Futf8 taints the result
ok 793 - error should be propagated
ok 794 - Match on tainted multiline data should fail promptly
Failed 1/794 subtests 
	(less 6 skipped subtests: 787 okay)

Test Summary Report
-------------------
./op/taint.t (Wstat: 0 Tests: 794 Failed: 1)
  Failed test:  694
Files=1, Tests=794,  0 wallclock secs ( 0.06 usr  0.00 sys +  0.05 cusr  0.01 csys =  0.12 CPU)
Result: FAIL

Version-Release number of selected component (if applicable):

perl-5.16.3-283.el7

How reproducible:

100% in FIPS mode

Steps to Reproduce:

1. Enable FIPS mode.
2. Execute the upstream test.

Actual results:

Some tests failed.

Expected results:

all tests passed.

Additional info:

This is happening in FIPS mode only and hence it is probably related to using some forbidden cryptographic functionality.

Comment 1 Petr Pisar 2014-04-07 08:53:18 UTC
That's because the DES algorithm which is a default one is disabled in FIPS mode. And the test:

SKIP: {
    skip ("VOS crypt ignores salt.", 1) if ($^O eq 'vos');
    ok(substr(crypt("ab", "cd"), 2) ne substr(crypt("ab", "ce"), 2), "salt makes a difference");
}

Just calls for the default one---DES.

Unfortunately, there is no standardized way of recognizing FIPS mode. We can add a quirk specific pro glibc on Linux (the proc file system) or just skip the test on undef return value or to change the salt values to something sensible for today's glibc.

Comment 2 Petr Pisar 2014-04-07 10:39:58 UTC
Created attachment 883569 [details]
Proposed fix for t/op/crypt.t

Comment 3 Petr Pisar 2014-04-07 10:52:51 UTC
Submitted to upstream <https://rt.perl.org/Ticket/Display.html?id=121591>

Comment 9 Petr Pisar 2014-12-01 14:52:54 UTC
Created attachment 963321 [details]
Proposed fix for t/op/taint.t

Upstream tracker is <https://rt.perl.org/Public/Bug/Display.html?id=123338>.

Comment 14 errata-xmlrpc 2015-03-05 07:55:16 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory, and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

https://rhn.redhat.com/errata/RHBA-2015-0338.html


Note You need to log in before you can comment on or make changes to this bug.