[GIT PULL] bootconfig: Fixes for v7.0-rc3

Masami Hiramatsu (Google) posted 1 patch 3 weeks, 1 day ago
lib/bootconfig.c                                     |  6 +++---
tools/bootconfig/samples/bad-non-closed-brace.bconf  |  4 ++++
tools/bootconfig/samples/bad-over-max-brace.bconf    | 19 +++++++++++++++++++
tools/bootconfig/samples/exp-good-nested-brace.bconf |  1 +
tools/bootconfig/samples/good-nested-brace.bconf     | 18 ++++++++++++++++++
tools/bootconfig/test-bootconfig.sh                  |  9 +++++++++
6 files changed, 54 insertions(+), 3 deletions(-)
create mode 100644 tools/bootconfig/samples/bad-non-closed-brace.bconf
create mode 100644 tools/bootconfig/samples/bad-over-max-brace.bconf
create mode 100644 tools/bootconfig/samples/exp-good-nested-brace.bconf
create mode 100644 tools/bootconfig/samples/good-nested-brace.bconf
[GIT PULL] bootconfig: Fixes for v7.0-rc3
Posted by Masami Hiramatsu (Google) 3 weeks, 1 day ago
Hi Linus,

Bootconfig fixes for v7.0-rc3

- lib/bootconfig: fix off-by-one in xbc_verify_tree() unclosed brace
  error; This fixes a wrong error place in unclosed brace error
  message.
- lib/bootconfig: check bounds before writing in __xbc_open_brace();
  This fixes to check the array index before setting array, so that
  the bootconfig can support 16th-depth nested brace correctly.
- lib/bootconfig: fix snprintf truncation check in
  xbc_node_compose_key_after(); This fixes to handle the return
  value of snprintf() correctly in case of the return value ==
  size.
- bootconfig: Add bootconfig tests about braces
  Add test cases for checking error position about unclosed brace
  and ensuring supporting 16th depth nested braces correctly.


Please pull the latest bootconfig-fixes-v7.0-rc3 tree, which can be found at:


  git://git.kernel.org/pub/scm/linux/kernel/git/trace/linux-trace.git
bootconfig-fixes-v7.0-rc3

Tag SHA1: cf0695efdf302e25697c8ca4f93b93686cf086fc
Head SHA1: e2715ea5fb352cd43fce437b91aa0fd50aaaf384


Josh Law (3):
      lib/bootconfig: fix off-by-one in xbc_verify_tree() unclosed brace error
      lib/bootconfig: check bounds before writing in __xbc_open_brace()
      lib/bootconfig: fix snprintf truncation check in xbc_node_compose_key_after()

Masami Hiramatsu (Google) (1):
      bootconfig: Add bootconfig tests about braces

----
 lib/bootconfig.c                                     |  6 +++---
 tools/bootconfig/samples/bad-non-closed-brace.bconf  |  4 ++++
 tools/bootconfig/samples/bad-over-max-brace.bconf    | 19 +++++++++++++++++++
 tools/bootconfig/samples/exp-good-nested-brace.bconf |  1 +
 tools/bootconfig/samples/good-nested-brace.bconf     | 18 ++++++++++++++++++
 tools/bootconfig/test-bootconfig.sh                  |  9 +++++++++
 6 files changed, 54 insertions(+), 3 deletions(-)
 create mode 100644 tools/bootconfig/samples/bad-non-closed-brace.bconf
 create mode 100644 tools/bootconfig/samples/bad-over-max-brace.bconf
 create mode 100644 tools/bootconfig/samples/exp-good-nested-brace.bconf
 create mode 100644 tools/bootconfig/samples/good-nested-brace.bconf
---------------------------
diff --git a/lib/bootconfig.c b/lib/bootconfig.c
index 449369a60846..2da049216fe0 100644
--- a/lib/bootconfig.c
+++ b/lib/bootconfig.c
@@ -316,7 +316,7 @@ int __init xbc_node_compose_key_after(struct xbc_node *root,
 			       depth ? "." : "");
 		if (ret < 0)
 			return ret;
