*** src/ftpd.c.orig Wed Apr 13 22:17:18 1994 --- src/ftpd.c Fri Jan 13 20:22:05 1995 *************** *** 139,146 **** *freopen(const char *, const char *, FILE *); extern int ftpd_pclose(FILE *iop), fclose(FILE *); ! extern char *getline(), ! *realpath(char *pathname, char *result); extern char cbuf[]; extern off_t restart_point; --- 139,148 ---- *freopen(const char *, const char *, FILE *); extern int ftpd_pclose(FILE *iop), fclose(FILE *); ! extern char *getline(); ! #ifndef HAVE_REALPATH ! extern char *realpath(char *pathname, char *result); ! #endif extern char cbuf[]; extern off_t restart_point; *************** *** 237,242 **** --- 239,250 ---- #endif /* SETPROCTITLE */ + #ifdef SKEY + int pwok = 0; + char *skey_challenge(); + char *skey_crypt(); + #endif + #ifdef KERBEROS void init_krb(); void end_krb(); *************** *** 878,884 **** --- 886,897 ---- } else acl_setfunctions(); + #ifdef SKEY + pwok = skeyaccess(name, NULL, remotehost); + reply(331, "%s", skey_challenge(name, pw, pwok)); + #else reply(331, "Password required for %s.", name); + #endif askpasswd = 1; /* Delay before reading passwd after first failed attempt to slow down * passwd-guessing programs. */ *************** *** 1007,1014 **** --- 1020,1032 ---- #ifdef KERBEROS xpasswd = crypt16(passwd, salt); #else + #ifdef SKEY + xpasswd = skey_crypt(passwd, salt, pw, pwok); + pwok = 0; + #else xpasswd = crypt(passwd, salt); #endif + #endif #ifdef ULTRIX_AUTH if ((numfails = ultrix_check_pass(passwd, xpasswd)) < 0) { *************** *** 1095,1101 **** (void) initgroups(pw->pw_name, pw->pw_gid); /* open wtmp before chroot */ ! (void) sprintf(ttyline, "ftp%d", getpid()); logwtmp(ttyline, pw->pw_name, remotehost); logged_in = 1; --- 1113,1119 ---- (void) initgroups(pw->pw_name, pw->pw_gid); /* open wtmp before chroot */ ! (void) sprintf(ttyline, "ftp%ld", getpid()); logwtmp(ttyline, pw->pw_name, remotehost); logged_in = 1; *************** *** 1422,1428 **** for (loop = 0; namebuf[loop]; loop++) if (isspace(namebuf[loop]) || iscntrl(namebuf[loop])) namebuf[loop] = '_'; ! sprintf(msg, "%.24s %d %s %d %s %c %s %c %c %s ftp %d %s\n", ctime(&curtime), xfertime, remotehost, --- 1440,1446 ---- for (loop = 0; namebuf[loop]; loop++) if (isspace(namebuf[loop]) || iscntrl(namebuf[loop])) namebuf[loop] = '_'; ! sprintf(msg, "%.24s %d %s %qd %s %c %s %c %c %s ftp %d %s\n", ctime(&curtime), xfertime, remotehost, *************** *** 1610,1616 **** for (loop = 0; namebuf[loop]; loop++) if (isspace(namebuf[loop]) || iscntrl(namebuf[loop])) namebuf[loop] = '_'; ! sprintf(msg, "%.24s %d %s %d %s %c %s %c %c %s ftp %d %s\n", ctime(&curtime), xfertime, remotehost, --- 1628,1634 ---- for (loop = 0; namebuf[loop]; loop++) if (isspace(namebuf[loop]) || iscntrl(namebuf[loop])) namebuf[loop] = '_'; ! sprintf(msg, "%.24s %d %s %qd %s %c %s %c %c %s ftp %d %s\n", ctime(&curtime), xfertime, remotehost, *************** *** 1699,1705 **** file_size = size; byte_count = 0; if (size != (off_t) - 1) ! (void) sprintf(sizebuf, " (%ld bytes)", size); else (void) strcpy(sizebuf, ""); if (pdata >= 0) { --- 1717,1723 ---- file_size = size; byte_count = 0; if (size != (off_t) - 1) ! (void) sprintf(sizebuf, " (%qd bytes)", size); else (void) strcpy(sizebuf, ""); if (pdata >= 0) { *** src/realpath.c.orig Fri Apr 1 20:03:45 1994 --- src/realpath.c Fri Jan 13 01:09:30 1995 *************** *** 29,36 **** --- 29,39 ---- * POSSIBILITY OF SUCH DAMAGE. */ + #include "config.h" + #ifndef HAVE_REALPATH + #include #include #include *************** *** 159,161 **** --- 162,165 ---- strcpy(result, workpath); return (result); } + #endif *** src/extensions.c.orig Fri Jan 13 20:26:26 1995 --- src/extensions.c Fri Jan 13 20:29:39 1995 *************** *** 103,109 **** if (st->st_mtime > newer_time) { if (show_fullinfo != 0) { if (flag == FTW_F || flag == FTW_D) { ! fprintf(dout, "%s %d %d %s", flag == FTW_F ? "F" : "D", st->st_size, st->st_mtime, path); } } else if (flag == FTW_F) --- 103,109 ---- if (st->st_mtime > newer_time) { if (show_fullinfo != 0) { if (flag == FTW_F || flag == FTW_D) { ! fprintf(dout, "%s %qd %ld %s", flag == FTW_F ? "F" : "D", st->st_size, st->st_mtime, path); } } else if (flag == FTW_F) *************** *** 524,530 **** if (fp == NULL) return (0); fgets(buf, sizeof(buf), fp); ! if (sscanf(buf, "%d %d %d %d %d %d %d", &tmbuf.tm_year, &tmbuf.tm_mon, &tmbuf.tm_mday, &tmbuf.tm_hour, &tmbuf.tm_min, &deny, &disc) != 7) { return (0); } --- 524,530 ---- if (fp == NULL) return (0); fgets(buf, sizeof(buf), fp); ! if (sscanf(buf, "%d %d %d %d %d %ld %ld", &tmbuf.tm_year, &tmbuf.tm_mon, &tmbuf.tm_mday, &tmbuf.tm_hour, &tmbuf.tm_min, &deny, &disc) != 7) { return (0); }