@@ -367,101 +367,101 @@ func taintThroughEncodings() {
367
367
368
368
clean. withUTF8 ( {
369
369
buffer in
370
- sink ( arg: buffer)
370
+ sink ( arg: buffer [ 0 ] )
371
371
sink ( arg: buffer. baseAddress!)
372
372
} )
373
373
tainted. withUTF8 ( {
374
374
buffer in
375
- sink ( arg: buffer) // $ MISSING: tainted=366
375
+ sink ( arg: buffer [ 0 ] ) // $ MISSING: tainted=366
376
376
sink ( arg: buffer. baseAddress!) // $ MISSING: tainted=366
377
377
} )
378
378
379
379
clean. withCString ( {
380
380
ptr in
381
- sink ( arg: ptr)
381
+ sink ( arg: ptr [ 0 ] )
382
382
} )
383
383
tainted. withCString ( {
384
384
ptr in
385
- sink ( arg: ptr) // $ MISSING: tainted=366
385
+ sink ( arg: ptr [ 0 ] ) // $ MISSING: tainted=366
386
386
} )
387
387
clean. withCString ( encodedAs: UTF8 . self, {
388
388
ptr in
389
- sink ( arg: ptr)
389
+ sink ( arg: ptr [ 0 ] )
390
390
} )
391
391
tainted. withCString ( encodedAs: UTF8 . self, {
392
392
ptr in
393
- sink ( arg: ptr) // $ MISSING: tainted=366
393
+ sink ( arg: ptr [ 0 ] ) // $ MISSING: tainted=366
394
394
} )
395
395
396
396
let arrayString1 = clean. cString ( using: String . Encoding. utf8) !
397
397
sink ( arg: arrayString1)
398
398
arrayString1. withUnsafeBufferPointer ( {
399
399
buffer in
400
- sink ( arg: buffer)
400
+ sink ( arg: buffer [ 0 ] )
401
401
sink ( arg: String ( cString: buffer. baseAddress!) )
402
402
} )
403
403
let arrayString2 = tainted. cString ( using: String . Encoding. utf8) !
404
404
sink ( arg: arrayString2) // $ tainted=366
405
405
arrayString2. withUnsafeBufferPointer ( {
406
406
buffer in
407
- sink ( arg: buffer) // $ tainted=366
407
+ sink ( arg: buffer [ 0 ] ) // $ tainted=366
408
408
sink ( arg: String ( cString: buffer. baseAddress!) ) // $ MISSING: tainted=366
409
409
} )
410
410
411
411
clean. withPlatformString ( {
412
412
ptr in
413
- sink ( arg: ptr)
413
+ sink ( arg: ptr [ 0 ] )
414
414
sink ( arg: String ( platformString: ptr) )
415
415
416
416
let buffer = UnsafeBufferPointer ( start: ptr, count: 10 )
417
417
let arrayString = Array ( buffer)
418
- sink ( arg: buffer)
419
- sink ( arg: arrayString)
418
+ sink ( arg: buffer [ 0 ] )
419
+ sink ( arg: arrayString [ 0 ] )
420
420
sink ( arg: String ( platformString: arrayString) )
421
421
} )
422
422
tainted. withPlatformString ( {
423
423
ptr in
424
- sink ( arg: ptr) // $ MISSING: tainted=366
424
+ sink ( arg: ptr [ 0 ] ) // $ MISSING: tainted=366
425
425
sink ( arg: String ( platformString: ptr) ) // $ MISSING: tainted=366
426
426
427
427
let buffer = UnsafeBufferPointer ( start: ptr, count: 10 )
428
428
let arrayString = Array ( buffer)
429
- sink ( arg: buffer) // $ MISSING: tainted=366
430
- sink ( arg: arrayString) // $ MISSING: tainted=366
429
+ sink ( arg: buffer [ 0 ] ) // $ MISSING: tainted=366
430
+ sink ( arg: arrayString [ 0 ] ) // $ MISSING: tainted=366
431
431
sink ( arg: String ( platformString: arrayString) ) // $ MISSING: tainted=366
432
432
} )
433
433
434
434
clean. withContiguousStorageIfAvailable ( {
435
435
ptr in
436
- sink ( arg: ptr)
436
+ sink ( arg: ptr [ 0 ] )
437
437
sink ( arg: ptr. baseAddress!)
438
438
} )
439
439
tainted. withContiguousStorageIfAvailable ( {
440
440
ptr in
441
- sink ( arg: ptr) // $ tainted=366
441
+ sink ( arg: ptr [ 0 ] ) // $ tainted=366
442
442
sink ( arg: ptr. baseAddress!) // $ MISSING: tainted=366
443
443
} )
444
444
}
445
445
446
- func source4( ) -> [ UInt8 ] { return [ ] }
446
+ func source4( ) -> UInt8 { return 0 }
447
447
448
448
func taintFromUInt8Array( ) {
449
449
var cleanUInt8Values : [ UInt8 ] = [ 0x41 , 0x42 , 0x43 , 0 ] // "ABC"
450
- var taintedUInt8Values = source4 ( )
450
+ var taintedUInt8Values : [ UInt8 ] = [ source4 ( ) ]
451
451
452
452
sink ( arg: String ( unsafeUninitializedCapacity: 256 , initializingUTF8With: {
453
453
( buffer: UnsafeMutableBufferPointer < UInt8 > ) -> Int in
454
- sink ( arg: buffer)
454
+ sink ( arg: buffer [ 0 ] )
455
455
let _ = buffer. initialize ( from: cleanUInt8Values)
456
- sink ( arg: buffer)
456
+ sink ( arg: buffer [ 0 ] )
457
457
return 3
458
458
}
459
459
) )
460
460
sink ( arg: String ( unsafeUninitializedCapacity: 256 , initializingUTF8With: { // $ MISSING: tainted=450
461
461
( buffer: UnsafeMutableBufferPointer < UInt8 > ) -> Int in
462
- sink ( arg: buffer)
462
+ sink ( arg: buffer [ 0 ] )
463
463
let _ = buffer. initialize ( from: taintedUInt8Values)
464
- sink ( arg: buffer) // $ MISSING: tainted=450
464
+ sink ( arg: buffer [ 0 ] ) // $ MISSING: tainted=450
465
465
return 256
466
466
}
467
467
) )
@@ -474,48 +474,48 @@ func taintFromUInt8Array() {
474
474
475
475
try ! cleanUInt8Values. withUnsafeBufferPointer ( {
476
476
( buffer: UnsafeBufferPointer < UInt8 > ) throws in
477
- sink ( arg: buffer)
477
+ sink ( arg: buffer [ 0 ] )
478
478
sink ( arg: buffer. baseAddress!)
479
479
sink ( arg: String ( cString: buffer. baseAddress!) )
480
480
} )
481
481
try ! taintedUInt8Values. withUnsafeBufferPointer ( {
482
482
( buffer: UnsafeBufferPointer < UInt8 > ) throws in
483
- sink ( arg: buffer) // $ tainted=450
483
+ sink ( arg: buffer [ 0 ] ) // $ tainted=450
484
484
sink ( arg: buffer. baseAddress!) // $ MISSING: tainted=450
485
485
sink ( arg: String ( cString: buffer. baseAddress!) ) // $ MISSING: tainted=450
486
486
} )
487
487
488
488
try ! cleanUInt8Values. withUnsafeMutableBytes ( {
489
489
( buffer: UnsafeMutableRawBufferPointer ) throws in
490
- sink ( arg: buffer)
490
+ sink ( arg: buffer [ 0 ] )
491
491
sink ( arg: buffer. baseAddress!)
492
492
sink ( arg: String ( bytesNoCopy: buffer. baseAddress!, length: buffer. count, encoding: String . Encoding. utf8, freeWhenDone: false ) !)
493
493
} )
494
494
try ! taintedUInt8Values. withUnsafeMutableBytes ( {
495
495
( buffer: UnsafeMutableRawBufferPointer ) throws in
496
- sink ( arg: buffer) // $ tainted=450
496
+ sink ( arg: buffer [ 0 ] ) // $ tainted=450
497
497
sink ( arg: buffer. baseAddress!) // $ MISSING: tainted=450
498
498
sink ( arg: String ( bytesNoCopy: buffer. baseAddress!, length: buffer. count, encoding: String . Encoding. utf8, freeWhenDone: false ) !) // $ MISSING: tainted=450
499
499
} )
500
500
}
501
501
502
- func source5( ) -> [ CChar ] { return [ ] }
502
+ func source5( ) -> CChar { return 0 }
503
503
504
504
func taintThroughCCharArray( ) {
505
505
let cleanCCharValues : [ CChar ] = [ 0x41 , 0x42 , 0x43 , 0 ]
506
- let taintedCCharValues : [ CChar ] = source5 ( )
506
+ let taintedCCharValues : [ CChar ] = [ source5 ( ) ]
507
507
508
508
cleanCCharValues. withUnsafeBufferPointer ( {
509
509
ptr in
510
- sink ( arg: ptr)
510
+ sink ( arg: ptr [ 0 ] )
511
511
sink ( arg: ptr. baseAddress!)
512
512
sink ( arg: String ( utf8String: ptr. baseAddress!) !)
513
513
sink ( arg: String ( validatingUTF8: ptr. baseAddress!) !)
514
514
sink ( arg: String ( cString: ptr. baseAddress!) )
515
515
} )
516
516
taintedCCharValues. withUnsafeBufferPointer ( {
517
517
ptr in
518
- sink ( arg: ptr) // $ tainted=506
518
+ sink ( arg: ptr [ 0 ] ) // $ tainted=506
519
519
sink ( arg: ptr. baseAddress!) // $ MISSING: tainted=506
520
520
sink ( arg: String ( utf8String: ptr. baseAddress!) !) // $ MISSING: tainted=506
521
521
sink ( arg: String ( validatingUTF8: ptr. baseAddress!) !) // $ MISSING: tainted=506
@@ -526,22 +526,22 @@ func taintThroughCCharArray() {
526
526
sink ( arg: String ( cString: taintedCCharValues) ) // $ tainted=506
527
527
}
528
528
529
- func source6( ) -> [ unichar ] { return [ ] }
529
+ func source6( ) -> unichar { return 0 }
530
530
531
531
func taintThroughUnicharArray( ) {
532
532
let cleanUnicharValues : [ unichar ] = [ 0x41 , 0x42 , 0x43 , 0 ]
533
- let taintedUnicharValues : [ unichar ] = source6 ( )
533
+ let taintedUnicharValues : [ unichar ] = [ source6 ( ) ]
534
534
535
535
cleanUnicharValues. withUnsafeBufferPointer ( {
536
536
ptr in
537
- sink ( arg: ptr)
537
+ sink ( arg: ptr [ 0 ] )
538
538
sink ( arg: ptr. baseAddress!)
539
539
sink ( arg: String ( utf16CodeUnits: ptr. baseAddress!, count: ptr. count) )
540
540
sink ( arg: String ( utf16CodeUnitsNoCopy: ptr. baseAddress!, count: ptr. count, freeWhenDone: false ) )
541
541
} )
542
542
taintedUnicharValues. withUnsafeBufferPointer ( {
543
543
ptr in
544
- sink ( arg: ptr) // $ tainted=533
544
+ sink ( arg: ptr [ 0 ] ) // $ tainted=533
545
545
sink ( arg: ptr. baseAddress!) // $ MISSING: tainted=533
546
546
sink ( arg: String ( utf16CodeUnits: ptr. baseAddress!, count: ptr. count) ) // $ MISSING: tainted=533
547
547
sink ( arg: String ( utf16CodeUnitsNoCopy: ptr. baseAddress!, count: ptr. count, freeWhenDone: false ) ) // $ MISSING: tainted=533
@@ -601,13 +601,13 @@ func untaintedFields() {
601
601
}
602
602
603
603
func callbackWithCleanPointer( ptr: UnsafeBufferPointer < String . Element > ) throws -> Int {
604
- sink ( arg: ptr)
604
+ sink ( arg: ptr [ 0 ] )
605
605
606
606
return 0
607
607
}
608
608
609
609
func callbackWithTaintedPointer( ptr: UnsafeBufferPointer < String . Element > ) throws -> Int {
610
- sink ( arg: ptr) // $ tainted=617
610
+ sink ( arg: ptr [ 0 ] ) // $ tainted=617
611
611
612
612
return source ( )
613
613
}
0 commit comments