From ac04f498a2b8ec6bc2eb06fb2f0db68c5aa2270b Mon Sep 17 00:00:00 2001 From: Andrew Bartlett Date: Mon, 13 Jan 2003 12:21:07 +0000 Subject: [PATCH] Fix to debian bug #171071 - we had the wrong dereference on the pointer to be Realloc()ed, causing it to fail. Big thanks to Sandor Sonfeld for the debug, stack and valgrind traces! Andrew Bartlett (This used to be commit 7abca6d281da6388899f78e3440d7ce37bf2094e) --- source3/auth/auth_util.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/source3/auth/auth_util.c b/source3/auth/auth_util.c index 744b4668aa3..ff0c3922194 100644 --- a/source3/auth/auth_util.c +++ b/source3/auth/auth_util.c @@ -678,10 +678,10 @@ static NTSTATUS get_user_groups_from_local_sam(const DOM_SID *user_sid, } if (sys_getgrouplist(usr->pw_name, usr->pw_gid, *unix_groups, &n_unix_groups) == -1) { - *unix_groups = Realloc(unix_groups, sizeof(gid_t) * n_unix_groups); + *unix_groups = Realloc(*unix_groups, sizeof(gid_t) * n_unix_groups); if (sys_getgrouplist(usr->pw_name, usr->pw_gid, *unix_groups, &n_unix_groups) == -1) { DEBUG(0, ("get_user_groups_from_local_sam: failed to get the unix group list\n")); - SAFE_FREE(unix_groups); + SAFE_FREE(*unix_groups); passwd_free(&usr); return NT_STATUS_NO_SUCH_USER; /* what should this return value be? */ } @@ -695,7 +695,7 @@ static NTSTATUS get_user_groups_from_local_sam(const DOM_SID *user_sid, *groups = malloc(sizeof(DOM_SID) * n_unix_groups); if (!*groups) { DEBUG(0, ("get_user_group_from_local_sam: malloc() failed for DOM_SID list!\n")); - SAFE_FREE(unix_groups); + SAFE_FREE(*unix_groups); return NT_STATUS_NO_MEMORY; } } @@ -704,7 +704,7 @@ static NTSTATUS get_user_groups_from_local_sam(const DOM_SID *user_sid, for (i = 0; i < *n_groups; i++) { if (!gid_to_sid(&(*groups)[i], (*unix_groups)[i])) { - DEBUG(1, ("get_user_groups_from_local_sam: failed to convert gid %ld to a sid!\n", (long int)unix_groups[i+1])); + DEBUG(1, ("get_user_groups_from_local_sam: failed to convert gid %ld to a sid!\n", (long int)(*unix_groups)[i+1])); SAFE_FREE(groups); SAFE_FREE(unix_groups); return NT_STATUS_NO_SUCH_USER;