From a18c6ba9a411b8b87cc67e02f5287786d1aaad20 Mon Sep 17 00:00:00 2001 From: Luke Leighton Date: Tue, 9 Mar 1999 23:22:36 +0000 Subject: Greg Dickie spotted some wierd memory corruption problem with group database enumeration. (This used to be commit b0381bb262f51fca916fb951fc0c7e54a58e2dd3) --- source3/groupdb/aliasunix.c | 14 +++++++------- source3/groupdb/builtinunix.c | 14 +++++++------- source3/groupdb/groupunix.c | 14 +++++++------- 3 files changed, 21 insertions(+), 21 deletions(-) (limited to 'source3/groupdb') diff --git a/source3/groupdb/aliasunix.c b/source3/groupdb/aliasunix.c index e4a86d4fcd..c53692f328 100644 --- a/source3/groupdb/aliasunix.c +++ b/source3/groupdb/aliasunix.c @@ -170,7 +170,7 @@ static LOCAL_GRP *getalsunixpwent(void *vp, LOCAL_GRP_MEMBER **mem, int *num_mem { /* Static buffers we will return. */ static LOCAL_GRP gp_buf; - struct group *unix_grp = NULL; + struct group unix_grp; struct unix_entries *grps = (struct unix_entries *)vp; if (lp_server_role() == ROLE_DOMAIN_NONE) @@ -195,12 +195,12 @@ static LOCAL_GRP *getalsunixpwent(void *vp, LOCAL_GRP_MEMBER **mem, int *num_mem DOM_NAME_MAP gmep; fstring sid_str; - unix_grp = &grps->grps[grps->grp_idx]; + memcpy(&unix_grp, &grps->grps[grps->grp_idx], sizeof(unix_grp)); DEBUG(10,("getgrpunixpwent: enum unix group entry %s\n", - unix_grp->gr_name)); + unix_grp.gr_name)); - if (!lookupsmbgrpgid(unix_grp->gr_gid, &gmep)) + if (!lookupsmbgrpgid(unix_grp.gr_gid, &gmep)) { continue; } @@ -224,7 +224,7 @@ static LOCAL_GRP *getalsunixpwent(void *vp, LOCAL_GRP_MEMBER **mem, int *num_mem break; } - if (unix_grp == NULL || grps->grp_idx >= grps->num_grps) + if (grps->grp_idx >= grps->num_grps) { return NULL; } @@ -236,8 +236,8 @@ static LOCAL_GRP *getalsunixpwent(void *vp, LOCAL_GRP_MEMBER **mem, int *num_mem (*mem) = NULL; (*num_mem) = 0; - unix_grp = getgrgid(unix_grp->gr_gid); - get_unixalias_members(unix_grp, num_mem, mem); + memcpy(&unix_grp, getgrgid(unix_grp.gr_gid), sizeof(unix_grp)); + get_unixalias_members(&unix_grp, num_mem, mem); } { diff --git a/source3/groupdb/builtinunix.c b/source3/groupdb/builtinunix.c index 9f00582592..57421cc449 100644 --- a/source3/groupdb/builtinunix.c +++ b/source3/groupdb/builtinunix.c @@ -170,7 +170,7 @@ static LOCAL_GRP *getbltunixpwent(void *vp, LOCAL_GRP_MEMBER **mem, int *num_mem { /* Static buffers we will return. */ static LOCAL_GRP gp_buf; - struct group *unix_grp = NULL; + struct group unix_grp; struct unix_entries *grps = (struct unix_entries *)vp; if (grps == NULL) @@ -200,12 +200,12 @@ static LOCAL_GRP *getbltunixpwent(void *vp, LOCAL_GRP_MEMBER **mem, int *num_mem DOM_NAME_MAP gmep; fstring sid_str; - unix_grp = &grps->grps[grps->grp_idx]; + memcpy(&unix_grp, &grps->grps[grps->grp_idx], sizeof(unix_grp)); DEBUG(10,("getgrpunixpwent: enum unix group entry %s\n", - unix_grp->gr_name)); + unix_grp.gr_name)); - if (!lookupsmbgrpgid(unix_grp->gr_gid, &gmep)) + if (!lookupsmbgrpgid(unix_grp.gr_gid, &gmep)) { continue; } @@ -229,7 +229,7 @@ static LOCAL_GRP *getbltunixpwent(void *vp, LOCAL_GRP_MEMBER **mem, int *num_mem break; } - if (unix_grp == NULL || grps->grp_idx >= grps->num_grps) + if (grps->grp_idx >= grps->num_grps) { return NULL; } @@ -241,8 +241,8 @@ static LOCAL_GRP *getbltunixpwent(void *vp, LOCAL_GRP_MEMBER **mem, int *num_mem (*mem) = NULL; (*num_mem) = 0; - unix_grp = getgrgid(unix_grp->gr_gid); - get_unixbuiltin_members(unix_grp, num_mem, mem); + memcpy(&unix_grp, getgrgid(unix_grp.gr_gid), sizeof(unix_grp)); + get_unixbuiltin_members(&unix_grp, num_mem, mem); } { diff --git a/source3/groupdb/groupunix.c b/source3/groupdb/groupunix.c index 1aeae1ca19..306e499858 100644 --- a/source3/groupdb/groupunix.c +++ b/source3/groupdb/groupunix.c @@ -170,7 +170,7 @@ static DOMAIN_GRP *getgrpunixpwent(void *vp, DOMAIN_GRP_MEMBER **mem, int *num_m { /* Static buffers we will return. */ static DOMAIN_GRP gp_buf; - struct group *unix_grp = NULL; + struct group unix_grp; struct unix_entries *grps = (struct unix_entries *)vp; if (grps == NULL) @@ -204,12 +204,12 @@ static DOMAIN_GRP *getgrpunixpwent(void *vp, DOMAIN_GRP_MEMBER **mem, int *num_m { DOM_NAME_MAP gmep; - unix_grp = &grps->grps[grps->grp_idx]; + memcpy(&unix_grp, &grps->grps[grps->grp_idx], sizeof(unix_grp)); DEBUG(10,("getgrpunixpwent: enum unix group entry %s\n", - unix_grp->gr_name)); + unix_grp.gr_name)); - if (!lookupsmbgrpgid(unix_grp->gr_gid, &gmep)) + if (!lookupsmbgrpgid(unix_grp.gr_gid, &gmep)) { continue; } @@ -230,7 +230,7 @@ static DOMAIN_GRP *getgrpunixpwent(void *vp, DOMAIN_GRP_MEMBER **mem, int *num_m break; } - if (unix_grp == NULL || grps->grp_idx >= grps->num_grps) + if (grps->grp_idx >= grps->num_grps) { return NULL; } @@ -242,8 +242,8 @@ static DOMAIN_GRP *getgrpunixpwent(void *vp, DOMAIN_GRP_MEMBER **mem, int *num_m (*mem) = NULL; (*num_mem) = 0; - unix_grp = getgrgid(unix_grp->gr_gid); - get_unixgroup_members(unix_grp, num_mem, mem); + memcpy(&unix_grp, getgrgid(unix_grp.gr_gid), sizeof(unix_grp)); + get_unixgroup_members(&unix_grp, num_mem, mem); } { -- cgit