muddleftpd-cvs
[Top][All Lists]
Advanced

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

[Muddleftpd-cvs] muddleftpd ./ChangeLog ./NEWS ./configure.ac sr...


From: Beau Kuiper
Subject: [Muddleftpd-cvs] muddleftpd ./ChangeLog ./NEWS ./configure.ac sr...
Date: Sun, 02 Nov 2003 08:06:11 -0500

CVSROOT:        /cvsroot/muddleftpd
Module name:    muddleftpd
Branch:         
Changes by:     Beau Kuiper <address@hidden>    03/11/02 08:06:10

Modified files:
        .              : ChangeLog NEWS configure.ac 
        src            : ftpd.h ftpout.c logger.c string.c string.h 
                         utils.c 

Log message:
        Fixed varargs handling so PPC output isn't scrambled. Ready for 1.3.13 
release.

CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/muddleftpd/muddleftpd/ChangeLog.diff?tr1=1.6&tr2=1.7&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/muddleftpd/muddleftpd/NEWS.diff?tr1=1.2&tr2=1.3&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/muddleftpd/muddleftpd/configure.ac.diff?tr1=1.2&tr2=1.3&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/muddleftpd/muddleftpd/src/ftpd.h.diff?tr1=1.1&tr2=1.2&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/muddleftpd/muddleftpd/src/ftpout.c.diff?tr1=1.1&tr2=1.2&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/muddleftpd/muddleftpd/src/logger.c.diff?tr1=1.4&tr2=1.5&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/muddleftpd/muddleftpd/src/string.c.diff?tr1=1.3&tr2=1.4&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/muddleftpd/muddleftpd/src/string.h.diff?tr1=1.2&tr2=1.3&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/muddleftpd/muddleftpd/src/utils.c.diff?tr1=1.2&tr2=1.3&r1=text&r2=text

Patches:
Index: muddleftpd/ChangeLog
diff -c muddleftpd/ChangeLog:1.6 muddleftpd/ChangeLog:1.7
*** muddleftpd/ChangeLog:1.6    Tue Apr 15 06:04:35 2003
--- muddleftpd/ChangeLog        Sun Nov  2 08:06:10 2003
***************
*** 1,3 ****
--- 1,24 ----
+ 2003-11-02  Beau Kuiper <address@hidden>
+ 
+       * src/ftpd.h: removed headers for string.h since they are in
+       string.h. Updated prototype for safe_vsnprintf().
+ 
+       * src/string.c: fixed double use of varargs in string_catvprintf().
+       This fixed muddleftpd problems on PPC and possibly other archs.
+ 
+       * src/string.h: updated prototype for string_catvprintf()
+ 
+       * src/ftpout.c: modified ftp_write to use fixed string_catvprintf()
+ 
+       * src/logger.c: modified debuglog() to use fixed safe_vsnprint()
+ 
+       * src/utils.c: fixed possible double use of varargs in safe_vsnprintf()
+       Fixed safe_snprintf() so it does not use safe_vsnprintf() to prevent
+       performance degredation due to new design.
+ 
+       * Configure.ac: Added a check for stdarg.h, since the replacement
+       snprintf code needs it.
+ 
  2003-04-15  Beau Kuiper <address@hidden>
  
        * src/main.c: mainprog(): added code to close all file descriptors.
Index: muddleftpd/NEWS
diff -c muddleftpd/NEWS:1.2 muddleftpd/NEWS:1.3
*** muddleftpd/NEWS:1.2 Tue Oct 29 00:01:38 2002
--- muddleftpd/NEWS     Sun Nov  2 08:06:10 2003
***************
*** 1,3 ****
--- 1,4 ----
+ 
  Version 1.3.13:
  
        1) Change: Revamped build system to use new build tools.
***************
*** 5,10 ****
--- 6,13 ----
        3) Bug Fix: Properly fixed bug in 1.3.12.1, so muddleftpd does not
                    accept /r or /n from user input unless it is the form of
                    a TELNET newline.
+       4) Bug Fix: Scrambled output on PPC systems fixed. (possibly other
+                   systems too)
  
  Version 1.3.12.1:
  
