Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 338d0f0a authored by Timo Warns's avatar Timo Warns Committed by Linus Torvalds
Browse files

befs: Validate length of long symbolic links.

parent b4fd4ae6
Loading
Loading
Loading
Loading
+14 −9
Original line number Diff line number Diff line
@@ -474,6 +474,10 @@ befs_follow_link(struct dentry *dentry, struct nameidata *nd)
		befs_data_stream *data = &befs_ino->i_data.ds;
		befs_off_t len = data->size;

		if (len == 0) {
			befs_error(sb, "Long symlink with illegal length");
			link = ERR_PTR(-EIO);
		} else {
			befs_debug(sb, "Follow long symlink");

			link = kmalloc(len, GFP_NOFS);
@@ -486,6 +490,7 @@ befs_follow_link(struct dentry *dentry, struct nameidata *nd)
			} else {
				link[len - 1] = '\0';
			}
		}
	} else {
		link = befs_ino->i_data.symlink;
	}