Fix a file-globbing bug in the daemon when chroot is on.
[rsync/rsync.git] / params.c
index b224ec9..7610ac7 100644 (file)
--- a/params.c
+++ b/params.c
@@ -1,10 +1,10 @@
-/*
-  This modules is based on the params.c module from Samba, written by Karl Auer
-  and much modifed by Christopher Hertel.
+/* This modules is based on the params.c module from Samba, written by Karl Auer
+   and much modifed by Christopher Hertel. */
 
+/*
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
+ * the Free Software Foundation; either version 3 of the License, or
  * (at your option) any later version.
  *
  * This program is distributed in the hope that it will be useful,
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  * GNU General Public License for more details.
  *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- *
- * -------------------------------------------------------------------------- **
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, visit the http://fsf.org website.
+ */
+
+/* -------------------------------------------------------------------------- **
  *
  * Module name: params
  *
@@ -74,6 +74,7 @@
  */
 
 #include "rsync.h"
+#include "ifuncs.h"
 
 /* -------------------------------------------------------------------------- **
  * Constants...
@@ -164,7 +165,7 @@ static int Continuation( char *line, int pos )
    */
   {
   pos--;
-  while( (pos >= 0) && isspace(((unsigned char *)line)[pos]) )
+  while( pos >= 0 && isSpace(line + pos) )
      pos--;
 
   return( ((pos >= 0) && ('\\' == line[pos])) ? pos : -1 );
@@ -207,10 +208,10 @@ static BOOL Section( FILE *InFile, BOOL (*sfunc)(char *) )
     if( i > (bSize - 2) )
       {
       bSize += BUFR_INC;
-      bufr   = Realloc( bufr, bSize );
+      bufr   = realloc_array( bufr, char, bSize );
       if( NULL == bufr )
         {
-        rprintf(FERROR, "%s Memory re-allocation failure.", func);
+        rprintf(FLOG, "%s Memory re-allocation failure.", func);
         return( False );
         }
       }
@@ -222,7 +223,7 @@ static BOOL Section( FILE *InFile, BOOL (*sfunc)(char *) )
         bufr[end] = '\0';
         if( 0 == end )                  /* Don't allow an empty name.       */
           {
-          rprintf(FERROR, "%s Empty section name in configuration file.\n", func );
+          rprintf(FLOG, "%s Empty section name in configuration file.\n", func );
           return( False );
           }
         if( !sfunc( bufr ) )            /* Got a valid name.  Deal with it. */
@@ -235,7 +236,7 @@ static BOOL Section( FILE *InFile, BOOL (*sfunc)(char *) )
         if( i < 0 )
           {
           bufr[end] = '\0';
-          rprintf(FERROR, "%s Badly formed line in configuration file: %s\n",
+          rprintf(FLOG, "%s Badly formed line in configuration file: %s\n",
                    func, bufr );
           return( False );
           }
@@ -260,7 +261,7 @@ static BOOL Section( FILE *InFile, BOOL (*sfunc)(char *) )
     }
 
   /* We arrive here if we've met the EOF before the closing bracket. */
-  rprintf(FERROR, "%s Unexpected EOF in the configuration file: %s\n", func, bufr );
+  rprintf(FLOG, "%s Unexpected EOF in the configuration file: %s\n", func, bufr );
   return( False );
   } /* Section */
 
@@ -301,10 +302,10 @@ static BOOL Parameter( FILE *InFile, BOOL (*pfunc)(char *, char *), int c )
     if( i > (bSize - 2) )       /* Ensure there's space for next char.    */
       {
       bSize += BUFR_INC;
-      bufr   = Realloc( bufr, bSize );
+      bufr   = realloc_array( bufr, char, bSize );
       if( NULL == bufr )
         {
-        rprintf(FERROR, "%s Memory re-allocation failure.", func) ;
+        rprintf(FLOG, "%s Memory re-allocation failure.", func) ;
         return( False );
         }
       }
