Markus Armbruster b32a09db4f add match_strlcpy() us it to make v9fs make uname and remotename parsing more robust
match_strcpy() is a somewhat creepy function: the caller needs to make sure
that the destination buffer is big enough, and when he screws up or
forgets, match_strcpy() happily overruns the buffer.

There's exactly one customer: v9fs_parse_options().  I believe it currently
can't overflow its buffer, but that's not exactly obvious.

The source string is a substing of the mount options.  The kernel silently
truncates those to PAGE_SIZE bytes, including the terminating zero.  See
compat_sys_mount() and do_mount().

The destination buffer is obtained from __getname(), which allocates from
name_cachep, which is initialized by vfs_caches_init() for size PATH_MAX.

We're safe as long as PATH_MAX <= PAGE_SIZE.  PATH_MAX is 4096.  As far as
I know, the smallest PAGE_SIZE is also 4096.

Here's a patch that makes the code a bit more obviously correct.  It
doesn't depend on PATH_MAX <= PAGE_SIZE.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Cc: Latchesar Ionkov <lucho@ionkov.net>
Cc: Jim Meyering <meyering@redhat.com>
Cc: "Randy.Dunlap" <rdunlap@xenotime.net>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Eric Van Hensbergen <ericvh@gmail.com>
2008-05-14 19:23:25 -05:00
..
2008-02-08 09:22:40 -08:00
2008-05-01 08:04:01 -07:00
2008-04-29 08:06:04 -07:00
2008-05-13 08:02:26 -07:00
2008-04-29 08:06:00 -07:00
2008-05-13 08:02:26 -07:00
2008-04-30 08:29:52 -07:00
2008-02-08 09:22:40 -08:00
2008-05-13 08:02:21 -07:00
2008-05-13 08:02:26 -07:00
2008-04-29 08:06:18 -07:00
2007-10-18 14:37:31 -07:00
2008-04-30 08:29:51 -07:00
2008-04-30 08:29:52 -07:00
2008-04-29 08:06:17 -07:00
2008-05-07 18:35:03 +02:00
2008-01-30 13:31:46 +01:00
2008-04-30 08:29:47 -07:00
2008-05-01 13:08:16 -04:00
2008-05-01 13:08:16 -04:00
2008-05-01 13:08:50 -04:00
2008-05-01 13:08:16 -04:00
2008-05-01 13:08:16 -04:00
2008-05-01 13:08:57 -04:00
2008-05-06 13:13:37 -07:00
2008-02-06 10:41:07 -08:00
2008-04-29 08:06:00 -07:00
2008-04-30 13:38:47 +02:00
2008-04-29 08:06:01 -07:00
2008-01-30 13:31:46 +01:00
2008-04-29 08:06:09 -07:00
2008-02-14 21:13:33 -08:00
2008-05-01 13:08:16 -04:00
2008-05-08 10:46:56 -07:00
2008-04-30 08:29:51 -07:00
2008-05-01 13:08:16 -04:00
2008-05-01 13:08:50 -04:00
2008-05-08 14:06:19 +02:00
2008-02-14 21:13:33 -08:00
2008-04-29 08:06:00 -07:00
2008-05-01 13:08:50 -04:00