lkml.org 
[lkml]   [2002]   [Oct]   [2]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
DateWed, 2 Oct 2002 21:16:37 +0200
FromPetr Vandrovec <>
Subject[PATCH] FAT/VFAT memory corruption during mount()
Hi Linus,

This patch fixes memory corruption during vfat mount: one byte
before mount options is overwritten by ',' since strtok->strsep
conversion happened.

This patch also fixes another problem introduced by strtok->strsep
conversion: VFAT requires that FAT does not modify passed options,
but unfortunately FAT driver fails to preserve options string if
there is more than one consecutive comma in option string.

Thanks,
Petr Vandrovec
vandrove@vc.cvut.cz


diff -urdN linux/fs/fat/inode.c linux/fs/fat/inode.c
--- linux/fs/fat/inode.c 2002-10-02 13:20:19.000000000 +0200
+++ linux/fs/fat/inode.c 2002-10-02 19:54:59.000000000 +0200
@@ -228,8 +228,6 @@
save = 0;
savep = NULL;
while ((this_char = strsep(&options,",")) != NULL) {
- if (!*this_char)
- continue;
if ((value = strchr(this_char,'=')) != NULL) {
save = *value;
savep = value;
@@ -351,7 +349,7 @@
strncpy(cvf_options,value,100);
}

- if (this_char != options) *(this_char-1) = ',';
+ if (options) *(options-1) = ',';
if (value) *savep = save;
if (ret == 0)
break;
diff -urdN linux/fs/vfat/namei.c linux/fs/vfat/namei.c
--- linux/fs/vfat/namei.c 2002-10-02 13:20:27.000000000 +0200
+++ linux/fs/vfat/namei.c 2002-10-02 19:54:28.000000000 +0200
@@ -117,8 +117,6 @@
savep = NULL;
ret = 1;
while ((this_char = strsep(&options,",")) != NULL) {
- if (!*this_char)
- continue;
if ((value = strchr(this_char,'=')) != NULL) {
save = *value;
savep = value;
@@ -154,8 +152,8 @@
else
ret = 0;
}
- if (this_char != options)
- *(this_char-1) = ',';
+ if (options)
+ *(options-1) = ',';
if (value) {
*savep = save;
}
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
\
 
 \ /
  Last update: 2005-03-22 13:29    [from the cache]
©2003-2010