Package: samba Version: 3.0.26a-1 Tags: patch User: [EMAIL PROTECTED] Usertags: origin-ubuntu ubuntu-patch hardy
To apply password change requests from Samba clients to system passwords and not just to Samba passwords, Samba invokes PAM either directly or by way of /usr/bin/passwd and is configured to know how to communicate with PAM modules using expect-style rules (smb.conf setting "passwd chat"). Version 0.99.7.1 of pam includes l10n support, which means that the prompts generated by PAM modules are now different for each locale. To account for this, Samba should explicitly use the C locale when attempting a password sync and restore the user's locale setting afterwards. First reported in Ubuntu: https://bugs.launchpad.net/ubuntu/+source/samba/+bug/139265
=== added file 'trunk/samba/debian/patches/chgpasswd.patch' --- trunk/samba/debian/patches/chgpasswd.patch 1970-01-01 00:00:00 +0000 +++ trunk/samba/debian/patches/chgpasswd.patch 2007-11-13 17:43:17 +0000 @@ -0,0 +1,41 @@ +Index: samba-3.0.26a/source/smbd/chgpasswd.c +=================================================================== +--- samba-3.0.26a.orig/source/smbd/chgpasswd.c ++++ samba-3.0.26a/source/smbd/chgpasswd.c +@@ -126,6 +126,7 @@ + struct termios stermios; + gid_t gid; + uid_t uid; ++ char *eptrs[1] = { NULL }; + + if (pass == NULL) + { +@@ -222,7 +223,7 @@ + passwordprogram)); + + /* execl() password-change application */ +- if (execl("/bin/sh", "sh", "-c", passwordprogram, NULL) < 0) ++ if (execle("/bin/sh", "sh", "-c", passwordprogram, NULL, eptrs) < 0) + { + DEBUG(3, ("Bad status returned from %s\n", passwordprogram)); + return (False); +@@ -498,6 +499,9 @@ + #ifdef WITH_PAM + if (lp_pam_password_change()) { + BOOL ret; ++#ifdef HAVE_SETLOCALE ++ char *prevlocale = setlocale(LC_MESSAGES, "C"); ++#endif + + if (as_root) + become_root(); +@@ -511,6 +515,9 @@ + if (as_root) + unbecome_root(); + ++#ifdef HAVE_SETLOCALE ++ setlocale(LC_MESSAGES, prevlocale); ++#endif + return ret; + } + #endif === modified file 'trunk/samba/debian/patches/series' --- trunk/samba/debian/patches/series 2007-11-12 21:58:04 +0000 +++ trunk/samba/debian/patches/series 2007-11-13 17:44:03 +0000 @@ -24,3 +24,4 @@ smbpasswd-syslog.patch get_global_sam_sid-non-root.patch usershare.patch +chgpasswd.patch