head	1.11;
access;
symbols
	RELEASE_8_3_0:1.10
	RELEASE_9_0_0:1.10
	RELEASE_7_4_0:1.10
	RELEASE_8_2_0:1.10
	RELEASE_6_EOL:1.10
	RELEASE_8_1_0:1.10
	RELEASE_7_3_0:1.10
	RELEASE_8_0_0:1.10
	RELEASE_7_2_0:1.10
	RELEASE_7_1_0:1.10
	RELEASE_6_4_0:1.10
	RELEASE_5_EOL:1.10
	RELEASE_7_0_0:1.10
	RELEASE_6_3_0:1.10
	PRE_XORG_7:1.10
	RELEASE_4_EOL:1.10
	RELEASE_6_2_0:1.10
	RELEASE_6_1_0:1.10
	RELEASE_5_5_0:1.10
	RELEASE_6_0_0:1.10
	RELEASE_5_4_0:1.10
	RELEASE_4_11_0:1.10
	RELEASE_5_3_0:1.10
	RELEASE_4_10_0:1.10
	RELEASE_5_2_1:1.10
	RELEASE_5_2_0:1.10
	RELEASE_4_9_0:1.10
	RELEASE_5_1_0:1.10
	RELEASE_4_8_0:1.10
	RELEASE_5_0_0:1.10
	RELEASE_4_7_0:1.10
	old_RELEASE_4_6_2:1.10
	old_RELEASE_4_6_1:1.10
	old_RELEASE_4_6_0:1.10
	old_RELEASE_5_0_DP1:1.10
	old_RELEASE_4_5_0:1.10
	old_RELEASE_4_4_0:1.10
	old_RELEASE_4_3_0:1.10
	old_RELEASE_4_2_0:1.10
	old_RELEASE_4_1_1:1.10
	old_RELEASE_4_1_0:1.10
	old_RELEASE_3_5_0:1.10
	old_RELEASE_4_0_0:1.10
	old_RELEASE_3_4_0:1.10
	old_RELEASE_3_3_0:1.10
	old_RELEASE_3_2_0:1.10
	old_RELEASE_3_1_0:1.10
	old_RELEASE_2_2_8:1.10
	old_RELEASE_3_0_0:1.10
	old_RELEASE_2_2_1:1.6;
locks; strict;
comment	@# @;


1.11
date	2012.06.07.06.45.56;	author sumikawa;	state dead;
branches;
next	1.10;

1.10
date	98.08.10.09.10.29;	author obrien;	state Exp;
branches;
next	1.9;

1.9
date	98.05.18.00.11.42;	author ache;	state dead;
branches;
next	1.8;

1.8
date	98.05.15.17.03.38;	author ache;	state Exp;
branches;
next	1.7;

1.7
date	97.04.27.21.48.53;	author ache;	state dead;
branches;
next	1.6;

1.6
date	97.01.30.17.00.46;	author ache;	state Exp;
branches;
next	1.5;

1.5
date	97.01.17.09.09.17;	author max;	state Exp;
branches;
next	1.4;

1.4
date	96.10.18.17.15.19;	author ache;	state Exp;
branches;
next	1.3;

1.3
date	96.10.17.17.55.23;	author ache;	state Exp;
branches;
next	1.2;

1.2
date	95.05.30.09.58.38;	author asami;	state Exp;
branches;
next	1.1;

1.1
date	95.01.25.22.41.52;	author gpalmer;	state Exp;
branches;
next	;


desc
@@


1.11
log
@Remove wu-ftpd+ipv6. The upstream disapear and distfile is no more available.
@
text
@--- doc/xferlog.5.orig	Thu Jan  9 22:29:03 1997
+++ doc/xferlog.5	Mon Feb 16 23:34:15 1998
@@@@ -7,7 +7,7 @@@@
 .B xferlog
 file contains logging information from the FTP server daemon,
 .BR ftpd (8).
-This file usually is found in /usr/adm, but can be located anywhere by using a
+This file usually is found in /var/log, but can be located anywhere by using a
 option to
 .BR ftpd (8).
 Each server entry is composed of a single line of the following form, 
@@@@ -135,7 +135,7 @@@@
 .SH FILES
 .PD 0
 .TP 20