@@ -314,7 +315,7 @@ static BOOL Parameter( FILE *InFile, BOOL (*pfunc)(char *, char *), int c )
       case '=':                 /* Equal sign marks end of param name. */
         if( 0 == end )              /* Don't allow an empty name.      */
           {
-          rprintf(FERROR, "%s Invalid parameter name in config. file.\n", func );
+          rprintf(FLOG, "%s Invalid parameter name in config. file.\n", func );
           return( False );
           }
         bufr[end++] = '\0';         /* Mark end of string & advance.   */
@@ -328,7 +329,7 @@ static BOOL Parameter( FILE *InFile, BOOL (*pfunc)(char *, char *), int c )
         if( i < 0 )
           {
           bufr[end] = '\0';
-          rprintf(FERROR, "%s Ignoring badly formed line in configuration file: %s\n",
+          rprintf(FLOG, "%s Ignoring badly formed line in configuration file: %s\n",
                    func, bufr );
           return( True );
           }
@@ -339,7 +340,7 @@ static BOOL Parameter( FILE *InFile, BOOL (*pfunc)(char *, char *), int c )
       case '\0':                /* Shouldn't have EOF within param name. */
       case EOF:
         bufr[i] = '\0';
-        rprintf(FERROR, "%s Unexpected end-of-file at: %s\n", func, bufr );
+        rprintf(FLOG, "%s Unexpected end-of-file at: %s\n", func, bufr );
         return( True );
 
       default:
@@ -366,10 +367,10 @@ static BOOL Parameter( FILE *InFile, BOOL (*pfunc)(char *, char *), int c )
     if( i > (bSize - 2) )       /* Make sure there's enough room. */
       {
       bSize += BUFR_INC;
-      bufr   = Realloc( bufr, bSize );
+      bufr   = realloc_array( bufr, char, bSize );
       if( NULL == bufr )
         {
-        rprintf(FERROR, "%s Memory re-allocation failure.", func) ;
+        rprintf(FLOG, "%s Memory re-allocation failure.", func) ;
         return( False );
         }
       }
@@ -386,7 +387,7 @@ static BOOL Parameter( FILE *InFile, BOOL (*pfunc)(char *, char *), int c )
           c = 0;
         else
           {
-          for( end = i; (end >= 0) && isspace(((unsigned char *) bufr)[end]); end-- )
+          for( end = i; end >= 0 && isSpace(bufr + end); end-- )
             ;
           c = getc( InFile );
           }
@@ -484,15 +485,15 @@ static FILE *OpenConfFile( char *FileName )
 
   if( NULL == FileName || 0 == *FileName )
     {
-    rprintf(FERROR,"%s No configuration filename specified.\n", func);
+    rprintf(FLOG, "%s No configuration filename specified.\n", func);
     return( NULL );
     }
 
-  OpenedFile = fopen( FileName, "r" O_TEXT_STR );
+  OpenedFile = fopen( FileName, "r" );
   if( NULL == OpenedFile )
     {
-    rprintf(FERROR,"rsync: unable to open configuration file \"%s\": %s\n",
-           FileName, strerror(errno));
+    rsyserr(FLOG, errno, "unable to open configuration file \"%s\"",
+           FileName);
     }
 
   return( OpenedFile );
@@ -530,10 +531,10 @@ BOOL pm_process( char *FileName,
   else                                        /* If we don't have a buffer   */
     {                                         /* allocate one, then parse,   */
     bSize = BUFR_INC;                         /* then free.                  */
-    bufr = (char *)malloc( bSize );
+    bufr = new_array( char, bSize );
     if( NULL == bufr )
       {
-      rprintf(FERROR,"%s memory allocation failure.\n", func);
+      rprintf(FLOG, "%s memory allocation failure.\n", func);
       fclose(InFile);
       return( False );
       }
@@ -547,7 +548,7 @@ BOOL pm_process( char *FileName,
 
   if( !result )                               /* Generic failure. */
     {
-    rprintf(FERROR,"%s Failed.  Error returned from params.c:parse().\n", func);
+    rprintf(FLOG, "%s Failed.  Error returned from params.c:parse().\n", func);
     return( False );
     }