//go:build gofuzz // +build gofuzz package user import ( "io" "strings" ) func IsDivisbleBy(n int, divisibleby int) bool { return (n % divisibleby) == 0 } func FuzzUser(data []byte) int { if len(data) == 0 { return -1 } if !IsDivisbleBy(len(data), 5) { return -1 } var divided [][]byte chunkSize := len(data) / 5 for i := 0; i < len(data); i += chunkSize { end := i + chunkSize divided = append(divided, data[i:end]) } _, _ = ParsePasswdFilter(strings.NewReader(string(divided[0])), nil) var passwd, group io.Reader group = strings.NewReader(string(divided[1])) _, _ = GetAdditionalGroups([]string{string(divided[2])}, group) passwd = strings.NewReader(string(divided[3])) _, _ = GetExecUser(string(divided[4]), nil, passwd, group) return 1 }