/*
- * $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.
}
/* 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);
/*
- * $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.
return( AFPERR_NOOBJ );
}
- if ((vol->v_flags & AFPVOL_MSWINDOWS) &&
- strpbrk(path, MSWINDOWS_BADCHARS))
+ if (!wincheck(vol, path))
return AFPERR_PARAM;
upath = mtoupath(vol, path);
/*
- * $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.
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;
}
/* 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);
/*
- * $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.
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;
+}
/*
- * $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.
#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 */