lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Date:	Fri, 19 Dec 2014 17:20:30 +0200
From:	"Kirill A. Shutemov" <kirill.shutemov@...ux.intel.com>
To:	linux-kbuild@...r.kernel.org, yann.morin.1998@...e.fr
Cc:	alexander.shishkin@...ux.intel.com, linux-kernel@...r.kernel.org,
	"Kirill A. Shutemov" <kirill.shutemov@...ux.intel.com>
Subject: [PATCH] kconfig: improve handling EOF

The patch fixes two EOF-related issues in kconfig lexer:

1. End of file is not valid end of string token. Currently we happily
   accept something like

	config FOO
		bool "Bar

   If there's EOF just after '"Bar' without newline.

2. Kconfig produces obscure error message if we miss newline at the end
   of file. Testcase:

	% echo -n 'if FOO\nendif' >> drivers/Kconfig
	% make allmodconfig
	...
	drivers/Kconfig:191: 'endif' in different file than 'if'
	drivers/Kconfig:191: location of the 'if'
	scripts/kconfig/Makefile:80: recipe for target 'allmodconfig' failed
	make[1]: *** [allmodconfig] Error 1
	Makefile:558: recipe for target 'allmodconfig' failed
	make: *** [allmodconfig] Error 2

   We can fix it if forbid EOF form <PARAM> context.

Signed-off-by: Kirill A. Shutemov <kirill.shutemov@...ux.intel.com>
---
 kernel/Kconfig.preempt  | 2 +-
 scripts/kconfig/zconf.l | 8 ++++++--
 2 files changed, 7 insertions(+), 3 deletions(-)

diff --git a/kernel/Kconfig.preempt b/kernel/Kconfig.preempt
index 3f9c97419f02..037284c5f723 100644
--- a/kernel/Kconfig.preempt
+++ b/kernel/Kconfig.preempt
@@ -55,4 +55,4 @@ config PREEMPT
 endchoice
 
 config PREEMPT_COUNT
-       bool
\ No newline at end of file
+       bool
diff --git a/scripts/kconfig/zconf.l b/scripts/kconfig/zconf.l
index 6c62d93b4ffb..001abe8df6ce 100644
--- a/scripts/kconfig/zconf.l
+++ b/scripts/kconfig/zconf.l
@@ -143,7 +143,9 @@ n	[A-Za-z0-9_]
 	\\\n	current_file->lineno++;
 	.
 	<<EOF>> {
-		BEGIN(INITIAL);
+		printf("%s:%d: no newline at end of file\n",
+				zconf_curname(), zconf_lineno());
+		exit(1);
 	}
 }
 
@@ -179,7 +181,9 @@ n	[A-Za-z0-9_]
 		return T_EOL;
 	}
 	<<EOF>>	{
-		BEGIN(INITIAL);
+		printf("%s:%d: unexpected end of file\n",
+				zconf_curname(), zconf_lineno());
+		exit(1);
 	}
 }
 
-- 
2.1.3

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