Skip to content

Comments

Fix bad getgroups() pattern#106

Closed
pom wants to merge 1 commit intosudo-project:mainfrom
pom:fix-getgroups
Closed

Fix bad getgroups() pattern#106
pom wants to merge 1 commit intosudo-project:mainfrom
pom:fix-getgroups

Conversation

@pom
Copy link

@pom pom commented Jun 26, 2021

getgroups() is not guaranteed to return the same number of groups
between calls. Because groups are a flat namespace and group numbers
might collide if the system is subscribing to different directories,
some systems deduplicate groups with the same GID. The first call
should be used to retrieve the high watermark needed to allocate
the buffer, the second one should be used to retrieve the group
numbers as well as the actual number of groups we have been given.
Under certain circumstances, the current code causes sudo to read
uninitialized content present in the buffer.

getgroups() is not guaranteed to return the same number of groups
between calls. Because groups are a flat namespace and group numbers
might collide if the system is subscribing to different directories,
some systems deduplicate groups with the same GID. The first call
should be used to retrieve the high watermark needed to allocate
the buffer, the second one should be used to retrieve the group
numbers as well as the actual number of groups we have been given.
Under certain circumstances, the current code causes sudo to read
uninitialized content present in the buffer.
millert added a commit that referenced this pull request Jun 27, 2021
…tic.

On systems where getgroups() returns results based on more than
just the per-process group vector in the kernel it is possible for
the number of groups to change in between invocations.
Based on GitHub PR #106 from Pierre-Olivier Martel.
@millert
Copy link
Collaborator

millert commented Jun 27, 2021

Thanks, I committed a slightly different diff that doesn't introduce a new variable in 7a309d7

@millert millert closed this Jun 27, 2021
millert added a commit that referenced this pull request Jul 27, 2021
…tic.

On systems where getgroups() returns results based on more than
just the per-process group vector in the kernel it is possible for
the number of groups to change in between invocations.
Based on GitHub PR #106 from Pierre-Olivier Martel.

--HG--
branch : 1.9
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants