From: Michael van der Westhuizen <michael@smart-africa.com>
Date: Tue, 20 May 2014 13:58:58 +0000 (+0200)
Subject: Prevent a stack overflow in fit_check_sign
X-Git-Tag: v2025.01-rc5-pxa1908~15266
X-Git-Url: http://git.dujemihanovic.xyz/html/static/gitweb.css?a=commitdiff_plain;h=64375014c499528d9df5ee37f78844823a9d21f2;p=u-boot.git

Prevent a stack overflow in fit_check_sign

It is trivial to crash fit_check_sign by invoking with an
absolute path in a deeply nested directory.  This is exposed
by vboot_test.sh.

Signed-off-by: Michael van der Westhuizen <michael@smart-africa.com>
Acked-by: Simon Glass <sjg@chromium.org>
---

diff --git a/tools/fit_check_sign.c b/tools/fit_check_sign.c
index d6d9340094..817773d48a 100644
--- a/tools/fit_check_sign.c
+++ b/tools/fit_check_sign.c
@@ -42,12 +42,13 @@ int main(int argc, char **argv)
 	void *fit_blob;
 	char *fdtfile = NULL;
 	char *keyfile = NULL;
-	char cmdname[50];
+	char cmdname[256];
 	int ret;
 	void *key_blob;
 	int c;
 
-	strcpy(cmdname, *argv);
+	strncpy(cmdname, *argv, sizeof(cmdname) - 1);
+	cmdname[sizeof(cmdname) - 1] = '\0';
 	while ((c = getopt(argc, argv, "f:k:")) != -1)
 		switch (c) {
 		case 'f':