]> arthur.barton.de Git - netatalk.git/commitdiff
Disallow leading and trailing spaces in MSWINDOWS volumes. This is based on
authorsrittau <srittau>
Wed, 2 Jan 2002 21:14:10 +0000 (21:14 +0000)
committersrittau <srittau>
Wed, 2 Jan 2002 21:14:10 +0000 (21:14 +0000)
SourceForge patch #480115, submitted by Patrick Bihan-Faou (pbf) and
crediting HervĂ© Masson and addresses SF bug #434934.

etc/afpd/directory.c
etc/afpd/file.c
etc/afpd/filedir.c
etc/afpd/volume.c
etc/afpd/volume.h

index 9842001b37165e062534217079d7c87d05cc0c99..ea9c32242e4b90177ea85f04e33079c7da10d281 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * $Id: directory.c,v 1.22 2001-12-29 08:22:23 jmarcus Exp $
+ * $Id: directory.c,v 1.23 2002-01-02 21:14:10 srittau Exp $
  *
  * Copyright (c) 1990,1993 Regents of The University of Michigan.
  * All Rights Reserved.  See COPYRIGHT.
@@ -1425,8 +1425,7 @@ int               ibuflen, *rbuflen;
     }
 
     /* check for illegal bits */
-    if ((vol->v_flags & AFPVOL_MSWINDOWS) &&
-            strpbrk(path, MSWINDOWS_BADCHARS))
+    if (!wincheck(vol, path))
         return AFPERR_PARAM;
 
     upath = mtoupath(vol, path);
index f7ab51f89a542096bc235a6f517bd3b30a23bd04..9a65b75f5e358960a67f12f3166aaace3511278d 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * $Id: file.c,v 1.31 2001-12-29 08:16:21 jmarcus Exp $
+ * $Id: file.c,v 1.32 2002-01-02 21:14:10 srittau Exp $
  *
  * Copyright (c) 1990,1993 Regents of The University of Michigan.
  * All Rights Reserved.  See COPYRIGHT.
@@ -409,8 +409,7 @@ int         ibuflen, *rbuflen;
         return( AFPERR_NOOBJ );
     }
 
-    if ((vol->v_flags & AFPVOL_MSWINDOWS) &&
-            strpbrk(path, MSWINDOWS_BADCHARS))
+    if (!wincheck(vol, path))
         return AFPERR_PARAM;
 
     upath = mtoupath(vol, path);
index 6fffd3d38ebd4053e39be9c6414ce6ef0d56b5ea..1e1c7c99d6fa27ad090cd7a28df812b6d7df8941 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * $Id: filedir.c,v 1.16 2001-12-03 05:03:38 jmarcus Exp $
+ * $Id: filedir.c,v 1.17 2002-01-02 21:14:10 srittau Exp $
  *
  * Copyright (c) 1990,1993 Regents of The University of Michigan.
  * All Rights Reserved.  See COPYRIGHT.
@@ -379,8 +379,7 @@ int         ibuflen, *rbuflen;
         return AFP_OK;
 
     /* check for illegal characters */
-    if ((vol->v_flags & AFPVOL_MSWINDOWS) &&
-            strpbrk(ibuf, MSWINDOWS_BADCHARS))
+    if (!wincheck(vol, ibuf))
         return AFPERR_PARAM;
 
     newpath = obj->oldtmp;
@@ -674,8 +673,7 @@ int         ibuflen, *rbuflen;
     }
 
     /* check for illegal characters */
-    if ((vol->v_flags & AFPVOL_MSWINDOWS) &&
-            strpbrk(newname, MSWINDOWS_BADCHARS))
+    if (!wincheck(vol, newname))
         return AFPERR_PARAM;
 
     upath = mtoupath(vol, newname);
index 36e52fb5742cd3fafba647b245492cfc9c1f62d0..3bff6e88e0fb7a4b4232a50263b0d64142954dd1 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * $Id: volume.c,v 1.15 2001-12-03 05:03:38 jmarcus Exp $
+ * $Id: volume.c,v 1.16 2002-01-02 21:14:10 srittau Exp $
  *
  * Copyright (c) 1990,1993 Regents of The University of Michigan.
  * All Rights Reserved.  See COPYRIGHT.
@@ -1395,3 +1395,27 @@ int              ibuflen, *rbuflen;
     ad_close(&ad, ADFLAGS_HF);
     return( AFP_OK );
 }
+
+
+int wincheck(struct vol *vol, const char *path)
+{
+        int len;
+
+        if (!(vol->v_flags & AFPVOL_MSWINDOWS))
+                return 1;
+
+        /* empty paths are not allowed */
+        if ((len = strlen(path)) == 0)
+                return 0;
+
+        /* leading or trailing whitespaces are not allowed */
+        if ((*path == ' ') || (path[len-1] == ' '))
+                return 0;
+
+        /* certain characters are not allowed */
+        if (strpbrk(path, MSWINDOWS_BADCHARS))
+                return 0;
+
+        /* everything else is okay */
+        return 1;
+}
index dba485b381f331c72761e62a38417b92d603ce18..eb78adac3673b3e8532d7b3f6351dd839109e9e9 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * $Id: volume.h,v 1.8 2001-12-03 05:03:38 jmarcus Exp $
+ * $Id: volume.h,v 1.9 2002-01-02 21:14:10 srittau Exp $
  *
  * Copyright (c) 1990,1994 Regents of The University of Michigan.
  * All Rights Reserved.  See COPYRIGHT.
@@ -105,6 +105,8 @@ this is going away. */
 #define MSWINDOWS_BADCHARS "\\/<>*?|\""
 #define MSWINDOWS_CODEPAGE "maccode.iso8859-1"
 
+int wincheck(struct vol *vol, const char *path);
+
 #define AFPVOLSIG_FLAT          0x0001 /* flat fs */
 #define AFPVOLSIG_FIX          0x0002 /* fixed ids */
 #define AFPVOLSIG_VAR           0x0003 /* variable ids */