memory leak on 2.2.0?

Kenichi Okuyama okuyamak at
Wed Apr 18 08:00:32 GMT 2001

Dear all,


 int get_current_groups(int *p_ngroups, gid_t **p_groups)

there seems like memory leak here. The biggest problem is,
I don't really understand how to fix it, yet. But just because I can
point the problem, here it is:

This is the problem point

150:	if((groups = (gid_t *)malloc(sizeof(gid_t)*ngroups)) == NULL) {
151:		DEBUG(0,("setup_groups malloc fail !\n"));
152:		return -1;
153:	}
155:	if ((ngroups = sys_getgroups(ngroups,groups)) == -1)
156:		return -1;

At line 150, you malloc new chunk and set pointer 'groups' there.
And let's suppose we did not fail with here.

Then, at line 155, we call sys_getgroups(). And suppose we failed.
We return without freeing 'groups', which nobody will manage now.
This will cause memory leak.

I'm quite sure that line 155- should be something like:

	if ((ngroups = sys_getgroups(ngroups,groups)) == -1) {
		free( groups )
		return -1;

But I don't really know if this is all we need to do.
# We might need to do something more.

So, I'm not making this change as patch, but only pointing the

best regards,
Kenichi Okuyama at Tokyo Research Lab, IBM-Japan, Co.

More information about the samba-technical mailing list