Date: Thu, 01 Mar 2001 19:06:21 -0700 From: Warner Losh <imp@harmony.village.org> To: audit@freebsd.org Subject: PATH_MAX vs MAXPATHLEN Message-ID: <200103020206.f2226Md53114@harmony.village.org>
next in thread | raw e-mail | index | archive | help
Here's a patch that changes MAXPATHLEN to PATH_MAX in src/bin. Plus
fixes disordering of one include file. I believe that these changes
are correct, but wanted another set of eyes on them.
Comments?
Warner
Index: cp/cp.c
===================================================================
RCS file: /home/imp/FreeBSD/CVS/src/bin/cp/cp.c,v
retrieving revision 1.24
diff -u -r1.24 cp.c
--- cp/cp.c 1999/11/28 09:34:21 1.24
+++ cp/cp.c 2001/03/02 02:01:16
@@ -69,6 +69,7 @@
#include <err.h>
#include <errno.h>
#include <fts.h>
+#include <limits.h>
#include <stdio.h>
#include <string.h>
#include <unistd.h>
@@ -177,7 +178,7 @@
/* Save the target base in "to". */
target = argv[--argc];
- if (strlen(target) > MAXPATHLEN)
+ if (strlen(target) > PATH_MAX)
errx(1, "%s: name too long", target);
(void)strcpy(to.p_path, target);
to.p_end = to.p_path + strlen(to.p_path);
@@ -318,7 +319,7 @@
if (*p != '/' && target_mid[-1] != '/')
*target_mid++ = '/';
*target_mid = 0;
- if (target_mid - to.p_path + nlen > MAXPATHLEN) {
+ if (target_mid - to.p_path + nlen > PATH_MAX) {
warnx("%s%s: name too long (not copied)",
to.p_path, p);
badcp = rval = 1;
Index: cp/extern.h
===================================================================
RCS file: /home/imp/FreeBSD/CVS/src/bin/cp/extern.h,v
retrieving revision 1.9
diff -u -r1.9 extern.h
--- cp/extern.h 1999/08/27 23:13:39 1.9
+++ cp/extern.h 2001/03/02 01:55:20
@@ -37,7 +37,7 @@
typedef struct {
char *p_end; /* pointer to NULL at end of path */
char *target_end; /* pointer to end of target base */
- char p_path[MAXPATHLEN + 1]; /* pointer to the start of a path */
+ char p_path[PATH_MAX]; /* pointer to the start of a path */
} PATH_T;
extern PATH_T to;
Index: cp/utils.c
===================================================================
RCS file: /home/imp/FreeBSD/CVS/src/bin/cp/utils.c,v
retrieving revision 1.28
diff -u -r1.28 utils.c
--- cp/utils.c 2000/10/10 01:48:18 1.28
+++ cp/utils.c 2001/03/02 02:01:31
@@ -50,6 +50,7 @@
#include <errno.h>
#include <fcntl.h>
#include <fts.h>
+#include <limits.h>
#include <stdio.h>
#include <sysexits.h>
#include <unistd.h>
@@ -209,7 +210,7 @@
int exists;
{
int len;
- char link[MAXPATHLEN];
+ char link[PATH_MAX];
if ((len = readlink(p->fts_path, link, sizeof(link) - 1)) == -1) {
warn("readlink: %s", p->fts_path);
Index: ed/ed.h
===================================================================
RCS file: /home/imp/FreeBSD/CVS/src/bin/ed/ed.h,v
retrieving revision 1.13
diff -u -r1.13 ed.h
--- ed/ed.h 1999/08/27 23:14:13 1.13
+++ ed/ed.h 2001/03/02 02:02:11
@@ -28,11 +28,9 @@
* $FreeBSD: src/bin/ed/ed.h,v 1.13 1999/08/27 23:14:13 peter Exp $
*/
-#include <sys/param.h> /* for MAXPATHLEN */
+#include <sys/param.h>
#include <errno.h>
-#if defined(sun) || defined(__NetBSD__)
-# include <limits.h>
-#endif
+#include <limits.h>
#include <regex.h>
#include <signal.h>
#include <stdio.h>
@@ -43,10 +41,6 @@
#define ERR (-2)
#define EMOD (-3)
#define FATAL (-4)
-
-#ifndef MAXPATHLEN
-# define MAXPATHLEN 255 /* _POSIX_PATH_MAX */
-#endif
#define MINBUFSZ 512 /* minimum buffer size - must be > 0 */
#define SE_MAX 30 /* max subexpressions in a regular expression */
Index: ed/main.c
===================================================================
RCS file: /home/imp/FreeBSD/CVS/src/bin/ed/main.c,v
retrieving revision 1.17
diff -u -r1.17 main.c
--- ed/main.c 2000/11/27 06:26:48 1.17
+++ ed/main.c 2001/03/02 01:57:44
@@ -96,7 +96,7 @@
int sigflags = 0; /* if set, signals received while mutex set */
int sigactive = 0; /* if set, signal handlers are enabled */
-char old_filename[MAXPATHLEN + 1] = ""; /* default filename */
+char old_filename[PATH_MAX] = ""; /* default filename */
long current_addr; /* current address in editor buffer */
long addr_last; /* last address in editor buffer */
int lineno; /* script line number */
@@ -950,7 +950,7 @@
return NULL;
if (n) printf("%s\n", shcmd + 1);
return shcmd;
- } else if (n - 1 > MAXPATHLEN) {
+ } else if (n - 1 > PATH_MAX) {
sprintf(errmsg, "filename too long");
return NULL;
}
@@ -961,7 +961,7 @@
return NULL;
}
#endif
- REALLOC(file, filesz, MAXPATHLEN + 1, NULL);
+ REALLOC(file, filesz, PATH_MAX, NULL);
for (n = 0; *ibufp != '\n';)
file[n++] = *ibufp++;
file[n] = '\0';
@@ -1338,7 +1338,7 @@
}
-/* strip_escapes: return copy of escaped string of at most length MAXPATHLEN */
+/* strip_escapes: return copy of escaped string of at most length PATH_MAX */
char *
strip_escapes(s)
char *s;
@@ -1348,7 +1348,7 @@
int i = 0;
- REALLOC(file, filesz, MAXPATHLEN + 1, NULL);
+ REALLOC(file, filesz, PATH_MAX, NULL);
while (i < filesz - 1 /* Worry about a possible trailing escape */
&& (file[i++] = (*s == '\\') ? *++s : *s))
s++;
@@ -1391,7 +1391,7 @@
sigflags &= ~(1 << (signo - 1));
if (addr_last && write_file("ed.hup", "w", 1, addr_last) < 0 &&
(s = getenv("HOME")) != NULL &&
- (n = strlen(s)) + 8 <= MAXPATHLEN && /* "ed.hup" + '/' */
+ (n = strlen(s)) + 8 <= PATH_MAX && /* "ed.hup" + '/' */
(hup = (char *) malloc(n + 10)) != NULL) {
strcpy(hup, s);
if (hup[n - 1] != '/')
Index: ed/re.c
===================================================================
RCS file: /home/imp/FreeBSD/CVS/src/bin/ed/re.c,v
retrieving revision 1.15
diff -u -r1.15 re.c
--- ed/re.c 1999/08/27 23:14:15 1.15
+++ ed/re.c 2001/03/02 01:57:53
@@ -40,7 +40,7 @@
extern int patlock;
-char errmsg[MAXPATHLEN + 40] = "";
+char errmsg[PATH_MAX + 40] = "";
/* get_compiled_pattern: return pointer to compiled pattern from command
buffer */
Index: ln/ln.c
===================================================================
RCS file: /home/imp/FreeBSD/CVS/src/bin/ln/ln.c,v
retrieving revision 1.18
diff -u -r1.18 ln.c
--- ln/ln.c 2000/08/17 16:08:06 1.18
+++ ln/ln.c 2001/03/02 01:58:09
@@ -50,6 +50,7 @@
#include <err.h>
#include <errno.h>
+#include <limits.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
@@ -145,7 +146,7 @@
{
struct stat sb;
int ch, exists, first;
- char *p, path[MAXPATHLEN];
+ char *p, path[PATH_MAX];
if (!sflag) {
/* If target doesn't exist, quit now. */
Index: ls/print.c
===================================================================
RCS file: /home/imp/FreeBSD/CVS/src/bin/ls/print.c,v
retrieving revision 1.36
diff -u -r1.36 print.c
--- ls/print.c 2000/07/04 23:09:23 1.36
+++ ls/print.c 2001/03/02 01:58:36
@@ -50,6 +50,7 @@
#include <errno.h>
#include <fts.h>
#include <grp.h>
+#include <limits.h>
#include <pwd.h>
#include <stdio.h>
#include <stdlib.h>
@@ -495,7 +496,7 @@
FTSENT *p;
{
int lnklen;
- char name[MAXPATHLEN + 1], path[MAXPATHLEN + 1];
+ char name[PATH_MAX], path[PATH_MAX];
if (p->fts_level == FTS_ROOTLEVEL)
(void)snprintf(name, sizeof(name), "%s", p->fts_name);
Index: mv/mv.c
===================================================================
RCS file: /home/imp/FreeBSD/CVS/src/bin/mv/mv.c,v
retrieving revision 1.27
diff -u -r1.27 mv.c
--- mv/mv.c 2000/07/20 18:30:00 1.27
+++ mv/mv.c 2001/03/02 02:02:56
@@ -57,6 +57,7 @@
#include <err.h>
#include <errno.h>
#include <fcntl.h>
+#include <limits.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
@@ -81,7 +82,7 @@
register char *p, *endp;
struct stat sb;
int ch;
- char path[MAXPATHLEN];
+ char path[PATH_MAX];
while ((ch = getopt(argc, argv, "fiv")) != -1)
switch (ch) {
@@ -136,7 +137,7 @@
while (p != *argv && p[-1] != '/')
--p;
- if ((baselen + (len = strlen(p))) >= MAXPATHLEN) {
+ if ((baselen + (len = strlen(p))) >= PATH_MAX) {
warnx("%s: destination pathname too long", *argv);
rval = 1;
} else {
@@ -200,7 +201,7 @@
if (errno == EXDEV) {
struct statfs sfs;
- char path[MAXPATHLEN];
+ char path[PATH_MAX];
/* Can't mv(1) a mount point. */
if (realpath(from, path) == NULL) {
Index: pax/pax.h
===================================================================
RCS file: /home/imp/FreeBSD/CVS/src/bin/pax/pax.h,v
retrieving revision 1.8
diff -u -r1.8 pax.h
--- pax/pax.h 1999/08/27 23:14:45 1.8
+++ pax/pax.h 2001/03/02 01:59:15
@@ -50,7 +50,7 @@
#define DEVBLK 8192 /* default read blksize for devices */
#define FILEBLK 10240 /* default read blksize for files */
#define PAXPATHLEN 3072 /* maximum path length for pax. MUST be */
- /* longer than the system MAXPATHLEN */
+ /* longer than the system PATH_MAX */
/*
* Pax modes of operation
Index: ps/ps.c
===================================================================
RCS file: /home/imp/FreeBSD/CVS/src/bin/ps/ps.c,v
retrieving revision 1.34
diff -u -r1.34 ps.c
--- ps/ps.c 2001/01/24 12:59:50 1.34
+++ ps/ps.c 2001/03/02 01:59:21
@@ -229,7 +229,7 @@
/* FALLTHROUGH */
case 't': {
struct stat sb;
- char *ttypath, pathbuf[MAXPATHLEN];
+ char *ttypath, pathbuf[PATH_MAX];
if (strcmp(optarg, "co") == 0)
ttypath = _PATH_CONSOLE;
Index: pwd/pwd.c
===================================================================
RCS file: /home/imp/FreeBSD/CVS/src/bin/pwd/pwd.c,v
retrieving revision 1.11
diff -u -r1.11 pwd.c
--- pwd/pwd.c 2000/11/26 08:50:12 1.11
+++ pwd/pwd.c 2001/03/02 01:59:36
@@ -46,6 +46,7 @@
#endif /* not lint */
#include <err.h>
+#include <limits.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
@@ -60,7 +61,7 @@
{
int ch;
char *p;
- char buf[MAXPATHLEN];
+ char buf[PATH_MAX];
/*
* Flags for pwd are a bit strange. The POSIX 1003.2B/D9 document
Index: rcp/rcp.c
===================================================================
RCS file: /home/imp/FreeBSD/CVS/src/bin/rcp/rcp.c,v
retrieving revision 1.26
diff -u -r1.26 rcp.c
--- rcp/rcp.c 2000/02/24 21:21:15 1.26
+++ rcp/rcp.c 2001/03/02 02:03:55
@@ -58,6 +58,8 @@
#include <err.h>
#include <errno.h>
#include <fcntl.h>
+#include <libutil.h>
+#include <limits.h>
#include <netdb.h>
#include <pwd.h>
#include <signal.h>
@@ -66,7 +68,6 @@
#include <string.h>
#include <string.h>
#include <unistd.h>
-#include <libutil.h>
#include "pathnames.h"
#include "extern.h"
@@ -513,7 +514,7 @@
{
DIR *dirp;
struct dirent *dp;
- char *last, *vect[1], path[MAXPATHLEN];
+ char *last, *vect[1], path[PATH_MAX];
if (!(dirp = opendir(name))) {
run_err("%s: %s", name, strerror(errno));
@@ -546,7 +547,7 @@
continue;
if (!strcmp(dp->d_name, ".") || !strcmp(dp->d_name, ".."))
continue;
- if (strlen(name) + 1 + strlen(dp->d_name) >= MAXPATHLEN - 1) {
+ if (strlen(name) + 1 + strlen(dp->d_name) >= PATH_MAX) {
run_err("%s/%s: name too long", name, dp->d_name);
continue;
}
Index: sh/histedit.c
===================================================================
RCS file: /home/imp/FreeBSD/CVS/src/bin/sh/histedit.c,v
retrieving revision 1.14
diff -u -r1.14 histedit.c
--- sh/histedit.c 2000/04/20 09:49:15 1.14
+++ sh/histedit.c 2001/03/02 02:00:45
@@ -43,6 +43,7 @@
#endif /* not lint */
#include <sys/param.h>
+#include <limits.h>
#include <paths.h>
#include <stdio.h>
#include <stdlib.h>
@@ -179,7 +180,7 @@
static int active = 0;
struct jmploc jmploc;
struct jmploc *volatile savehandler;
- char editfile[MAXPATHLEN + 1];
+ char editfile[PATH_MAX];
FILE *efp;
#ifdef __GNUC__
/* Avoid longjmp clobbering */
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-audit" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200103020206.f2226Md53114>
