* [PATCH] 2.5: PATH_MAX length fix
@ 2002-01-14 4:40 Rusty Russell
2002-01-14 9:50 ` Alan Cox
0 siblings, 1 reply; 3+ messages in thread
From: Rusty Russell @ 2002-01-14 4:40 UTC (permalink / raw)
To: torvalds; +Cc: cyeoh, linux-kernel, viro
Linus, please apply. Kernel usage currently is confused about PATH_MAX.
D: From Andrew Josey <ajosey@rdg.opengroup.org> (via Chris Yeoh):
D:
D: POSIX has long had an ambiguity in the area about whether the null
D: byte is included in the PATH_MAX (it basically said both ways in
D: the 1990 text). The POSIX.1a draft (the amendment to POSIX.1-1990)
D: and XPG4 went with including the null byte in PATH_MAX, and the
D: POSIX 1003.1-200x revision (Austin Group) and Single UNIX
D: Specification Version 3 also continue this way.
diff -urN -I \$.*\$ --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal linux-2.4.14/include/linux/limits.h working-2.4.14-pathmax/include/linux/limits.h
--- linux-2.4.14/include/linux/limits.h Thu Jul 29 03:30:10 1999
+++ working-2.4.14-pathmax/include/linux/limits.h Wed Nov 21 10:59:37 2001
@@ -11,7 +11,7 @@
#define MAX_CANON 255 /* size of the canonical input queue */
#define MAX_INPUT 255 /* size of the type-ahead buffer */
#define NAME_MAX 255 /* # chars in a file name */
-#define PATH_MAX 4095 /* # chars in a path name */
+#define PATH_MAX 4096 /* # chars in a path name including nul */
#define PIPE_BUF 4096 /* # bytes in atomic write to a pipe */
#define RTSIG_MAX 32
diff -urN -I \$.*\$ --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal linux-2.4.14/fs/dcache.c working-2.4.14-pathmax/fs/dcache.c
--- linux-2.4.14/fs/dcache.c Thu Oct 4 15:57:36 2001
+++ working-2.4.14-pathmax/fs/dcache.c Wed Nov 21 12:04:18 2001
@@ -1262,7 +1262,7 @@
panic("Cannot create buffer head SLAB cache");
names_cachep = kmem_cache_create("names_cache",
- PATH_MAX + 1, 0,
+ PATH_MAX, 0,
SLAB_HWCACHE_ALIGN, NULL, NULL);
if (!names_cachep)
panic("Cannot create names SLAB cache");
diff -urN -I \$.*\$ --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal linux-2.4.14/fs/namei.c working-2.4.14-pathmax/fs/namei.c
--- linux-2.4.14/fs/namei.c Thu Oct 18 07:46:29 2001
+++ working-2.4.14-pathmax/fs/namei.c Wed Nov 21 10:57:58 2001
@@ -99,16 +99,17 @@
* kernel data space before using them..
*
* POSIX.1 2.4: an empty pathname is invalid (ENOENT).
+ * PATH_MAX includes the nul terminator --RR.
*/
static inline int do_getname(const char *filename, char *page)
{
int retval;
- unsigned long len = PATH_MAX + 1;
+ unsigned long len = PATH_MAX;
if ((unsigned long) filename >= TASK_SIZE) {
if (!segment_eq(get_fs(), KERNEL_DS))
return -EFAULT;
- } else if (TASK_SIZE - (unsigned long) filename < PATH_MAX + 1)
+ } else if (TASK_SIZE - (unsigned long) filename < PATH_MAX)
len = TASK_SIZE - (unsigned long) filename;
retval = strncpy_from_user((char *)page, filename, len);
diff -urN -I \$.*\$ --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal linux-2.4.14/scripts/mkdep.c working-2.4.14-pathmax/scripts/mkdep.c
--- linux-2.4.14/scripts/mkdep.c Sat Sep 15 07:40:00 2001
+++ working-2.4.14-pathmax/scripts/mkdep.c Wed Nov 21 12:01:44 2001
@@ -218,7 +218,7 @@
void add_path(const char * name)
{
struct path_struct *path;
- char resolved_path[PATH_MAX+1];
+ char resolved_path[PATH_MAX];
const char *name2;
if (strcmp(name, ".")) {
--
Anyone who quotes me in their sig is an idiot. -- Rusty Russell.
^ permalink raw reply [flat|nested] 3+ messages in thread* Re: [PATCH] 2.5: PATH_MAX length fix
2002-01-14 4:40 [PATCH] 2.5: PATH_MAX length fix Rusty Russell
@ 2002-01-14 9:50 ` Alan Cox
2002-01-14 11:36 ` Rusty Russell
0 siblings, 1 reply; 3+ messages in thread
From: Alan Cox @ 2002-01-14 9:50 UTC (permalink / raw)
To: Rusty Russell; +Cc: torvalds, cyeoh, linux-kernel, viro
> +++ working-2.4.14-pathmax/scripts/mkdep.c Wed Nov 21 12:01:44 2001
> @@ -218,7 +218,7 @@
> void add_path(const char * name)
> {
> struct path_struct *path;
> - char resolved_path[PATH_MAX+1];
> + char resolved_path[PATH_MAX];
> const char *name2;
This is a user mode application running on an unknown host. Its most
definitely correct and only safe before the change
^ permalink raw reply [flat|nested] 3+ messages in thread* Re: [PATCH] 2.5: PATH_MAX length fix
2002-01-14 9:50 ` Alan Cox
@ 2002-01-14 11:36 ` Rusty Russell
0 siblings, 0 replies; 3+ messages in thread
From: Rusty Russell @ 2002-01-14 11:36 UTC (permalink / raw)
To: Alan Cox; +Cc: torvalds, cyeoh, linux-kernel, viro
In message <E16Q3lW-0001Cv-00@the-village.bc.nu> you write:
> > +++ working-2.4.14-pathmax/scripts/mkdep.c Wed Nov 21 12:01:44 2001
> > @@ -218,7 +218,7 @@
> > void add_path(const char * name)
> > {
> > struct path_struct *path;
> > - char resolved_path[PATH_MAX+1];
> > + char resolved_path[PATH_MAX];
> > const char *name2;
>
> This is a user mode application running on an unknown host. Its most
> definitely correct and only safe before the change
Ack. Thanks. Regretfully, userspace must still be careful while
current (non-compliant) OSes like Linux still exist.
Thanks,
Rusty.
--
Anyone who quotes me in their sig is an idiot. -- Rusty Russell.
diff -urN -I \$.*\$ --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal linux-2.4.14/include/linux/limits.h working-2.4.14-pathmax/include/linux/limits.h
--- linux-2.4.14/include/linux/limits.h Thu Jul 29 03:30:10 1999
+++ working-2.4.14-pathmax/include/linux/limits.h Wed Nov 21 10:59:37 2001
@@ -11,7 +11,7 @@
#define MAX_CANON 255 /* size of the canonical input queue */
#define MAX_INPUT 255 /* size of the type-ahead buffer */
#define NAME_MAX 255 /* # chars in a file name */
-#define PATH_MAX 4095 /* # chars in a path name */
+#define PATH_MAX 4096 /* # chars in a path name including nul */
#define PIPE_BUF 4096 /* # bytes in atomic write to a pipe */
#define RTSIG_MAX 32
diff -urN -I \$.*\$ --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal linux-2.4.14/fs/dcache.c working-2.4.14-pathmax/fs/dcache.c
--- linux-2.4.14/fs/dcache.c Thu Oct 4 15:57:36 2001
+++ working-2.4.14-pathmax/fs/dcache.c Wed Nov 21 12:04:18 2001
@@ -1262,7 +1262,7 @@
panic("Cannot create buffer head SLAB cache");
names_cachep = kmem_cache_create("names_cache",
- PATH_MAX + 1, 0,
+ PATH_MAX, 0,
SLAB_HWCACHE_ALIGN, NULL, NULL);
if (!names_cachep)
panic("Cannot create names SLAB cache");
diff -urN -I \$.*\$ --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal linux-2.4.14/fs/namei.c working-2.4.14-pathmax/fs/namei.c
--- linux-2.4.14/fs/namei.c Thu Oct 18 07:46:29 2001
+++ working-2.4.14-pathmax/fs/namei.c Wed Nov 21 10:57:58 2001
@@ -99,16 +99,17 @@
* kernel data space before using them..
*
* POSIX.1 2.4: an empty pathname is invalid (ENOENT).
+ * PATH_MAX includes the nul terminator --RR.
*/
static inline int do_getname(const char *filename, char *page)
{
int retval;
- unsigned long len = PATH_MAX + 1;
+ unsigned long len = PATH_MAX;
if ((unsigned long) filename >= TASK_SIZE) {
if (!segment_eq(get_fs(), KERNEL_DS))
return -EFAULT;
- } else if (TASK_SIZE - (unsigned long) filename < PATH_MAX + 1)
+ } else if (TASK_SIZE - (unsigned long) filename < PATH_MAX)
len = TASK_SIZE - (unsigned long) filename;
retval = strncpy_from_user((char *)page, filename, len);
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2002-01-14 11:37 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2002-01-14 4:40 [PATCH] 2.5: PATH_MAX length fix Rusty Russell
2002-01-14 9:50 ` Alan Cox
2002-01-14 11:36 ` Rusty Russell
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®