muddleftpd-cvs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Muddleftpd-cvs] muddleftpd/src bufread.c newfile.c string.c str...


From: Beau Kuiper
Subject: [Muddleftpd-cvs] muddleftpd/src bufread.c newfile.c string.c str...
Date: Tue, 29 Oct 2002 04:13:31 -0500

CVSROOT:        /cvsroot/muddleftpd
Module name:    muddleftpd
Changes by:     Beau Kuiper <address@hidden>    02/10/29 04:13:31

Modified files:
        src            : bufread.c newfile.c string.c string.h 

Log message:
        Actually fixed it this time.

CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/muddleftpd/muddleftpd/src/bufread.c.diff?tr1=1.1&tr2=1.2&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/muddleftpd/muddleftpd/src/newfile.c.diff?tr1=1.1&tr2=1.2&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/muddleftpd/muddleftpd/src/string.c.diff?tr1=1.2&tr2=1.3&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/muddleftpd/muddleftpd/src/string.h.diff?tr1=1.1&tr2=1.2&r1=text&r2=text

Patches:
Index: muddleftpd/src/bufread.c
diff -c muddleftpd/src/bufread.c:1.1 muddleftpd/src/bufread.c:1.2
*** muddleftpd/src/bufread.c:1.1        Thu Sep 26 03:55:42 2002
--- muddleftpd/src/bufread.c    Tue Oct 29 04:13:31 2002
***************
*** 50,56 ****
                return(TRUE);
        
        string_cat(&(peer->inbuffer), inputbuf, stringlen);
!       string_filterbadchars(&(peer->inbuffer), oldlen);
  
        return(FALSE);  
  }
--- 50,56 ----
                return(TRUE);
        
        string_cat(&(peer->inbuffer), inputbuf, stringlen);
!       string_filterbadchars_telnet(&(peer->inbuffer), oldlen);
  
        return(FALSE);  
  }
Index: muddleftpd/src/newfile.c
diff -c muddleftpd/src/newfile.c:1.1 muddleftpd/src/newfile.c:1.2
*** muddleftpd/src/newfile.c:1.1        Thu Sep 26 03:55:42 2002
--- muddleftpd/src/newfile.c    Tue Oct 29 04:13:31 2002
***************
*** 32,38 ****
        if (file->eof)
                return(size);
        string_cat(&(file->buffer), inbuf, size);
!       string_filterbadchars(&(file->buffer), oldsize);
        return(STRLENGTH(file->buffer) - oldsize);
  }
        
--- 32,38 ----
        if (file->eof)
                return(size);
        string_cat(&(file->buffer), inbuf, size);
!       string_filterbadchars_unix(&(file->buffer), oldsize);
        return(STRLENGTH(file->buffer) - oldsize);
  }
        
Index: muddleftpd/src/string.c
diff -c muddleftpd/src/string.c:1.2 muddleftpd/src/string.c:1.3
*** muddleftpd/src/string.c:1.2 Tue Oct 29 00:01:38 2002
--- muddleftpd/src/string.c     Tue Oct 29 04:13:31 2002
***************
*** 74,80 ****
        va_end(printfargs);
  }
  
! void string_filterbadchars(STRING **s, int start)
  {
        int count, slen;
        unsigned char *pos1, *pos2;
--- 74,81 ----
        va_end(printfargs);
  }
  
! /* this is for input to ftp. Make very strict. (No tabs or nofing, only /r/n) 
*/
! void string_filterbadchars_telnet(STRING **s, int start)
  {
        int count, slen;
        unsigned char *pos1, *pos2;
***************
*** 101,106 ****
--- 102,108 ----
                                case '\r':
                                        /* allow specific case of \r\n only. */
                                        if (count != (slen - 1))
+                                       {
                                                if (*(pos1 + 1) == '\n')
                                                {
                                                        // forward 2 chars
***************
*** 110,116 ****
--- 112,163 ----
                                                        pos2 += 2;
                                                        count++;
                                                }
+                                               else
+                                                       STRLENGTH(*s) -= 1;
+                                       }
+                                       else
+                                               STRLENGTH(*s) -= 1;
+                                       
                                        break;
+                               default:
+                                       STRLENGTH(*s) -= 1;
+                                       break;
+                       }
+               }
+               pos1++;
+               count++;
+       }
+       *pos2 = 0;
+ }
+ 
+ /* this is for input files. Be quite relaxed, but still remove annoying
+    chars */
+    
+ void string_filterbadchars_unix(STRING **s, int start)
+ {
+       int count, slen;
+       unsigned char *pos1, *pos2;
+       
+       if (start > STRLENGTH(*s))
+               return;
+       
+       pos1 = pos2 = STRTOCHAR(*s) + start;
+       slen = STRLENGTH(*s);
+       count = start;
+       
+       while(count < slen)
+       {
+               /* be very aggressive. Only printable charaters! */
+               if (*pos1 >= 32)
+               {
+                       *pos2 = *pos1;
+                       pos2++;
+               }
+               else
+               {
+                       switch(*pos1)
+                       {
+                               case '\n':
                                case '\t':
                                        *pos2 = *pos1;
                                        pos2++;
Index: muddleftpd/src/string.h
diff -c muddleftpd/src/string.h:1.1 muddleftpd/src/string.h:1.2
*** muddleftpd/src/string.h:1.1 Thu Sep 26 03:55:42 2002
--- muddleftpd/src/string.h     Tue Oct 29 04:13:31 2002
***************
*** 15,18 ****
  void string_dropfront(STRING **s, int nchars);
  void string_catvprintf(STRING **s, char *format, va_list ap);
  void string_catprintf(STRING **s, char *format, ...);
! void string_filterbadchars(STRING **s, int start);
--- 15,19 ----
  void string_dropfront(STRING **s, int nchars);
  void string_catvprintf(STRING **s, char *format, va_list ap);
  void string_catprintf(STRING **s, char *format, ...);
! void string_filterbadchars_telnet(STRING **s, int start);
! void string_filterbadchars_unix(STRING **s, int start);




reply via email to

[Prev in Thread] Current Thread [Next in Thread]