Commit 93736778 authored by Peter Korsgaard's avatar Peter Korsgaard
Browse files

config: fix crash with too long paths



Closes #2737

Use PATH_MAX rather that 128 for path buffers. Patch from kernel 1408b15b98
(kconfig: Use PATH_MAX instead of 128 for path buffer sizes) by Will Newton.

Signed-off-by: default avatarPeter Korsgaard <jacmet@sunsite.dk>
parent 24c9f8ca
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -78,6 +78,7 @@
	#2581: libmms: Update to 0.6, and patch to work on architectures...
	#2707: Can't compile linux kernel using buildroot + crosstool-ng
	#2731: Build order
	#2737: buildroot configuration tool crashing when the path exceeds...
	#2767: Build for lsof broken in buildroot-2010.08

2010.08: Released August 31th, 2010:
+2 −2
Original line number Diff line number Diff line
@@ -534,7 +534,7 @@ int conf_write(const char *name)
	struct menu *menu;
	const char *basename;
	const char *str;
	char dirname[128], tmpname[128], newname[128];
	char dirname[PATH_MAX+1], tmpname[PATH_MAX+1], newname[PATH_MAX+1];
	enum symbol_type type;
	time_t now;
	int use_timestamp = 1;
@@ -658,7 +658,7 @@ next:
static int conf_split_config(void)
{
	const char *name;
	char path[128];
	char path[PATH_MAX+1];
	char *opwd, *dir, *_name;
	char *s, *d, c;
	struct symbol *sym;
+41 −0
Original line number Diff line number Diff line
From 1408b15b98635a13bad2e2a50b3c2ae2ccdf625b Mon Sep 17 00:00:00 2001
From: Will Newton <will.newton@gmail.com>
Date: Wed, 22 Sep 2010 15:59:13 +0100
Subject: [PATCH] kconfig: Use PATH_MAX instead of 128 for path buffer sizes.

This prevents the buffers being overflowed when using a config
file with a long name. PATH_MAX is used elsewhere in the same
file, so use it here as well.

Signed-off-by: Will Newton <will.newton@imgtec.com>
Acked-by: WANG Cong <xiyou.wangcong@gmail.com>
Signed-off-by: Michal Marek <mmarek@suse.cz>
---
 scripts/kconfig/confdata.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/confdata.c b/confdata.c
index 35c08ec..96110ea 100644
--- a/confdata.c
+++ b/confdata.c
@@ -534,7 +534,7 @@ int conf_write(const char *name)
 	struct menu *menu;
 	const char *basename;
 	const char *str;
-	char dirname[128], tmpname[128], newname[128];
+	char dirname[PATH_MAX+1], tmpname[PATH_MAX+1], newname[PATH_MAX+1];
 	enum symbol_type type;
 	time_t now;
 	int use_timestamp = 1;
@@ -658,7 +658,7 @@ next:
 static int conf_split_config(void)
 {
 	const char *name;
-	char path[128];
+	char path[PATH_MAX+1];
 	char *opwd, *dir, *_name;
 	char *s, *d, c;
 	struct symbol *sym;
-- 
1.7.1
+1 −0
Original line number Diff line number Diff line
@@ -9,3 +9,4 @@
11-use-mktemp-for-lxdialog.patch
12-fix-glade-file-path.patch
14-support-out-of-tree-config.patch
15-use-PATH_MAX-for-path-buffer.patch