summaryrefslogtreecommitdiff
path: root/net/nss_ldapd/files/patch-nslcd__passwd.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/nss_ldapd/files/patch-nslcd__passwd.c')
-rw-r--r--net/nss_ldapd/files/patch-nslcd__passwd.c61
1 files changed, 61 insertions, 0 deletions
diff --git a/net/nss_ldapd/files/patch-nslcd__passwd.c b/net/nss_ldapd/files/patch-nslcd__passwd.c
new file mode 100644
index 000000000000..1f4f05fa0fd9
--- /dev/null
+++ b/net/nss_ldapd/files/patch-nslcd__passwd.c
@@ -0,0 +1,61 @@
+--- ./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)
+ )