-.B /usr/adm/xferlog
+.B /var/log/xferlog
 .SH "SEE ALSO"
 .BR ftpd(8),
 .BR ftpaccess(5)
@


1.10
log
@Correct paths in man page.
@
text
@@


1.9
log
@Remove "always UTC" patch
@
text
@d1 20
a20 29
*** src/popen.c.bak	Fri Sep 12 06:09:30 1997
--- src/popen.c	Fri May 15 21:01:29 1998
***************
*** 87,92 ****
--- 87,93 ----
       *strspl(),
  #endif
        *globerr;
+     static char *envtz[2] = {"TZ=", NULL};
  #ifdef HAVE_GETRLIMIT
          struct rlimit rlp;
  
***************
*** 178,184 ****
          setuid(i);
  	enable_signaling(); /* we can allow signals once again: kinch */
  	/* end CERT suggested fixes */
! 	execv(gargv[0], gargv);
          _exit(1);
      }
      /* parent; assume fdopen can't fail...  */
--- 179,185 ----
          setuid(i);
  	enable_signaling(); /* we can allow signals once again: kinch */
  	/* end CERT suggested fixes */
! 	execve(gargv[0], gargv, envtz);
          _exit(1);
      }
      /* parent; assume fdopen can't fail...  */
@


1.8
log
@Run /bin/ls always with TZ=
@
text
@@


1.7
log
@Upgrade to beta-13
@
text
@d1 2
a2 2
*** src/ftpd.c.bak	Mon Jan 20 08:05:11 1997
--- src/ftpd.c	Thu Jan 30 17:46:16 1997
d4 8
a11 30
*** 235,246 ****
  int logging = 0;
  int log_commands = 0;
  
- #ifdef SKEY			/* H* add-on.  Not as elegant as Wietse's */
- #include "skey.h"		/* logdaemon package, but does the job.   */
- struct skey skey_blk;
- char chbuff[80];
- #endif
- 
  #ifdef SECUREOSF
  #define SecureWare
  #include <prot.h>
--- 235,240 ----
***************
*** 1201,1212 ****
              acl_setfunctions();
  
  #ifdef SKEY
! /* 0 means we found the user and the skeykeys file is open for update. */
!     if (skeychallenge (&skey_blk, name, chbuff) == 0)
! 	reply (331, "[%s] required for %s.", chbuff, name);
!     else
! #endif
      reply(331, "Password required for %s.", name);
      askpasswd = 1;
      /* Delay before reading passwd after first failed attempt to slow down
       * passwd-guessing programs. */
--- 1195,1205 ----
              acl_setfunctions();
a12 9
  #ifdef SKEY
!     pwok = skeyaccess(name, NULL, remotehost, remoteaddr);
!     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. */
d14 16
a29 14
*** 1378,1389 ****
          xpasswd = crypt(passwd, salt);
  #endif
  #endif
