e6a9984
From 9538cbaab6e8b8046039b4b2eb6c9d614dc782bd Mon Sep 17 00:00:00 2001
e6a9984
From: Kees Cook <keescook@chromium.org>
e6a9984
Date: Fri, 10 May 2013 21:48:21 +0000
e6a9984
Subject: b43: stop format string leaking into error msgs
e6a9984
e6a9984
The module parameter "fwpostfix" is userspace controllable, unfiltered,
e6a9984
and is used to define the firmware filename. b43_do_request_fw() populates
e6a9984
ctx->errors[] on error, containing the firmware filename. b43err()
e6a9984
parses its arguments as a format string. For systems with b43 hardware,
e6a9984
this could lead to a uid-0 to ring-0 escalation.
e6a9984
e6a9984
CVE-2013-2852
e6a9984
e6a9984
Signed-off-by: Kees Cook <keescook@chromium.org>
e6a9984
Cc: stable@vger.kernel.org
e6a9984
Signed-off-by: John W. Linville <linville@tuxdriver.com>
e6a9984
---
e6a9984
diff --git a/drivers/net/wireless/b43/main.c b/drivers/net/wireless/b43/main.c
e6a9984
index 6dd07e2..a95b77a 100644
e6a9984
--- a/drivers/net/wireless/b43/main.c
e6a9984
+++ b/drivers/net/wireless/b43/main.c
e6a9984
@@ -2458,7 +2458,7 @@ static void b43_request_firmware(struct work_struct *work)
e6a9984
 	for (i = 0; i < B43_NR_FWTYPES; i++) {
e6a9984
 		errmsg = ctx->errors[i];
e6a9984
 		if (strlen(errmsg))
e6a9984
-			b43err(dev->wl, errmsg);
e6a9984
+			b43err(dev->wl, "%s", errmsg);
e6a9984
 	}
e6a9984
 	b43_print_fw_helptext(dev->wl, 1);
e6a9984
 	goto out;
e6a9984
--
e6a9984
cgit v0.9.2