diff -up openssh-5.8p1/session.c.pwchange openssh-5.8p1/session.c --- openssh-5.8p1/session.c.pwchange 2011-03-31 17:54:18.637695183 +0200 +++ openssh-5.8p1/session.c 2011-03-31 17:56:12.281684766 +0200 @@ -1552,12 +1552,17 @@ do_pwchange(Session *s) if (s->ttyfd != -1) { fprintf(stderr, "You must change your password now and login again!\n"); +#ifdef __linux__ + execl("/bin/sh", "sh", "-c", _PATH_PASSWD_PROG, s->pw->pw_name, + (char *)NULL); +#else #ifdef PASSWD_NEEDS_USERNAME execl(_PATH_PASSWD_PROG, "passwd", s->pw->pw_name, (char *)NULL); #else execl(_PATH_PASSWD_PROG, "passwd", (char *)NULL); #endif +#endif perror("passwd"); } else { fprintf(stderr,