- #endif
- #ifdef SKEY
- /* comment the next line if you REALLY want to allow replayable passwds. */
- 	strcpy (xpasswd, "wrongo:spazmoid");  /* disable regular passwds */
- 	if (skeyverify (&skey_blk, passwd) == 0)
- 	    strcpy (xpasswd, pw->pw_passwd);	/* do it the sleazy way */
  #endif
  #ifdef ULTRIX_AUTH
          if ((numfails = ultrix_check_pass(passwd, xpasswd)) < 0) {
--- 1371,1376 ----
@


1.6
log
@Upgrade to Academ 2.4.2-beta-12 as recommended by AUSCERT security
advisory.

P.S. this version is much improved comparing to what we have previously,
f.e. it already contains most of our fixes.
@
text
@@


1.5
log
@Rip off the patch to ftpd.c and one to access.c from patch-ai and
merge ftpd.c patch to patch-ad and access.c patch to patch-af.
(As clearly stated in the handbook, a file should be changed only by
one patch.)
@
text
@d1 2
a2 2
*** src/ftpd.c.orig	Tue Jan  7 00:27:09 1997
--- src/ftpd.c	Fri Jan 17 17:45:14 1997
d4 30
a33 8
*** 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;
d35 4
a38 60
--- 139,146 ----
   *freopen(const char *, const char *, FILE *);
  extern int ftpd_pclose(FILE *iop),
    fclose(FILE *);
! extern char *getline();
! extern char *realpath(const char *pathname, char *result);
  extern char cbuf[];
  extern off_t restart_point;
  
***************
*** 237,242 ****
--- 237,247 ----
  
  #endif /* SETPROCTITLE */
  
+ #ifdef SKEY
+ #include <skey.h>
+ int	pwok = 0;
+ #endif
+ 
  #ifdef KERBEROS
  void init_krb();
  void end_krb();
***************
*** 252,257 ****
--- 257,269 ----
  char  ls_short[50];
  struct aclmember *entry = NULL;
  
+ void end_login(void);
+ void send_data(FILE *, FILE *, off_t);
+ void dolog(struct sockaddr_in *);
+ void dologout(int);
+ void perror_reply(int, char *);
+ 
+ void
  main(int argc, char **argv, char **envp)
  {
      int addrlen,
***************
*** 686,691 ****
--- 698,705 ----
   * does not have a standard shell as returned by getusershell().  Disallow
   * anyone mentioned in the file _PATH_FTPUSERS to allow people such as root
   * and uucp to be avoided. */
+ 
+ void
  user(char *name)
  {
      register char *cp;
***************
*** 878,884 ****
--- 892,903 ----
      } else
          acl_setfunctions();
  
+ #ifdef SKEY
+     pwok = skeyaccess(name, NULL, remotehost, remoteaddr);
+     reply(331, "%s", skey_challenge(name, pw, pwok));
+ #else
d45 1
a45 39
*** 887,892 ****
--- 906,912 ----
  }
  
  /* Check if a user is in the file _PATH_FTPUSERS */
+ int
  checkuser(char *name)
  {
      register FILE *fd;
***************
*** 911,916 ****
--- 931,937 ----
  
  /* Terminate login as previous user, if any, resetting state; used when USER
   * command is given or login fails. */
+ void
  end_login(void)
  {
  
***************
*** 965,970 ****
--- 986,992 ----
          return 0;
  }
  
+ void
  pass(char *passwd)
  {
      char *xpasswd,
***************
*** 1007,1014 ****
--- 1029,1041 ----
  #ifdef KERBEROS
          xpasswd = crypt16(passwd, salt);
  #else
+ #ifdef SKEY
+ 	xpasswd = skey_crypt(passwd, salt, pw, pwok);
+ 	pwok = 0;
+ #else
d48 8
a55 2
+ #endif
  
d58 1
a58 421
***************
*** 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;
  
--- 1122,1132 ----
      (void) initgroups(pw->pw_name, pw->pw_gid);
  
      /* open wtmp before chroot */
! #if (defined(BSD) && (BSD >= 199103))
!     (void) sprintf(ttyline, "ftp%ld", getpid());
! #else
!     (void) sprintf(ttyline, "ftpd%d", getpid());
! #endif
      logwtmp(ttyline, pw->pw_name, remotehost);
      logged_in = 1;
  
***************
*** 1190,1197 ****
          reply(230, "Guest login ok, access restrictions apply.");
  #ifdef SETPROCTITLE
          sprintf(proctitle, "%s: anonymous/%.*s", remotehost,
!                     sizeof(proctitle) - sizeof(remotehost) -
!                     sizeof(": anonymous/"), passwd);
          setproctitle("%s", proctitle);
  #endif /* SETPROCTITLE */
          if (logging)
--- 1221,1228 ----
          reply(230, "Guest login ok, access restrictions apply.");
  #ifdef SETPROCTITLE
          sprintf(proctitle, "%s: anonymous/%.*s", remotehost,
!                     (int) (sizeof(proctitle) - sizeof(remotehost) -
!                     sizeof(": anonymous/")), passwd);
          setproctitle("%s", proctitle);
  #endif /* SETPROCTITLE */
          if (logging)
***************
*** 1235,1240 ****
--- 1266,1272 ----
      return (buf);
  }
  
+ void
  retrieve(char *cmd, char *name)
  {
      FILE *fin,
***************
*** 1403,1409 ****
      if (dout == NULL)
          goto done;
  #ifdef HAVE_ST_BLKSIZE
!     send_data(fin, dout, st.st_blksize);
  #else
      send_data(fin, dout, BUFSIZ);
  #endif
--- 1435,1441 ----
      if (dout == NULL)
          goto done;
  #ifdef HAVE_ST_BLKSIZE
!     send_data(fin, dout, st.st_blksize*2);
  #else
      send_data(fin, dout, BUFSIZ);
  #endif
***************
*** 1422,1428 ****
--- 1454,1464 ----
          for (loop = 0; namebuf[loop]; loop++)
              if (isspace(namebuf[loop]) || iscntrl(namebuf[loop]))
                  namebuf[loop] = '_';
+ #if (defined(BSD) && (BSD >= 199103))
+         sprintf(msg, "%.24s %d %s %qd %s %c %s %c %c %s ftp %d %s\n",
+ #else
          sprintf(msg, "%.24s %d %s %d %s %c %s %c %c %s ftp %d %s\n",
+ #endif
                  ctime(&curtime),
                  xfertime,
                  remotehost,
***************
*** 1445,1450 ****
--- 1481,1487 ----
          (*closefunc) (fin);
  }
  
+ void
  store(char *name, char *mode, int unique)
  {
      FILE *fout, *din;
***************
*** 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,
--- 1647,1657 ----
          for (loop = 0; namebuf[loop]; loop++)
              if (isspace(namebuf[loop]) || iscntrl(namebuf[loop]))
                  namebuf[loop] = '_';
! #if (defined(BSD) && (BSD >= 199103))
!         sprintf(msg, "%.24s %d %s %qd %s %c %s %c %c %s ftp %d %s\n",
! #else
!         sprintf(msg, "%.24s %d %s %d %s %c %s %c %c %s ftp %d %s\n", 
! #endif
                  ctime(&curtime),
                  xfertime,
                  remotehost,
***************
*** 1678,1683 ****
--- 1719,1735 ----
      if (setsockopt(s, IPPROTO_IP, IP_TOS, (char *) &on, sizeof(int)) < 0)
            syslog(LOG_WARNING, "setsockopt (IP_TOS): %m");
  #endif
+ #ifdef TCP_NOPUSH
+ 	/*
+ 	 * Turn off push flag to keep sender TCP from sending short packets
+ 	 * at the boundaries of each write().  Should probably do a SO_SNDBUF
+ 	 * to set the send buffer size as well, but that may not be desirable
+ 	 * in heavy-load situations.
+ 	 */
+ 	on = 1;
+ 	if (setsockopt(s, IPPROTO_TCP, TCP_NOPUSH, (char *)&on, sizeof on) < 0)
+ 		syslog(LOG_WARNING, "setsockopt (TCP_NOPUSH): %m");
+ #endif
  
      return (fdopen(s, mode));
    bad:
***************
*** 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) {
--- 1751,1761 ----
      file_size = size;
      byte_count = 0;
      if (size != (off_t) - 1)
! #if (defined(BSD) && (BSD >= 199103))
!         (void) sprintf(sizebuf, " (%qd bytes)", size);
! #else
! 	(void) sprintf(sizebuf, " (%d bytes)", size);
! #endif
      else
          (void) strcpy(sizebuf, "");
      if (pdata >= 0) {
***************
*** 1707,1715 ****
          int s,
            fromlen = sizeof(from);
  
!         s = accept(pdata, (struct sockaddr *) &from, &fromlen);
!         if (s < 0) {
!             reply(425, "Can't open data connection.");
              (void) close(pdata);
              pdata = -1;
              return (NULL);
--- 1763,1785 ----
          int s,
            fromlen = sizeof(from);
  
! #ifdef FD_ZERO
!        struct timeval timeout;
!        fd_set set;
! 
!        FD_ZERO(&set);
!        FD_SET(pdata, &set);
! 
!        timeout.tv_usec = 0;
!        timeout.tv_sec = 120;
! 
!        if (select(pdata+1, &set, (fd_set *) 0, (fd_set *) 0, &timeout) == 0 ||
!            (s = accept(pdata, (struct sockaddr *) &from, &fromlen)) < 0) {
! #else
!           s = accept(pdata, (struct sockaddr *) &from, &fromlen);
!           if (s < 0) {
! #endif
! 	    reply(425, "Can't open data connection.");
              (void) close(pdata);
              pdata = -1;
              return (NULL);
***************
*** 1764,1769 ****
--- 1834,1840 ----
   * encapsulation of the data subject to Mode, Structure, and Type.
   *
   * NB: Form isn't handled. */
+ void
  send_data(FILE *instr, FILE *outstr, off_t blksize)
  {
      register int c,
***************
*** 1839,1844 ****
--- 1910,1916 ----
   * the data subject to Mode, Structure, and Type.
   *
   * N.B.: Form isn't handled. */
+ int
  receive_data(FILE *instr, FILE *outstr)
  {
      register int c;
***************
*** 1915,1920 ****
--- 1987,1993 ----
      return (-1);
  }
  
+ void
  statfilecmd(char *filename)
  {
      char line[BUFSIZ];
***************
*** 1948,1953 ****
--- 2021,2027 ----
      reply(211, "End of Status");
  }
  
+ void
  statcmd(void)
  {
      struct sockaddr_in *sin;
***************
*** 2001,2006 ****
--- 2075,2081 ----
      reply(211, "End of status");
  }
  
+ void
  fatal(char *s)
  {
      reply(451, "Error in server: %s\n", s);
***************
*** 2095,2100 ****
--- 2170,2176 ----
  
  #else
  /* VARARGS2 */
+ void
  reply(int n, char *fmt, int p0, int p1, int p2, int p3, int p4, int p5)
  {
      if (autospout != NULL) {
***************
*** 2129,2134 ****
--- 2205,2211 ----
  }
  
  /* VARARGS2 */
+ void
  lreply(int n, char *fmt, int p0, int p1, int p2, int p3, int p4, int p5)
  {
      if (!dolreplies)
***************
*** 2144,2160 ****
--- 2221,2240 ----
  }
  #endif
  
+ void
  ack(char *s)
  {
      reply(250, "%s command successful.", s);
  }
  
+ void
  nack(char *s)
  {
      reply(502, "%s command not implemented.", s);
  }
  
  /* ARGSUSED */
+ void
  yyerror(char *s)
  {
      char *cp;
***************
*** 2164,2169 ****
--- 2244,2250 ----
      reply(500, "'%s': command not understood.", cbuf);
  }
  
+ void
  delete(char *name)
  {
      struct stat st;
***************
*** 2208,2213 ****
--- 2289,2295 ----
      ack("DELE");
  }
  
+ void
  cwd(char *path)
  {
      struct aclmember *entry = NULL;
***************
*** 2248,2253 ****
--- 2330,2336 ----
      }
  }
  
+ void
  makedir(char *name)
  {
  	uid_t uid;
***************
*** 2274,2282 ****
      reply(257, "MKD command successful.");
  }
  
  removedir(char *name)
  {
! 	int c, d;  /* dummy variables */
          int valid = 0;
  
      /*
--- 2357,2366 ----
      reply(257, "MKD command successful.");
  }
  
+ void
  removedir(char *name)
  {
! 	unsigned long c, d;  /* dummy variables */
          int valid = 0;
  
      /*
***************
*** 2298,2303 ****
--- 2382,2388 ----
          ack("RMD");
  }
  
+ void
  pwd(void)
  {
      char path[MAXPATHLEN + 1];
***************
*** 2312,2318 ****
  #else
      if (getwd(path) == (char *) NULL)
  #endif
!         reply(550, "%s.", path);
      else
          reply(257, "\"%s\" is current directory.", path);
  }
--- 2397,2404 ----
  #else
      if (getwd(path) == (char *) NULL)
  #endif
! /*        reply(550, "%s.", path); */
! 	reply(550, "Permission denied.");
      else
          reply(257, "\"%s\" is current directory.", path);
  }
***************
*** 2342,2347 ****
--- 2428,2434 ----
      return (name);
  }
  
+ void
  renamecmd(char *from, char *to)
  {
  
***************
*** 2357,2362 ****
--- 2444,2450 ----
          ack("RNTO");
  }
  
+ void
  dolog(struct sockaddr_in *sin)
  {
      struct hostent *hp;
***************
*** 2412,2417 ****
--- 2500,2506 ----
  }
  
  /* Record logout in wtmp file and exit with supplied status. */
+ void
  dologout(int status)
  {
     /*
***************
*** 2466,2471 ****
--- 2555,2561 ----
   * PASV command in RFC959. However, it has been blessed as a legitimate
   * response by Jon Postel in a telephone conversation with Rick Adams on 25
   * Jan 89. */
+ void
  passive(void)
  {
      int len;
***************
*** 2537,2542 ****
--- 2627,2633 ----
  }
  
  /* Format and send reply containing system error number. */
+ void
  perror_reply(int code, char *string)
  {
      reply(code, "%s: %s.", string, strerror(errno));
***************
*** 2545,2550 ****
--- 2636,2642 ----
  static char *onefile[] =
  {"", 0};
  
+ void
  send_file_list(char *whichfiles)
  {
      struct stat st;
@


1.4
log
@Implement alternative strategy: if it impossible to confirm password, ask for
it anycase, but not tell that S/key password required
It looks like non-s/key system from outside

Additionly tell that s/key required if it is so for normal case
@
text
@d1 2
a2 2
*** src/ftpd.c.orig	Wed Apr 13 23:17:18 1994
--- src/ftpd.c	Tue May 30 00:17:25 1995
d175 17
d237 20
d265 1
a265 1
--- 1740,1750 ----
d288 1
a288 1
--- 1752,1774 ----
d314 1
a314 1
--- 1823,1829 ----
d324 1
a324 1
--- 1899,1905 ----
d334 1
a334 1
--- 1976,1982 ----
d344 1
a344 1
--- 2010,2016 ----
d354 1
a354 1
--- 2064,2070 ----
d364 1
a364 1
--- 2159,2165 ----
d374 1
a374 1
--- 2194,2200 ----
d384 1
a384 1
--- 2210,2229 ----
d407 1
a407 1
--- 2233,2239 ----
d417 1
a417 1
--- 2278,2284 ----
d427 1
a427 1
--- 2319,2325 ----
d446 1
a446 1
--- 2346,2355 ----
d459 1
a459 1
--- 2371,2377 ----
d476 1
a476 1
--- 2386,2393 ----
d487 1
a487 1
--- 2417,2423 ----
d497 1
a497 1
--- 2433,2439 ----
d507 1
a507 1
--- 2489,2495 ----
d514 1
a514 1
      if (logged_in) {
d516 2
a517 2
*** 2459,2464 ****
--- 2537,2543 ----
d526 2
a527 2
*** 2530,2535 ****
--- 2609,2615 ----
d536 2
a537 2
*** 2538,2543 ****
--- 2618,2624 ----
@


1.3
log
@Copy s/key changes from our ftpd (don't even ask for password
if it is impossible to confirm it)
@
text
@d1 2
a2 2
*** src/ftpd.c.orig	Thu Apr 14 01:17:18 1994
--- src/ftpd.c	Thu Oct 17 21:27:32 1996
d24 1
a24 1
--- 237,248 ----
a30 1
+ int     sflag;
d38 1
a38 1
--- 258,269 ----
d48 1
d65 1
a65 1
--- 892,913 ----
d71 1
a71 11
+     cp = skey_challenge(name, pw, pwok, &sflag);
+     if (!pwok && sflag) {
+ 	    reply(530, cp);
+ 	    if (logging)
+ 		    syslog(LOG_NOTICE,
+ 			"FTP LOGIN REFUSED (s/key password not exist) FROM %s [%s], %s",
+ 			remotehost, remoteaddr, name);
+ 	    pw = (struct passwd *) NULL;
+ 	    return;
+     }
+     reply(331, cp);
d80 1
a80 1
--- 916,922 ----
d90 1
a90 1
--- 941,947 ----
d100 1
a100 1
--- 996,1002 ----
d110 1
a110 1
--- 1039,1051 ----
d133 1
a133 1
--- 1132,1142 ----
d155 1
a155 1
--- 1231,1238 ----
d166 1
a166 1
--- 1276,1282 ----
d176 1
a176 1
--- 1464,1474 ----
d190 1
a190 1
--- 1491,1497 ----
d207 1
a207 1
--- 1657,1667 ----
d228 1
a228 1
--- 1750,1760 ----
d251 1
a251 1
--- 1762,1784 ----
d277 1
a277 1
--- 1833,1839 ----
d287 1
a287 1
--- 1909,1915 ----
d297 1
a297 1
--- 1986,1992 ----
d307 1
a307 1
--- 2020,2026 ----
d317 1
a317 1
--- 2074,2080 ----
d327 1
a327 1
--- 2169,2175 ----
d337 1
a337 1
--- 2204,2210 ----
d347 1
a347 1
--- 2220,2239 ----
d370 1
a370 1
--- 2243,2249 ----
d380 1
a380 1
--- 2288,2294 ----
d390 1
a390 1
--- 2329,2335 ----
d409 1
a409 1
--- 2356,2365 ----
d422 1
a422 1
--- 2381,2387 ----
d439 1
a439 1
--- 2396,2403 ----
d450 1
a450 1
--- 2427,2433 ----
d460 1
a460 1
--- 2443,2449 ----
d470 1
a470 1
--- 2499,2505 ----
d480 1
a480 1
--- 2547,2553 ----
d490 1
a490 1
--- 2619,2625 ----
d500 1
a500 1
--- 2628,2634 ----
@


1.2
log
@Fix screwy output from pwd when in a "hidden" directory.
Submitted by:	torstenb
@
text
@d1 2
a2 2
*** src/ftpd.c.orig	Wed Apr 13 23:17:18 1994
--- src/ftpd.c	Tue May 30 00:17:25 1995
d24 1
a24 1
--- 237,247 ----
d31 1
d39 1
a39 1
--- 257,269 ----
a48 1
+ void
d65 1
a65 1
--- 892,903 ----
d71 11
a81 1
+     reply(331, "%s", skey_challenge(name, pw, pwok));
d90 1
a90 1
--- 906,912 ----
d100 1
a100 1
--- 931,937 ----
d110 1
a110 1
--- 986,992 ----
d120 1
a120 1
--- 1029,1041 ----
d143 1
a143 1
--- 1122,1132 ----
d165 1
a165 1
--- 1221,1228 ----
d176 1
a176 1
--- 1266,1272 ----
d186 1
a186 1
--- 1454,1464 ----
d200 1
a200 1
--- 1481,1487 ----
d217 1
a217 1
--- 1647,1657 ----
d238 1
a238 1
--- 1740,1750 ----
d261 1
a261 1
--- 1752,1774 ----
d287 1
a287 1
--- 1823,1829 ----
d297 1
a297 1
--- 1899,1905 ----
d307 1
a307 1
--- 1976,1982 ----
d317 1
a317 1
--- 2010,2016 ----
d327 1
a327 1
--- 2064,2070 ----
d337 1
a337 1
--- 2159,2165 ----
d347 1
a347 1
--- 2194,2200 ----
d357 1
a357 1
--- 2210,2229 ----
d380 1
a380 1
--- 2233,2239 ----
d390 1
a390 1
--- 2278,2284 ----
d400 1
a400 1
--- 2319,2325 ----
d419 1
a419 1
--- 2346,2355 ----
d432 1
a432 1
--- 2371,2377 ----
d449 1
a449 1
--- 2386,2393 ----
d460 1
a460 1
--- 2417,2423 ----
d470 1
a470 1
--- 2433,2439 ----
d480 1
a480 1
--- 2489,2495 ----
d490 1
a490 1
--- 2537,2543 ----
d500 1
a500 1
--- 2609,2615 ----
d510 1
a510 1
--- 2618,2624 ----
@


1.1
log
@Finally get most of wu-ftpd working.

Changes:

- Use internal functions rather than libc versions in a couple of places
  This allows writing to dirs without read perms and the
  ftpconversions file to work.
- Fix up skey support to use correct parameters
- using compress in the ftpconversions file doesn't seem to work,
  so alter example ftpconversions file to use gzip -d rather than compress -dc
- Install manpages compressed

Still broken :

- using /bin/compress to compress/uncompress files on the fly
@
text
@d1 2
a2 2
*** src/ftpd.c.orig	Wed Apr 13 22:17:18 1994
--- src/ftpd.c	Wed Jan 25 21:51:50 1995
d431 18
d450 1
a450 1
--- 2416,2422 ----
d460 1
a460 1
--- 2432,2438 ----
d470 1
a470 1
--- 2488,2494 ----
d480 1
a480 1
--- 2536,2542 ----
d490 1
a490 1
--- 2608,2614 ----
d500 1
a500 1
--- 2617,2623 ----
@
