mirror of
https://git.freebsd.org/ports.git
synced 2025-06-10 23:30:29 -04:00
61 lines
1.6 KiB
C
61 lines
1.6 KiB
C
--- ./nslcd/passwd.c.orig 2009-06-29 19:04:54.000000000 +0000
|
|
+++ ./nslcd/passwd.c 2009-08-02 22:32:27.000000000 +0000
|
|
@@ -292,7 +292,7 @@
|
|
#define MAXUIDS_PER_ENTRY 5
|
|
|
|
static int write_passwd(TFILE *fp,MYLDAP_ENTRY *entry,const char *requser,
|
|
- const uid_t *requid)
|
|
+ const uid_t *requid,uid_t calleruid)
|
|
{
|
|
int32_t tmpint32;
|
|
const char **tmpvalues;
|
|
@@ -323,7 +323,7 @@
|
|
else
|
|
{
|
|
passwd=get_userpassword(entry,attmap_passwd_userPassword);
|
|
- if (passwd==NULL)
|
|
+ if ((passwd==NULL) || (calleruid!=0))
|
|
passwd=default_passwd_userPassword;
|
|
}
|
|
/* get the uids for this entry */
|
|
@@ -451,7 +451,7 @@
|
|
return 0;
|
|
}
|
|
|
|
-NSLCD_HANDLE(
|
|
+NSLCD_HANDLE_UID(
|
|
passwd,byname,
|
|
char name[256];
|
|
char filter[1024];
|
|
@@ -463,10 +463,10 @@
|
|
log_log(LOG_DEBUG,"nslcd_passwd_byname(%s)",name);,
|
|
NSLCD_ACTION_PASSWD_BYNAME,
|
|
mkfilter_passwd_byname(name,filter,sizeof(filter)),
|
|
- write_passwd(fp,entry,name,NULL)
|
|
+ write_passwd(fp,entry,name,NULL,calleruid)
|
|
)
|
|
|
|
-NSLCD_HANDLE(
|
|
+NSLCD_HANDLE_UID(
|
|
passwd,byuid,
|
|
uid_t uid;
|
|
char filter[1024];
|
|
@@ -474,15 +474,15 @@
|
|
log_log(LOG_DEBUG,"nslcd_passwd_byuid(%d)",(int)uid);,
|
|
NSLCD_ACTION_PASSWD_BYUID,
|
|
mkfilter_passwd_byuid(uid,filter,sizeof(filter)),
|
|
- write_passwd(fp,entry,NULL,&uid)
|
|
+ write_passwd(fp,entry,NULL,&uid,calleruid)
|
|
)
|
|
|
|
-NSLCD_HANDLE(
|
|
+NSLCD_HANDLE_UID(
|
|
passwd,all,
|
|
const char *filter;
|
|
/* no parameters to read */,
|
|
log_log(LOG_DEBUG,"nslcd_passwd_all()");,
|
|
NSLCD_ACTION_PASSWD_ALL,
|
|
(filter=passwd_filter,0),
|
|
- write_passwd(fp,entry,NULL,NULL)
|
|
+ write_passwd(fp,entry,NULL,NULL,calleruid)
|
|
)
|