@@ -436,16 +436,49 @@ type Fake struct{}
436436func (Fake) Good() {}
437437
438438func 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 ()},
449482 }
450483
451484 // SampleCodeG104 finds errors that aren't being handled
0 commit comments