public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
* [U-Boot] [PATCH for-v2014.10?] pxe: Ensure we don't overflow bootargs
@ 2014-10-03 13:29 Ian Campbell
  2014-10-10 14:39 ` [U-Boot] [U-Boot, " Tom Rini
  0 siblings, 1 reply; 3+ messages in thread
From: Ian Campbell @ 2014-10-03 13:29 UTC (permalink / raw)
  To: u-boot

From: Ian Campbell <ian.campbell@citrix.com>

On a couple of platforms I've tripped over long PXE append lines overflowing
this array, due to having CONFIG_SYS_CBSIZE == 256. When doing preseeded Debian
installs it's pretty trivial to exceed that.

Since the symptom can be a silent hang or a crash add a check. Of course the
affected boards would also need an increased CBSIZE to actually work.

Note that due to the printing of the final bootargs string CONFIG_SYS_PBSIZE
also needs to be sufficiently large.

Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
---
I think this is v2014.10 material?
---
 common/cmd_pxe.c | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/common/cmd_pxe.c b/common/cmd_pxe.c
index 0ab1e0a..e63a031 100644
--- a/common/cmd_pxe.c
+++ b/common/cmd_pxe.c
@@ -674,6 +674,15 @@ static int label_boot(cmd_tbl_t *cmdtp, struct pxe_label *label)
 		char bootargs[CONFIG_SYS_CBSIZE] = "";
 		char finalbootargs[CONFIG_SYS_CBSIZE];
 
+		if (strlen(label->append ?: "") +
+		    strlen(ip_str) + strlen(mac_str) + 1 > sizeof(bootargs)) {
+			printf("bootarg overflow %d+%d+%d+1 > %zd\n",
+			       strlen(label->append ?: ""),
+			       strlen(ip_str), strlen(mac_str),
+			       sizeof(bootargs));
+			return 1;
+		}
+
 		if (label->append)
 			strcpy(bootargs, label->append);
 		strcat(bootargs, ip_str);
-- 
2.1.0

^ permalink raw reply related	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2014-10-10 14:41 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-10-03 13:29 [U-Boot] [PATCH for-v2014.10?] pxe: Ensure we don't overflow bootargs Ian Campbell
2014-10-10 14:39 ` [U-Boot] [U-Boot, " Tom Rini
2014-10-10 14:41   ` Ian Campbell

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox