diff options
author | Greg Kroah-Hartman <gregkh@suse.de> | 2011-08-18 16:25:45 -0700 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2011-08-18 16:25:45 -0700 |
commit | 2f3be0f3ccf4eb09befe3affdf20bcc58d7e2b8b (patch) | |
tree | 58cf27428b41d9ac38d6de02d5c57c83f19d10ac | |
parent | 9b889353d376acded721fae7dabc1f7dfb344e26 (diff) | |
download | longterm-queue-2.6.32-2f3be0f3ccf4eb09befe3affdf20bcc58d7e2b8b.tar.gz |
.32 patches
-rw-r--r-- | queue-2.6.32/befs-validate-length-of-long-symbolic-links.patch | 51 | ||||
-rw-r--r-- | queue-2.6.32/series | 1 |
2 files changed, 52 insertions, 0 deletions
diff --git a/queue-2.6.32/befs-validate-length-of-long-symbolic-links.patch b/queue-2.6.32/befs-validate-length-of-long-symbolic-links.patch new file mode 100644 index 0000000..f0c0212 --- /dev/null +++ b/queue-2.6.32/befs-validate-length-of-long-symbolic-links.patch @@ -0,0 +1,51 @@ +From 338d0f0a6fbc82407864606f5b64b75aeb3c70f2 Mon Sep 17 00:00:00 2001 +From: Timo Warns <Warns@pre-sense.de> +Date: Wed, 17 Aug 2011 17:59:56 +0200 +Subject: befs: Validate length of long symbolic links. + +From: Timo Warns <Warns@pre-sense.de> + +commit 338d0f0a6fbc82407864606f5b64b75aeb3c70f2 upstream. + +Signed-off-by: Timo Warns <warns@pre-sense.de> +Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + +--- + fs/befs/linuxvfs.c | 23 ++++++++++++++--------- + 1 file changed, 14 insertions(+), 9 deletions(-) + +--- a/fs/befs/linuxvfs.c ++++ b/fs/befs/linuxvfs.c +@@ -469,17 +469,22 @@ befs_follow_link(struct dentry *dentry, + befs_data_stream *data = &befs_ino->i_data.ds; + befs_off_t len = data->size; + +- befs_debug(sb, "Follow long symlink"); +- +- link = kmalloc(len, GFP_NOFS); +- if (!link) { +- link = ERR_PTR(-ENOMEM); +- } else if (befs_read_lsymlink(sb, data, link, len) != len) { +- kfree(link); +- befs_error(sb, "Failed to read entire long symlink"); ++ if (len == 0) { ++ befs_error(sb, "Long symlink with illegal length"); + link = ERR_PTR(-EIO); + } else { +- link[len - 1] = '\0'; ++ befs_debug(sb, "Follow long symlink"); ++ ++ link = kmalloc(len, GFP_NOFS); ++ if (!link) { ++ link = ERR_PTR(-ENOMEM); ++ } else if (befs_read_lsymlink(sb, data, link, len) != len) { ++ kfree(link); ++ befs_error(sb, "Failed to read entire long symlink"); ++ link = ERR_PTR(-EIO); ++ } else { ++ link[len - 1] = '\0'; ++ } + } + } else { + link = befs_ino->i_data.symlink; diff --git a/queue-2.6.32/series b/queue-2.6.32/series index 982a438..809a45a 100644 --- a/queue-2.6.32/series +++ b/queue-2.6.32/series @@ -8,3 +8,4 @@ alsa-snd-usb-caiaq-correct-offset-fields-of-outbound.patch mm-fix-wrong-vmap-address-calculations-with-odd-nr_cpus.patch perf-tools-do-not-look-at-.-config-for-configuration.patch fs-partitions-efi.c-corrupted-guid-partition-tables-can-cause-kernel-oops.patch +befs-validate-length-of-long-symbolic-links.patch |