From 98010a076797f4d05d8c9bff45e65c076f30da3a Mon Sep 17 00:00:00 2001 From: Gerald Carter Date: Sun, 30 Dec 2001 00:03:47 +0000 Subject: pdb_getsampwnuid() merge from 2.2 (This used to be commit 54cbfc7ebcdf1bd2094407b689b0050f0abfa46f) --- source3/passdb/passdb.c | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) (limited to 'source3/passdb/passdb.c') diff --git a/source3/passdb/passdb.c b/source3/passdb/passdb.c index ca7c508dc5..eeecc0abe5 100644 --- a/source3/passdb/passdb.c +++ b/source3/passdb/passdb.c @@ -1793,4 +1793,33 @@ BOOL pdb_set_plaintext_passwd (SAM_ACCOUNT *sampass, const char *plaintext) return True; } +/*************************************************************************** + Search by uid. Wrapper around pdb_getsampwnam() + **************************************************************************/ + +BOOL pdb_getsampwuid (SAM_ACCOUNT* user, uid_t uid) +{ + struct passwd *pw; + fstring name; + + if (user==NULL) { + DEBUG(0,("pdb_getsampwuid: SAM_ACCOUNT is NULL.\n")); + return False; + } + + /* + * Never trust the uid in the passdb. Lookup the username first + * and then lokup the user by name in the sam. + */ + + if ((pw=sys_getpwuid(uid)) == NULL) { + DEBUG(0,("pdb_getsampwuid: getpwuid(%d) return NULL. User does not exist in Unix accounts!\n", uid)); + return False; + } + + fstrcpy (name, pw->pw_name); + + return pdb_getsampwnam (user, name); + +} -- cgit