2011-06-01 18:58:17

by Pavel Shilovsky

[permalink] [raw]
Subject: [PATCH] mountd: Fix missing varialble assignment in auth_unix_gid

When we get into auth_unix_gid at the second time, groups_len
is not 0 and ngroups variable leave as 0. Then we use ngroups
in getgrouplist that fails in this case. This patch fixes it.

Signed-off-by: Pavel Shilovsky <[email protected]>
---
utils/mountd/cache.c | 6 ++++--
1 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/utils/mountd/cache.c b/utils/mountd/cache.c
index df6b38f..dbe20e9 100644
--- a/utils/mountd/cache.c
+++ b/utils/mountd/cache.c
@@ -138,7 +138,7 @@ static void auth_unix_gid(FILE *f)
static gid_t *groups = NULL;
static int groups_len = 0;
gid_t *more_groups;
- int ngroups = 0;
+ int ngroups;
int rv, i;
char *cp;

@@ -147,9 +147,11 @@ static void auth_unix_gid(FILE *f)
if (!groups)
return;

- groups_len = ngroups = INITIAL_MANAGED_GROUPS;
+ groups_len = INITIAL_MANAGED_GROUPS;
}

+ ngroups = groups_len;
+
if (readline(fileno(f), &lbuf, &lbuflen) != 1)
return;

--
1.7.4.5



2011-06-07 20:21:33

by Steve Dickson

[permalink] [raw]
Subject: Re: [PATCH] mountd: Fix missing varialble assignment in auth_unix_gid



On 06/01/2011 02:57 PM, Pavel Shilovsky wrote:
> When we get into auth_unix_gid at the second time, groups_len
> is not 0 and ngroups variable leave as 0. Then we use ngroups
> in getgrouplist that fails in this case. This patch fixes it.
>
> Signed-off-by: Pavel Shilovsky <[email protected]>
> ---
> utils/mountd/cache.c | 6 ++++--
> 1 files changed, 4 insertions(+), 2 deletions(-)
>
> diff --git a/utils/mountd/cache.c b/utils/mountd/cache.c
> index df6b38f..dbe20e9 100644
> --- a/utils/mountd/cache.c
> +++ b/utils/mountd/cache.c
> @@ -138,7 +138,7 @@ static void auth_unix_gid(FILE *f)
> static gid_t *groups = NULL;
> static int groups_len = 0;
> gid_t *more_groups;
> - int ngroups = 0;
> + int ngroups;
> int rv, i;
> char *cp;
>
> @@ -147,9 +147,11 @@ static void auth_unix_gid(FILE *f)
> if (!groups)
> return;
>
> - groups_len = ngroups = INITIAL_MANAGED_GROUPS;
> + groups_len = INITIAL_MANAGED_GROUPS;
> }
>
> + ngroups = groups_len;
> +
> if (readline(fileno(f), &lbuf, &lbuflen) != 1)
> return;
>
Committed...

steved.

2011-06-08 05:51:31

by Pavel Shilovsky

[permalink] [raw]
Subject: Re: [PATCH] mountd: Fix missing varialble assignment in auth_unix_gid

2011/6/8 Steve Dickson <[email protected]>:
>
>
> On 06/01/2011 02:57 PM, Pavel Shilovsky wrote:
>> When we get into auth_unix_gid at the second time, groups_len
>> is not 0 and ngroups variable leave as 0. Then we use ngroups
>> in getgrouplist that fails in this case. This patch fixes it.
>>
>> Signed-off-by: Pavel Shilovsky <[email protected]>
>> ---
>> =A0utils/mountd/cache.c | =A0 =A06 ++++--
>> =A01 files changed, 4 insertions(+), 2 deletions(-)
>>
>> diff --git a/utils/mountd/cache.c b/utils/mountd/cache.c
>> index df6b38f..dbe20e9 100644
>> --- a/utils/mountd/cache.c
>> +++ b/utils/mountd/cache.c
>> @@ -138,7 +138,7 @@ static void auth_unix_gid(FILE *f)
>> =A0 =A0 =A0 static gid_t *groups =3D NULL;
>> =A0 =A0 =A0 static int groups_len =3D 0;
>> =A0 =A0 =A0 gid_t *more_groups;
>> - =A0 =A0 int ngroups =3D 0;
>> + =A0 =A0 int ngroups;
>> =A0 =A0 =A0 int rv, i;
>> =A0 =A0 =A0 char *cp;
>>
>> @@ -147,9 +147,11 @@ static void auth_unix_gid(FILE *f)
>> =A0 =A0 =A0 =A0 =A0 =A0 =A0 if (!groups)
>> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 return;
>>
>> - =A0 =A0 =A0 =A0 =A0 =A0 groups_len =3D ngroups =3D INITIAL_MANAGED=
_GROUPS;
>> + =A0 =A0 =A0 =A0 =A0 =A0 groups_len =3D INITIAL_MANAGED_GROUPS;
>> =A0 =A0 =A0 }
>>
>> + =A0 =A0 ngroups =3D groups_len;
>> +
>> =A0 =A0 =A0 if (readline(fileno(f), &lbuf, &lbuflen) !=3D 1)
>> =A0 =A0 =A0 =A0 =A0 =A0 =A0 return;
>>
> Committed...
>
> steved.
>

See it, thanks!

--=20
Best regards,
Pavel Shilovsky.