--- orig-checkpassword.c Fri Dec 22 22:40:46 2000 +++ checkpassword.c Wed Nov 28 14:08:52 2001 @@ -22,10 +22,11 @@ static int uplen; main(int argc,char **argv) { char *login; + char *ext; char *password; char *encrypted; char *stored; int r; int i; @@ -49,10 +50,30 @@ login = up + i; while (up[i++]) if (i >= uplen) _exit(2); password = up + i; if (i >= uplen) _exit(2); while (up[i++]) if (i >= uplen) _exit(2); + + ext = login; + while (*ext && *ext != '-') ext++; + if (*ext) { + char *newarg; + int j=strlen(argv[argc-1]); + + *ext++ = 0; + newarg = (char *) malloc(j + 1 + strlen(ext) + 1); + if (!newarg) _exit(111); + strcpy(newarg, argv[argc-1]); + if(j && newarg[j-1] == '/') + newarg[j-1] = 0; + else + j = 0; + strcat(newarg, "-"); + strcat(newarg, ext); + if (j) strcat(newarg, "/"); + argv[argc-1] = newarg; + } pw = getpwnam(login); if (pw) stored = pw->pw_passwd; else {