@@ -436,16 +436,49 @@ type Fake struct{}
436
436
func (Fake) Good() {}
437
437
438
438
func main() {
439
- unsafeM := Fake{}
440
- unsafeM.Good()
441
- intArray := [...]int{1, 2}
442
- fmt.Printf("\nintArray: %v\n", intArray)
443
- intPtr := &intArray[0]
444
- fmt.Printf("\nintPtr=%p, *intPtr=%d.\n", intPtr, *intPtr)
445
- addressHolder := uintptr(unsafe.Pointer(intPtr)) + unsafe.Sizeof(intArray[0])
446
- intPtr = (*int)(unsafe.Pointer(addressHolder))
447
- fmt.Printf("\nintPtr=%p, *intPtr=%d.\n\n", intPtr, *intPtr)
448
- }` }, 3 , gosec .NewConfig ()},
439
+ unsafeM := Fake{}
440
+ unsafeM.Good()
441
+ intArray := [...]int{1, 2}
442
+ fmt.Printf("\nintArray: %v\n", intArray)
443
+ intPtr := &intArray[0]
444
+ fmt.Printf("\nintPtr=%p, *intPtr=%d.\n", intPtr, *intPtr)
445
+ addressHolder := uintptr(unsafe.Pointer(intPtr))
446
+ intPtr = (*int)(unsafe.Pointer(addressHolder))
447
+ fmt.Printf("\nintPtr=%p, *intPtr=%d.\n\n", intPtr, *intPtr)
448
+ }` }, 2 , gosec .NewConfig ()},
449
+ {[]string {`
450
+ package main
451
+
452
+ import (
453
+ "fmt"
454
+ "unsafe"
455
+ )
456
+
457
+ func main() {
458
+ chars := [...]byte{1, 2}
459
+ charsPtr := &chars[0]
460
+ str := unsafe.String(charsPtr, len(chars))
461
+ fmt.Printf("%s\n", str)
462
+ ptr := unsafe.StringData(str)
463
+ fmt.Printf("ptr: %p\n", ptr)
464
+
465
+ }` }, 2 , gosec .NewConfig ()},
466
+ {[]string {`
467
+ package main
468
+
469
+ import (
470
+ "fmt"
471
+ "unsafe"
472
+ )
473
+
474
+ func main() {
475
+ chars := [...]byte{1, 2}
476
+ charsPtr := &chars[0]
477
+ slice := unsafe.Slice(charsPtr, len(chars))
478
+ fmt.Printf("%v\n", slice)
479
+ ptr := unsafe.SliceData(slice)
480
+ fmt.Printf("ptr: %p\n", ptr)
481
+ }` }, 2 , gosec .NewConfig ()},
449
482
}
450
483
451
484
// SampleCodeG104 finds errors that aren't being handled
0 commit comments