[BACK]Return to ftpcmd.y CVS log [TXT][DIR] Up to [cvs.NetBSD.org] / src / libexec / ftpd

Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.

Diff for /src/libexec/ftpd/ftpcmd.y between version 1.77 and 1.77.2.3

version 1.77, 2003/08/07 09:46:39 version 1.77.2.3, 2004/08/12 20:44:26
Line 1 
Line 1 
 /*      $NetBSD$        */  /*      $NetBSD$        */
   
 /*-  /*-
  * Copyright (c) 1997-2002 The NetBSD Foundation, Inc.   * Copyright (c) 1997-2004 The NetBSD Foundation, Inc.
  * All rights reserved.   * All rights reserved.
  *   *
  * This code is derived from software contributed to The NetBSD Foundation   * This code is derived from software contributed to The NetBSD Foundation
Line 94  __RCSID("$NetBSD$");
Line 94  __RCSID("$NetBSD$");
 #include <ctype.h>  #include <ctype.h>
 #include <errno.h>  #include <errno.h>
 #include <pwd.h>  #include <pwd.h>
 #include <setjmp.h>  
 #include <signal.h>  
 #include <stdio.h>  #include <stdio.h>
 #include <stdlib.h>  #include <stdlib.h>
 #include <string.h>  #include <string.h>
Line 134  char *fromname;
Line 132  char *fromname;
         A       B       C       E       F       I          A       B       C       E       F       I
         L       N       P       R       S       T          L       N       P       R       S       T
   
         SP      CRLF    COMMA          SP      CRLF    COMMA   ALL
   
         USER    PASS    ACCT    CWD     CDUP    SMNT          USER    PASS    ACCT    CWD     CDUP    SMNT
         QUIT    REIN    PORT    PASV    TYPE    STRU          QUIT    REIN    PORT    PASV    TYPE    STRU
Line 160  char *fromname;
Line 158  char *fromname;
         LEXERR          LEXERR
   
 %token  <s> STRING  %token  <s> STRING
 %token  <s> ALL  
 %token  <u> NUMBER  %token  <u> NUMBER
   
 %type   <u.i> check_login octal_number byte_size  %type   <u.i> check_login octal_number byte_size
Line 175  char *fromname;
Line 172  char *fromname;
 cmd_sel  cmd_sel
         : cmd          : cmd
                 {                  {
                         fromname = NULL;                          REASSIGN(fromname, NULL);
                         restart_point = (off_t) 0;                          restart_point = (off_t) 0;
                 }                  }
   
Line 455  cmd
Line 452  cmd
                         if (check_write($3, 0)) {                          if (check_write($3, 0)) {
                                 if (fromname) {                                  if (fromname) {
                                         renamecmd(fromname, $3);                                          renamecmd(fromname, $3);
                                         free(fromname);                                          REASSIGN(fromname, NULL);
                                         fromname = NULL;  
                                 } else {                                  } else {
                                         reply(503, "Bad sequence of commands.");                                          reply(503, "Bad sequence of commands.");
                                 }                                  }
Line 544  cmd
Line 540  cmd
         | SITE SP CHMOD SP octal_number SP pathname CRLF          | SITE SP CHMOD SP octal_number SP pathname CRLF
                 {                  {
                         if (check_write($7, 0)) {                          if (check_write($7, 0)) {
                                 if ($5 > 0777)                                  if (($5 == -1) || ($5 > 0777))
                                         reply(501,                                          reply(501,
                                 "CHMOD: Mode value must be between 0 and 0777");                                  "CHMOD: Mode value must be between 0 and 0777");
                                 else if (chmod($7, $5) < 0)                                  else if (chmod($7, $5) < 0)
Line 879  rcmd
Line 875  rcmd
         : REST check_login SP NUMBER CRLF          : REST check_login SP NUMBER CRLF
                 {                  {
                         if ($2) {                          if ($2) {
                                 fromname = NULL;                                  REASSIGN(fromname, NULL);
                                 restart_point = (off_t)$4.ll;                                  restart_point = (off_t)$4.ll;
                                 reply(350,                                  reply(350,
     "Restarting at " LLF ". Send STORE or RETRIEVE to initiate transfer.",      "Restarting at " LLF ". Send STORE or RETRIEVE to initiate transfer.",
Line 890  rcmd
Line 886  rcmd
         | RNFR SP pathname CRLF          | RNFR SP pathname CRLF
                 {                  {
                         restart_point = (off_t) 0;                          restart_point = (off_t) 0;
                         if (check_write($3, 0))                          if (check_write($3, 0)) {
                                   REASSIGN(fromname, NULL);
                                 fromname = renamefrom($3);                                  fromname = renamefrom($3);
                           }
                         if ($3 != NULL)                          if ($3 != NULL)
                                 free($3);                                  free($3);
                 }                  }
Line 1298  struct tab sitetab[] = {
Line 1296  struct tab sitetab[] = {
 static  int     check_write(const char *, int);  static  int     check_write(const char *, int);
 static  void    help(struct tab *, const char *);  static  void    help(struct tab *, const char *);
 static  void    port_check(const char *, int);  static  void    port_check(const char *, int);
 static  void    toolong(int);  
         int     yylex(void);          int     yylex(void);
   
 extern int epsvall;  extern int epsvall;
Line 1445  getline(char *s, int n, FILE *iop)
Line 1442  getline(char *s, int n, FILE *iop)
         return (s);          return (s);
 }  }
   
 static void  
 toolong(int signo)  
 {  
   
         reply(421,  
             "Timeout (" LLF " seconds): closing control connection.",  
             (LLT)curclass.timeout);  
         if (logging)  
                 syslog(LOG_INFO, "User %s timed out after " LLF " seconds",  
                     (pw ? pw->pw_name : "unknown"), (LLT)curclass.timeout);  
         dologout(1);  
 }  
   
 void  void
 ftp_handle_line(char *cp)  ftp_handle_line(char *cp)
 {  {
Line 1471  ftp_loop(void)
Line 1455  ftp_loop(void)
 {  {
   
         while (1) {          while (1) {
                 (void) signal(SIGALRM, toolong);  
                 (void) alarm(curclass.timeout);                  (void) alarm(curclass.timeout);
                 if (getline(cbuf, sizeof(cbuf)-1, stdin) == NULL) {                  if (getline(cbuf, sizeof(cbuf)-1, stdin) == NULL) {
                         reply(221, "You could at least say goodbye.");                          reply(221, "You could at least say goodbye.");
Line 1627  yylex(void)
Line 1610  yylex(void)
                         return (NUMBER);                          return (NUMBER);
                 }                  }
                 if (strncasecmp(&cmdp[cpos], "ALL", 3) == 0                  if (strncasecmp(&cmdp[cpos], "ALL", 3) == 0
                  && !isalnum(cmdp[cpos + 3])) {                      && !isalnum(cmdp[cpos + 3])) {
                         yylval.s = xstrdup("ALL");  
                         cpos += 3;                          cpos += 3;
                         return ALL;                          return (ALL);
                 }                  }
                 switch (cmdp[cpos++]) {                  switch (cmdp[cpos++]) {
   
Line 1716  yylex(void)
Line 1698  yylex(void)
         }          }
         yyerror(NULL);          yyerror(NULL);
         state = CMD;          state = CMD;
         is_oob = 0;          return (0);
         longjmp(errcatch, 0);  
         /* NOTREACHED */  
 }  }
   
 /* ARGSUSED */  /* ARGSUSED */

Legend:
Removed from v.1.77  
changed lines
  Added in v.1.77.2.3

CVSweb <webmaster@jp.NetBSD.org>