func getUID()

in rule/rule.go [788:811]


func getUID(uid string) (uint32, error) {
	if uid == "unset" || uid == "-1" {
		return 4294967295, nil
	}

	v, err := strconv.ParseUint(uid, 10, 32)
	if err != nil {
		if !errors.Is(err, strconv.ErrSyntax) {
			return 0, fmt.Errorf("failed to parse uid '%v': %w", uid, err)
		}

		u, err := user.Lookup(uid)
		if err != nil {
			return 0, fmt.Errorf("failed to convert user '%v' to a numeric ID: %w", uid, err)
		}

		v, err = strconv.ParseUint(u.Uid, 10, 32)
		if err != nil {
			return 0, fmt.Errorf("failed to parse uid '%v' belonging to user '%v': %w", u.Uid, u.Username, err)
		}
	}

	return uint32(v), nil
}