Index: muddleftpd/configure.ac
diff -c muddleftpd/configure.ac:1.2 muddleftpd/configure.ac:1.3
*** muddleftpd/configure.ac:1.2 Sun Oct 20 07:51:26 2002
--- muddleftpd/configure.ac     Sun Nov  2 08:06:10 2003
***************
*** 46,52 ****
  AC_HEADER_STDC
  AC_HEADER_SYS_WAIT
  AC_CHECK_HEADERS(fcntl.h sys/time.h syslog.h unistd.h sys/uio.h)
! AC_CHECK_HEADERS(crypt.h dlfcn.h sys/capability.h netinet/in_systm.h)
  
  dnl Checks for typedefs, structures, and compiler characteristics.
  AC_HEADER_TIME
--- 46,52 ----
  AC_HEADER_STDC
  AC_HEADER_SYS_WAIT
  AC_CHECK_HEADERS(fcntl.h sys/time.h syslog.h unistd.h sys/uio.h)
! AC_CHECK_HEADERS(crypt.h dlfcn.h sys/capability.h netinet/in_systm.h stdarg.h)
  
  dnl Checks for typedefs, structures, and compiler characteristics.
  AC_HEADER_TIME
Index: muddleftpd/src/ftpd.h
diff -c muddleftpd/src/ftpd.h:1.1 muddleftpd/src/ftpd.h:1.2
*** muddleftpd/src/ftpd.h:1.1   Thu Sep 26 03:55:42 2002
--- muddleftpd/src/ftpd.h       Sun Nov  2 08:06:10 2003
***************
*** 473,488 ****
  int select_do(SELECTER *sel, int *signum, int timeout);
  void select_shutdown(SELECTER *sel);
  
- /* string.h */
- 
- STRING *string_new(void);
- void string_cat(STRING **s, char *catstr, int len);
- void string_clear(STRING **s);
- 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);
- 
  /* ftpsite.h */
  
  int ftp_site(FTPSTATE *peer, char *cmd);
--- 473,478 ----
***************
*** 539,545 ****
  
  void strtrimspace(char *string);
  int strchrcount(char *string, char tok);
! char *safe_vsnprintf(char *format, va_list ap);
  char *safe_snprintf(char *format, ...);
  char *getcwd2(void);
  void pathname_simplify(char *pathname);
--- 529,535 ----
  
  void strtrimspace(char *string);
  int strchrcount(char *string, char tok);
! char *safe_vsnprintf(int size, char *format, va_list ap);
  char *safe_snprintf(char *format, ...);
  char *getcwd2(void);
  void pathname_simplify(char *pathname);
Index: muddleftpd/src/ftpout.c
diff -c muddleftpd/src/ftpout.c:1.1 muddleftpd/src/ftpout.c:1.2
*** muddleftpd/src/ftpout.c:1.1 Thu Sep 26 03:55:42 2002
--- muddleftpd/src/ftpout.c     Sun Nov  2 08:06:10 2003
***************
*** 39,47 ****
                number[3] = ' ';
                string_cat(&(peer->outbuffer), number, 4);
        }
!               
        va_start(printfargs, fmt);
!       string_catvprintf(&(peer->outbuffer), fmt, printfargs);
        va_end(printfargs);
  
        if (!bare)
--- 39,51 ----
                number[3] = ' ';
                string_cat(&(peer->outbuffer), number, 4);
        }
! 
        va_start(printfargs, fmt);
!       outlen = vsnprintf(NULL, 0, fmt, printfargs);
!       va_end(printfargs);
!       
!       va_start(printfargs, fmt);
!       string_catvprintf(&(peer->outbuffer), outlen, fmt, printfargs);
        va_end(printfargs);
  
        if (!bare)
Index: muddleftpd/src/logger.c
diff -c muddleftpd/src/logger.c:1.4 muddleftpd/src/logger.c:1.5
*** muddleftpd/src/logger.c:1.4 Tue Oct 29 00:01:38 2002
--- muddleftpd/src/logger.c     Sun Nov  2 08:06:10 2003
***************
*** 101,109 ****
  #ifdef DEBUG
        char *logmsg;
        va_list ap;
        
        va_start(ap, format);
!       logmsg = safe_vsnprintf(format, ap);
        va_end(ap);
        
        log_addentry(MYLOG_DEBUG, NULL, logmsg);
--- 101,114 ----
  #ifdef DEBUG
        char *logmsg;
        va_list ap;
+       int len;
+ 
+       va_start(ap, format);
+       len = vsnprintf(NULL, 0, format, ap);
+       va_end(ap);
        
        va_start(ap, format);