-		if (ret > size) {
+		if (ret >= size) {
 			size = 0;
 		} else {
 			size -= ret;
@@ -532,9 +532,9 @@ static char *skip_spaces_until_newline(char *p)
 static int __init __xbc_open_brace(char *p)
 {
 	/* Push the last key as open brace */
-	open_brace[brace_index++] = xbc_node_index(last_parent);
 	if (brace_index >= XBC_DEPTH_MAX)
 		return xbc_parse_error("Exceed max depth of braces", p);
+	open_brace[brace_index++] = xbc_node_index(last_parent);
 
 	return 0;
 }
@@ -802,7 +802,7 @@ static int __init xbc_verify_tree(void)
 
 	/* Brace closing */
 	if (brace_index) {
-		n = &xbc_nodes[open_brace[brace_index]];
+		n = &xbc_nodes[open_brace[brace_index - 1]];
 		return xbc_parse_error("Brace is not closed",
 					xbc_node_get_data(n));
 	}
diff --git a/tools/bootconfig/samples/bad-non-closed-brace.bconf b/tools/bootconfig/samples/bad-non-closed-brace.bconf
new file mode 100644
index 000000000000..6ed9f3363dde
--- /dev/null
+++ b/tools/bootconfig/samples/bad-non-closed-brace.bconf
@@ -0,0 +1,4 @@
+foo {
+ bar {
+   buz
+ }
diff --git a/tools/bootconfig/samples/bad-over-max-brace.bconf b/tools/bootconfig/samples/bad-over-max-brace.bconf
new file mode 100644
index 000000000000..74b5dc9e21dc
--- /dev/null
+++ b/tools/bootconfig/samples/bad-over-max-brace.bconf
@@ -0,0 +1,19 @@
+key1 {
+key2 {
+key3 {
+key4 {
+key5 {
+key6 {
+key7 {
+key8 {
+key9 {
+key10 {
+key11 {
+key12 {
+key13 {
+key14 {
+key15 {
+key16 {
+key17 {
+}}}}}}}}}}}}}}}}}
+
diff --git a/tools/bootconfig/samples/exp-good-nested-brace.bconf b/tools/bootconfig/samples/exp-good-nested-brace.bconf
new file mode 100644
index 000000000000..19e0f51b4553
--- /dev/null
+++ b/tools/bootconfig/samples/exp-good-nested-brace.bconf
@@ -0,0 +1 @@
+key1.key2.key3.key4.key5.key6.key7.key8.key9.key10.key11.key12.key13.key14.key15.key16;
diff --git a/tools/bootconfig/samples/good-nested-brace.bconf b/tools/bootconfig/samples/good-nested-brace.bconf
new file mode 100644
index 000000000000..980d094f296e
--- /dev/null
+++ b/tools/bootconfig/samples/good-nested-brace.bconf
@@ -0,0 +1,18 @@
+key1 {
+key2 {
+key3 {
+key4 {
+key5 {
+key6 {
+key7 {
+key8 {
+key9 {
+key10 {
+key11 {
+key12 {
+key13 {
+key14 {
+key15 {
+key16 {
+}}}}}}}}}}}}}}}}
+
diff --git a/tools/bootconfig/test-bootconfig.sh b/tools/bootconfig/test-bootconfig.sh
index be9bd18b1d56..fc69f815ce4a 100755
--- a/tools/bootconfig/test-bootconfig.sh
+++ b/tools/bootconfig/test-bootconfig.sh
@@ -171,6 +171,15 @@ $BOOTCONF $INITRD > $OUTFILE
 xfail grep -q 'val[[:space:]]' $OUTFILE
 xpass grep -q 'val2[[:space:]]' $OUTFILE
 
+echo "Showing correct line:column of no closing brace"
+cat > $TEMPCONF << EOF
+foo {
+bar {
+}
+EOF
+$BOOTCONF -a $TEMPCONF $INITRD 2> $OUTFILE
+xpass grep -q "1:1" $OUTFILE
+
 echo "=== expected failure cases ==="
 for i in samples/bad-* ; do
   xfail $BOOTCONF -a $i $INITRD

-- 
Masami Hiramatsu (Google) <mhiramat@kernel.org>
Re: [GIT PULL] bootconfig: Fixes for v7.0-rc3
Posted by pr-tracker-bot@kernel.org 3 weeks, 1 day ago
The pull request you sent on Sun, 15 Mar 2026 19:29:23 +0900:

> git://git.kernel.org/pub/scm/linux/kernel/git/trace/linux-trace.git bootconfig-fixes-v7.0-rc3

has been merged into torvalds/linux.git:
https://git.kernel.org/torvalds/c/62cda74c79da1ebd46be7362e8329c6fa5d0caf3

Thank you!

-- 
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/prtracker.html