From 0f7e9f6c56506cb390491dc7db9153aa41565981 Mon Sep 17 00:00:00 2001 From: Volker Lendecke Date: Sun, 10 Apr 2005 15:45:46 +0000 Subject: r6279: Convert the RAP enum functions to the pdb_search API. Who is using this nowadays? This looks rather broken, but survives basic tests with 'net'. Volker (This used to be commit 7ae1b94e3eda574729272238cd08e83a33278a7e) --- source3/smbd/lanman.c | 101 ++++++++++++++++++++++++++++---------------------- 1 file changed, 56 insertions(+), 45 deletions(-) (limited to 'source3') diff --git a/source3/smbd/lanman.c b/source3/smbd/lanman.c index f2794d2901..127480f0b3 100644 --- a/source3/smbd/lanman.c +++ b/source3/smbd/lanman.c @@ -1655,9 +1655,10 @@ static BOOL api_RNetGroupEnum(connection_struct *conn,uint16 vuid, char *param,c char *str1 = param+2; char *str2 = skip_string(str1,1); char *p = skip_string(str2,1); - BOOL ret; - GROUP_MAP *group_list; + struct pdb_search *search; + struct samr_displayentry *entries; + int num_entries; if (strcmp(str1,"WrLeh") != 0) @@ -1675,30 +1676,39 @@ static BOOL api_RNetGroupEnum(connection_struct *conn,uint16 vuid, char *param,c /* get list of domain groups SID_DOMAIN_GRP=2 */ become_root(); - ret = pdb_enum_group_mapping(SID_NAME_DOM_GRP , &group_list, &num_entries, False); + search = pdb_search_groups(); unbecome_root(); - - if( !ret ) { - DEBUG(3,("api_RNetGroupEnum:failed to get group list")); + + if (search == NULL) { + DEBUG(3,("api_RNetGroupEnum:failed to get group list")); return False; } resume_context = SVAL(p,0); cli_buf_size=SVAL(p+2,0); - DEBUG(10,("api_RNetGroupEnum:resume context: %d, client buffer size: %d\n", resume_context, cli_buf_size)); + DEBUG(10,("api_RNetGroupEnum:resume context: %d, client buffer size: " + "%d\n", resume_context, cli_buf_size)); + + become_root(); + num_entries = pdb_search_entries(search, resume_context, 0xffffffff, + &entries); + unbecome_root(); *rdata_len = cli_buf_size; *rdata = SMB_REALLOC_LIMIT(*rdata,*rdata_len); p = *rdata; - for(i=resume_context; i=resume_context) { - if( ((PTR_DIFF(p,*rdata)+21)<=*rdata_len)&&(strlen(name)<=21) ) { - pstrcpy(p,name); - DEBUG(10,("api_RNetUserEnum:adding entry %d username %s\n",count_sent,p)); - p += 21; - count_sent++; - } else { - /* set overflow error */ - DEBUG(10,("api_RNetUserEnum:overflow on entry %d username %s\n",count_sent,name)); - errflags=234; - break; - } - } - } - } ; - pdb_endsampwent(); + become_root(); + num_users = pdb_search_entries(search, resume_context, 0xffffffff, + &users); unbecome_root(); - pdb_free_sam(&pwd); + errflags=NERR_Success; + + for (i=0; i