!       logmsg = safe_vsnprintf(len, format, ap);
        va_end(ap);
        
        log_addentry(MYLOG_DEBUG, NULL, logmsg);
Index: muddleftpd/src/string.c
diff -c muddleftpd/src/string.c:1.3 muddleftpd/src/string.c:1.4
*** muddleftpd/src/string.c:1.3 Tue Oct 29 04:13:31 2002
--- muddleftpd/src/string.c     Sun Nov  2 08:06:10 2003
***************
*** 51,62 ****
        }
  }
  
! void string_catvprintf(STRING **s, char *format, va_list ap)
  {
-       int len;
-       
-       len = vsnprintf(NULL, 0, format, ap);
-       
        if (STRLENGTH(*s) + len >= MINLEN)
                reallocwrapper(len + STRCURSIZE(*s), (void *)s);
        
--- 51,58 ----
        }
  }
  
! void string_catvprintf(STRING **s, int len, char *format, va_list ap)
  {
        if (STRLENGTH(*s) + len >= MINLEN)
                reallocwrapper(len + STRCURSIZE(*s), (void *)s);
        
***************
*** 68,76 ****
  void string_catprintf(STRING **s, char *format, ...)
  {
        va_list printfargs;
        
        va_start(printfargs, format);
!       string_catvprintf(s, format, printfargs);
        va_end(printfargs);
  }
  
--- 64,77 ----
  void string_catprintf(STRING **s, char *format, ...)
  {
        va_list printfargs;
+       int len;
+       
+       va_start(printfargs, format);
+       len = vsnprintf(NULL, 0, format, printfargs);
+       va_end(printfargs);
        
        va_start(printfargs, format);
!       string_catvprintf(s, len, format, printfargs);
        va_end(printfargs);
  }
  
Index: muddleftpd/src/string.h
diff -c muddleftpd/src/string.h:1.2 muddleftpd/src/string.h:1.3
*** muddleftpd/src/string.h:1.2 Tue Oct 29 04:13:31 2002
--- muddleftpd/src/string.h     Sun Nov  2 08:06:10 2003
***************
*** 13,19 ****
  void string_cat(STRING **s, char *catstr, int len);
  void string_clear(STRING **s);
  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);
--- 13,19 ----
  void string_cat(STRING **s, char *catstr, int len);
  void string_clear(STRING **s);
  void string_dropfront(STRING **s, int nchars);
! void string_catvprintf(STRING **s, int len, 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);
Index: muddleftpd/src/utils.c
diff -c muddleftpd/src/utils.c:1.2 muddleftpd/src/utils.c:1.3
*** muddleftpd/src/utils.c:1.2  Tue Apr 15 06:04:35 2003
--- muddleftpd/src/utils.c      Sun Nov  2 08:06:10 2003
***************
*** 183,213 ****
        return(ret);
  }
  
! char *safe_vsnprintf(char *format, va_list ap)
  {
!       int size = BUFFSMALL;
!       char *buffer = mallocwrapper(size);
        int result;
        
!       result = vsnprintf(buffer, size, format, ap);
!       if (result >= size)
!       {
!               reallocwrapper(result+1, (void *)&buffer);
!               result = vsnprintf(buffer, result+1, format, ap);
!       }
!       
        return(buffer);
  }
  
  char *safe_snprintf(char *format, ...)
  {
        va_list printfargs;
!       char *buf;
!       
        va_start(printfargs, format);
!       buf = safe_vsnprintf(format, printfargs);
        va_end(printfargs);
        
        return(buf);
  }
  
--- 183,215 ----
        return(ret);
  }
  
! char *safe_vsnprintf(int size, char *format, va_list ap)
  {
!       char *buffer = mallocwrapper(size+1);
        int result;
        
!       result = vsnprintf(buffer, size+1, format, ap);
        return(buffer);
  }
  
  char *safe_snprintf(char *format, ...)
  {
        va_list printfargs;
!       int size = BUFFSMALL;
!       char *buf = mallocwrapper(size);
!       int result;
! 
        va_start(printfargs, format);
!       result = vsnprintf(buf, size, format, printfargs);
        va_end(printfargs);
        
+       if (result >= size)
+       {
+               reallocwrapper(result+1, (void *)&buf);
+               va_start(printfargs, format);
+               result = vsnprintf(buf, result+1, format, printfargs);
+               va_end(printfargs);
+       }
        return(buf);
  }
  




reply via email to

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