fix checkInPingGroup bugs

- Must check for the *effective* GID.
- Must allow range from  0 to 4294967294 in current kernels.
This commit is contained in:
Cristian Rodríguez 2023-12-24 14:04:55 -03:00
parent 00cd7c333c
commit fbe357b1e6
1 changed files with 5 additions and 5 deletions

View File

@ -78,19 +78,19 @@ func checkInPingGroup() error {
if err != nil { if err != nil {
return err return err
} }
groupID := os.Getgid() groupID := uint64(os.Getegid())
// Example content: 999 59999 // Example content: 999 59999
found := findGroupIDRegex.FindAll(file, 2) found := findGroupIDRegex.FindAll(file, 2)
if len(found) == 2 { if len(found) == 2 {
groupMin, err := strconv.ParseInt(string(found[0]), 10, 32) groupMin, err := strconv.ParseUint(string(found[0]), 10, 32)
if err != nil { if err != nil {
return errors.Wrapf(err, "failed to determine minimum ping group ID") return errors.Wrapf(err, "failed to determine minimum ping group ID")
} }
groupMax, err := strconv.ParseInt(string(found[1]), 10, 32) groupMax, err := strconv.ParseUint(string(found[1]), 10, 32)
if err != nil { if err != nil {
return errors.Wrapf(err, "failed to determine minimum ping group ID") return errors.Wrapf(err, "failed to determine maximum ping group ID")
} }
if groupID < int(groupMin) || groupID > int(groupMax) { if groupID < groupMin || groupID > groupMax {
return fmt.Errorf("Group ID %d is not between ping group %d to %d", groupID, groupMin, groupMax) return fmt.Errorf("Group ID %d is not between ping group %d to %d", groupID, groupMin, groupMax)
} }
return nil return nil