From nobody Tue Apr 7 14:36:36 2026 Received: from mail-lf1-f46.google.com (mail-lf1-f46.google.com [209.85.167.46]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8DD7D401481 for ; Thu, 12 Mar 2026 19:11:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.46 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773342707; cv=none; b=reda4MFmJJ+UvD4D6C2n+Ci5643bp3jjN6VH+no5DhRCDMTilglh9NLZ69GUWRF4BDTQluxZ4MrcLXSnBrLiezUIrkLjSx61p32rKZ+2ZZeIo5eMPEtAA1uUPIC95MFMUV5cM/s/03P5Vi4viazuH5zEV+60sogEZa6Wb/OmYS4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773342707; c=relaxed/simple; bh=ucLeCOCDouCO7UufOBxTBTI1pPSlVnt7A7p1S/jHbcE=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=P86tLonveDXFHsZ9Iz/87Pt+Qq3EyHI5IosgoadEARiNsIe8NnUA3zjwz2nhjKaXI/AK0ueT8snCm9wqpHVldMqk7XLBSejIIVTQYBi1B3RaJ95pAjdbmdRYI/RhcTCXG/SME4b+OQBRpCNQCH86aHZZ0jv+kGhK24qo4HrzXf8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=ZuhpkNTN; arc=none smtp.client-ip=209.85.167.46 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="ZuhpkNTN" Received: by mail-lf1-f46.google.com with SMTP id 2adb3069b0e04-5a142464316so1891490e87.1 for ; Thu, 12 Mar 2026 12:11:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1773342705; x=1773947505; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=1oYoshde2XtkYb9vO2NHUjUuyf39EF1O91LJtB3a3dI=; b=ZuhpkNTNAhq3VvUFf+cwx+BjBV0lR1DmfaDoxKsaPBMraQRkBs23JOwgCa9jUoxvBn kPpPiZ+xhwoKn4RLcj6bKzZQdPOUZYfFL39zxYYzCZCQOUWXnIuZf5uBWJMOhJu36OH3 gtd6/2zzx6xT4ZqfJs1e/uGX10KuDfePTiLQ7WdM4OqirLHbSSgkOE2WCKv7wki2v1r0 isGSEZhSURQ8oMF0S55bNy381E8t0Jb4//zQhfsXsVY+D2z41NCZOLlHPIcpRB9f2M1U Hpnm7Ho20zeopt/eYnWYJzkAEM00LxvCivYDgL129WW4iVDCuamltcqk/q3HeMcYIa/E 22Hg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1773342705; x=1773947505; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=1oYoshde2XtkYb9vO2NHUjUuyf39EF1O91LJtB3a3dI=; b=QjecwsYcyHYT8DKbFbqqKVYQQOLorOctdmOESSzFgNL0pPCyQ6hSFbEFqIl++nsVWt GXowsFdY/0o2ENsb0DbGH5iQ5kP1WFgsVUTadqtttcY/AnIrDNuibTAiTBp6Ryx25Ed8 xR5jkOrmDD1dRPc7gn449f9h3iFUB1GB5+zNomGp1RVuPmaUPcB8/8Jzqj28gqZOvHA0 Q7W4iun2oZfL9C5ujswmBUJaGUFADSuy8K3bec8tp/JkON8ikTyEivi+GgECFXu5WljG +dWpaqGxFzIasda97z5mOrq2EcWqvoW/KDZR5d8A1NI9NTsPSVLWO/QI0hmmFw4R237/ Jimw== X-Forwarded-Encrypted: i=1; AJvYcCV0N3x8l0GXgjU56APivAeptC/8xsAFTQuOeWzDX77GC+wHfGqSEB/4xoMsI2b1R65Z1P5Y4LVl/4lcOPc=@vger.kernel.org X-Gm-Message-State: AOJu0YwX0pfH6xD2Q/8hppVTy9dLAkuguf/LAISFXHGTeemwuw+oygQN NqlEQb8QtH1zP3hNNRdW12bG7fb3Lh4DQBnKzX1l1sPib7vQQG/XIwZK X-Gm-Gg: ATEYQzztIvXTivCCZ7hDI0+YlTwXkWr5nlYai/BMnuEEbWZyBpa9Q5KfmdoqKpC8uQu QiBvhPAITIc330fI1b5JBPcDFgkgQ7BzwqWw+TVcacSWjUd9PX2DHSU5t8Uj3L/1Awd0WGGBbLY /7SOp9XegGogBI6tCjf55E7UxvRz1SMA/W5TX/F4tscWa8Be6t14ySZuQj2IzqEkCHR73sgsGP1 tmxReM7Y3FlJ738m4PxLRWAKTujZFOTPSeqzG1XWcoW8qiNL1G3s0BdF7vqXzNKEnFTrj48uWr8 90HxBPRe9+r21Z9QGmspXJhxtbWdzH7+WR7Gr4FIoPU/K5jn9CDjTFkHwwf4AQ7pf/JMfC7XU5O ve1KHzwbWbfgsCR9qyluy5suB2rI10NCGlpEY+nkvEIp3csA7nOV7Ee7ySr75S7XL6flSzEm+Vp A635toNNEd5sNHZU6y5KAHBf8syCr4pcdXu8t+KmFCq5EOpUGpHjQt5LJzBWnnTsfrzNXeJ2s= X-Received: by 2002:a05:6512:61d5:10b0:5a1:23fe:1b71 with SMTP id 2adb3069b0e04-5a1626f88aemr179518e87.3.1773342704589; Thu, 12 Mar 2026 12:11:44 -0700 (PDT) Received: from ubuntu.. (static.159.107.27.37.clients.your-server.de. [37.27.107.159]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-5a156375198sm1112249e87.88.2026.03.12.12.11.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 12 Mar 2026 12:11:44 -0700 (PDT) From: Josh Law X-Google-Original-From: Josh Law To: Masami Hiramatsu , Andrew Morton Cc: Josh Law , linux-kernel@vger.kernel.org, linux-trace-kernel@vger.kernel.org Subject: [PATCH v2 1/3] lib/bootconfig: fix off-by-one in xbc_verify_tree() unclosed brace error Date: Thu, 12 Mar 2026 19:11:41 +0000 Message-Id: <20260312191143.28719-2-objecting@objecting.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260312191143.28719-1-objecting@objecting.org> References: <20260312191143.28719-1-objecting@objecting.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Josh Law __xbc_open_brace() pushes entries with post-increment (open_brace[brace_index++]), so brace_index always points one past the last valid entry. xbc_verify_tree() reads open_brace[brace_index] to report which brace is unclosed, but this is one past the last pushed entry and contains stale/zero data, causing the error message to reference the wrong node. Use open_brace[brace_index - 1] to correctly identify the unclosed brace. brace_index is known to be > 0 here since we are inside the if (brace_index) guard. Signed-off-by: Josh Law Reviewed-by: Steven Rostedt (Google) --- lib/bootconfig.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/bootconfig.c b/lib/bootconfig.c index 2bcd5c2aa87e..a1e6a2e14b01 100644 --- a/lib/bootconfig.c +++ b/lib/bootconfig.c @@ -802,7 +802,7 @@ static int __init xbc_verify_tree(void) =20 /* Brace closing */ if (brace_index) { - n =3D &xbc_nodes[open_brace[brace_index]]; + n =3D &xbc_nodes[open_brace[brace_index - 1]]; return xbc_parse_error("Brace is not closed", xbc_node_get_data(n)); } --=20 2.34.1 From nobody Tue Apr 7 14:36:36 2026 Received: from mail-lf1-f54.google.com (mail-lf1-f54.google.com [209.85.167.54]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id BCE133A6F0F for ; Thu, 12 Mar 2026 19:11:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.54 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773342709; cv=none; b=g+0jSW/6rOw+QUYfe5vaGpqDdFp5wiLTcdNNmg9/s73p7M1fe8NvzpouPJg8HRwk6JL9VJ2t6XKifRNVonjJLvREDUIdPDzn5JISH7yk4o3gzNRPWuZVWbUoAmiYx51cxWaTuvUdvLL3Yln614pvZfOqYPW5SSDtaX9dr8gb50M= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773342709; c=relaxed/simple; bh=K7t6TixnSC5amlbb+BTN1wgZlFUmLS7pMFxwMr59PtI=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=bguO3a+l7eILjd9mzMJPnRJNzQ/bc96WVMSg48r4PuCALEqN9Gx0wyGp+6tt5d70r9OiggeA5Wm97zYGIIqnsu3US7EAHz0tdGVyIOo6fAGPr8A9h03jh6Re69LgaZjrsMfr0qwGu5aGN2JcBc9fCKZZtViTbM0CiOEwVmXLA/k= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=lYmO7q1s; arc=none smtp.client-ip=209.85.167.54 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="lYmO7q1s" Received: by mail-lf1-f54.google.com with SMTP id 2adb3069b0e04-5a13d1c6f25so1486310e87.3 for ; Thu, 12 Mar 2026 12:11:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1773342706; x=1773947506; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=oSs15jicLNxatcInmbAogDjkpXKXGRLDfNz1kmJ6CQE=; b=lYmO7q1sbbgbMiLOMOXLnU7e8gcWBcRgYanoKlaomR0/nGWcXNhNdr0DN0hSt84mTw UOpPcuLW8uC69uj24xJCTacugzW+LDn9yEWLQX7RA0Vt9SBQRBffRp7PAhYBOTlJlYRN fn5FpQN4MqO/FK9o6bFqud4a6Zeh5WLOYVvTx6ljlHk66Adr3Gkk0yHsXbEZ4yP3XhZl J7dEAt59XExfvDw8nC9Lntvm0eyEqPw9JQDjw/sQmDSk5Xk9SzquSMD4bCRsBbYjVS8s rxUzORJKWx7uot3LCqu0YpfEPXnramZ9RKhhU2NJozaiJg+0e5pnds6YMos61UdGxBLL rcRg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1773342706; x=1773947506; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=oSs15jicLNxatcInmbAogDjkpXKXGRLDfNz1kmJ6CQE=; b=ciKeVEtU3MMyjSiYnmswVFCpsXzolKw/ZMmZTRuJIsrQ844l583lqWMOK+epXCMlpv msGMprpcaDoVsS/NJzo5n59A9KJqk1E6oPNKCM4O1JrKW9tQfQ3AUEeiyW+OcUWzvazf uAlsDuxP4vvsgynwZpyNvrX1Xp1QPyWNmx9Zo4lE3W54iImgApvYZ+mdIrbD8ExLAwRP eqRafr/jusNjMPnENeCrOssJ/4+F9aqsYbRFo84di6XHx/zv8e1ZpjlGeEwHuH+cSwCQ q2mOKGGKuH2phUW5xDjofT7UiseiWYv9x+VkPg/pCMoqSMeuDP7cGOY5h4oG+ujODGD5 RTSw== X-Forwarded-Encrypted: i=1; AJvYcCXvxA5BkwtFNav5CxGUezJ3TPIgg/L/QPymXtwi6D/FO4cGhOw7nudeCx6gqf5evaWEppbR8YuHALVXW90=@vger.kernel.org X-Gm-Message-State: AOJu0Yx+zsGETNlR4p++wjwo04yxU6vgs41YCMgzd7PfUxfzafhRiLoi Gq3LYAG5CZHpw0vB1LHfAmFSMebxl5sx/FCvXz+vLkSgAJnWn9pVO3eE X-Gm-Gg: ATEYQzyTbjKymC8lV3Yz0ncamN20Uxvl79iSWnmyLF9506F7RC3JlPcdA3Nqva9qfk7 /V4P9DGztvOcaizbn7Apny1Wa50tKk/JBTteH4TcouASnvfPUAHZornfJXNc2nM7UE4D2c3LSEX ZMoklBljElDa0KWfKTIO8lWwkDVPFUbNZ/WDHNqlTnCs0ia8IFiPQ0MmhkwCzRGC+Rq8ogLsIZt ZdhwPfQzIbZhXllR6D0vD70F66UiKKDfuPtDWsfCpcXI3sPiKEZ0o2rvPhRwUeG0TeTToRhk7kX Jq0ORnB4wEa5zf+tnGESsHnl5gy70bbcIpdZW82VLnTDVmcCX0UtKAlhpVhguOy2MOJnt7JpOwq wufjC9Io2N85KvEGitCprldCp4PgRjJS2IGDRcQt1/UXRxNSQDs2EyNCFXla1oRKTbn4soqHxxm Tt3RVgL6W1jNrphy+G30nb+MOPQuIVNvgzOJ1K/Wd7CKDBb7Qai+S0+3wHoO2E2/TyIdQ5UcU= X-Received: by 2002:a05:6512:31c1:b0:5a1:43cc:9fbd with SMTP id 2adb3069b0e04-5a162b06cfamr197164e87.36.1773342705775; Thu, 12 Mar 2026 12:11:45 -0700 (PDT) Received: from ubuntu.. (static.159.107.27.37.clients.your-server.de. [37.27.107.159]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-5a156375198sm1112249e87.88.2026.03.12.12.11.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 12 Mar 2026 12:11:44 -0700 (PDT) From: Josh Law X-Google-Original-From: Josh Law To: Masami Hiramatsu , Andrew Morton Cc: Josh Law , linux-kernel@vger.kernel.org, linux-trace-kernel@vger.kernel.org Subject: [PATCH v2 2/3] lib/bootconfig: check bounds before writing in __xbc_open_brace() Date: Thu, 12 Mar 2026 19:11:42 +0000 Message-Id: <20260312191143.28719-3-objecting@objecting.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260312191143.28719-1-objecting@objecting.org> References: <20260312191143.28719-1-objecting@objecting.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Josh Law The bounds check for brace_index happens after the array write. While the current call pattern prevents an actual out-of-bounds access (the previous call would have returned an error), the write-before-check pattern is fragile and would become a real out-of-bounds write if the error return were ever not propagated. Move the bounds check before the array write so the function is self-contained and safe regardless of caller behavior. Signed-off-by: Josh Law --- lib/bootconfig.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/bootconfig.c b/lib/bootconfig.c index a1e6a2e14b01..62b4ed7a0ba6 100644 --- a/lib/bootconfig.c +++ b/lib/bootconfig.c @@ -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++] =3D xbc_node_index(last_parent); if (brace_index >=3D XBC_DEPTH_MAX) return xbc_parse_error("Exceed max depth of braces", p); + open_brace[brace_index++] =3D xbc_node_index(last_parent); =20 return 0; } --=20 2.34.1 From nobody Tue Apr 7 14:36:36 2026 Received: from mail-lf1-f45.google.com (mail-lf1-f45.google.com [209.85.167.45]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 1E25C40149E for ; Thu, 12 Mar 2026 19:11:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.45 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773342709; cv=none; b=p2d7T6lqH7d7oVd1KOktJPjZ4nzdVnEtbjNWAOfnewfGG15fc3MqJvqCzBhOMCqNtTbJKZAK+8Km3b6izR+Q3jHBZN5fqoiK6R/2LdPyQ6qZ/RxvnrDrI7RLIRLKqZ0wa2EDXj3faVHWn2Fv36zkiRwhc2yQCL0RoeiTmOJ0B9I= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773342709; c=relaxed/simple; bh=8ozz4uX3VG7ubKIGiEygr7D5oPi9gmvKVCXRz56Np/4=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=KGjNeSbF3BNJBFEjhZyYGadJatrtAeK9z87Iw3qr1pgAnUowtoS56MBGDVhC9H5LMt0MnFB6VqYnA6/vkNrEFAWcpZBa3wmVRQsBZ97SeaUDcKKPQm6agXA+AxrjXpD2f6AD0nSkYw56g+VAopcDwF64X0Ekqirq1hHisJTTZfU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=DYPe+GOw; arc=none smtp.client-ip=209.85.167.45 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="DYPe+GOw" Received: by mail-lf1-f45.google.com with SMTP id 2adb3069b0e04-5a1273de95aso1918615e87.0 for ; Thu, 12 Mar 2026 12:11:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1773342706; x=1773947506; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=+pyq/Z2cW6Oq5zvXs1uq6RW2e5g+Ci/r6rp/HxH6Mjk=; b=DYPe+GOw+pzfT93KT5GOTQ6fnxFWSaum/ytTv6wNpBjKWizgSBBl49cNcUr/4bIK5K Fbd6MBfuxHHPUhNQ4gdWNnzUPKemvxHMJYzmdNM+KjImSGPI9kPUal5KoviGQRoaQryQ 2g0RiNGHHAsisOeadbY3JbUIZR5V6olKijqhvtyGMqAhsDTAHV6wGXchK0rn2owxTRro FoypZj8lD8LPQCT45suNU+bn5PLvFpdysM07AwBskHAWFH0vHMPJ19fxBX7V0Cj6hGVK bgoPUYq4Z1ko1lvJORGdmG2pRk85zB1NjwZ1aPW7Aq6wPVVEukvt0Sj5LKuBZ99Z+PUA sMLw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1773342706; x=1773947506; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=+pyq/Z2cW6Oq5zvXs1uq6RW2e5g+Ci/r6rp/HxH6Mjk=; b=D/DuLjpzlhlU3RWCkCmC+ZkESadb05jxmk6CbhhfNqtOoe3rcvp87BGHxt0MvGrdc4 1J402Df+ImJvQQzExsY5TEjL5vaR/tFzfGGb+2oWiNRV5vJwTesKSPuqqX2hkAEPLXIu 04yqUDgzEVrL/D7jT57XXbg4QCS+7IWbE+BsiKL1AbxSbbRgyIdO+4uKeXu+hQnIRIN9 Ik9b2xvfTUpHRTMPI4yUl02HWpVyFNTstent50DzVIYWOwRt5LN7puOgissD043546Ob DwXxDQWbKK3UhNPRXCXgqYmQhi2or1zxcWjdxjHJD6fesMvwe8Or4ggxpgm3IXSzJNSf SONg== X-Forwarded-Encrypted: i=1; AJvYcCXXVJmAdRUQvvdWSfwCRbjmHMIFCqM3yC1gPhXT5+GJxIWra+L5hEMLova1bIXA1roV6Fb85DWW0Meqhqw=@vger.kernel.org X-Gm-Message-State: AOJu0YwYe4of+vWRvV2t5lsxuwTDwoc3ZXvaunHIMCPb17fxJb2uP5pe S8zafn66hHM51GpcSCUtAnOYWeh6Gfe+SjORf8HdDTm3c6SxXFbWyuuy X-Gm-Gg: ATEYQzwFZ+QCN34lufI0CL/gThyc6hP7o4CvL2oNgD76fzBLSZ64dHKSObdmqn2omkU UHRk42ypXuya4EF44UzxZapL9AXq5SMAFzH7/8OhxQzBFo0paiqvrhOz91vkla9FsOl8+OKJ3S5 A/28QYU1DF+QQJI7AWbjYrtDPhRoph5X37krDJuY3exQhwMM5ZVyCfH6a97TjW/xRnTHo71hr7K d0b5JWi7twlkkgx3W7QkIU2nIGgkCK23HWyzzuVxhrJf3U7qKjyGyCEhHG9s6QA2eGrrjLJeMEC EpdbYdLpdJNPoucV3WkqlyGM/jOhGV3TL7oL9sMA3BEUqaCIKEUaY1RXzl8oQEF2hq++84/TEhK hEekCtDhoL2/VvKAcThvQMzI8mY6YlnuZxX/JL+9OicQOu2nFSnU7ybqgZ+Cz1jrRT+zo5qatPx QGPVLzXLZ1s3v3Wk93eWPBUwbEb5eIFjPbkrPpYoYPAEKAc+W1Wk9cE8cwgDEB5K7MuiXyWPk= X-Received: by 2002:a05:6512:1413:b0:5a1:3561:de7d with SMTP id 2adb3069b0e04-5a162b39c97mr153329e87.41.1773342706113; Thu, 12 Mar 2026 12:11:46 -0700 (PDT) Received: from ubuntu.. (static.159.107.27.37.clients.your-server.de. [37.27.107.159]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-5a156375198sm1112249e87.88.2026.03.12.12.11.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 12 Mar 2026 12:11:45 -0700 (PDT) From: Josh Law X-Google-Original-From: Josh Law To: Masami Hiramatsu , Andrew Morton Cc: Josh Law , linux-kernel@vger.kernel.org, linux-trace-kernel@vger.kernel.org Subject: [PATCH v2 3/3] lib/bootconfig: fix snprintf truncation check in xbc_node_compose_key_after() Date: Thu, 12 Mar 2026 19:11:43 +0000 Message-Id: <20260312191143.28719-4-objecting@objecting.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260312191143.28719-1-objecting@objecting.org> References: <20260312191143.28719-1-objecting@objecting.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Josh Law snprintf() returns the number of characters that would have been written excluding the NUL terminator. Output is truncated when the return value is >=3D the buffer size, not just > the buffer size. When ret =3D=3D size, the current code takes the non-truncated path, advancing buf by ret and reducing size to 0. This is wrong because the output was actually truncated (the last character was replaced by NUL). Fix by using >=3D so the truncation path is taken correctly. Signed-off-by: Josh Law Reviewed-by: Steven Rostedt (Google) --- lib/bootconfig.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/bootconfig.c b/lib/bootconfig.c index 62b4ed7a0ba6..b0ef1e74e98a 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 >=3D size) { size =3D 0; } else { size -=3D ret; --=20 2.34.1 From nobody Tue Apr 7 14:36:36 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id BF2F71A683D; Fri, 13 Mar 2026 04:18:59 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773375539; cv=none; b=ODGH9Nvba4XGiUQygMJN5kBMo/tzOdYg8QQT2H+cWFAADSmdfmW7WZADvSWuBv6lTXhPPE9kcyv0WN4vQnCp0IPnLIBu2aWhqSZjeZspuQ+dYDyVQQ6rhNcKZM7yIidInEfbYO6NSEPJ2T/8gMQRZj3gevGC4CPXNrlC6eM/8+0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773375539; c=relaxed/simple; bh=Tt3AfELBEtOk0qMhCqYoOGFksbxLNP2gfazCyyXA3zg=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=nxqSeJJUWMqGETTipxUxjEShthWCUZW4t2SKePFHjBhDZUyY02eNtZd8vorSTZhj9H73pqrP8lcBAdzdBQHENT5tOgLhfcXU6bxXKWAdeXivQ0nxlt1d2nYn/sd3MO0qb+z5lzpg+szkZgf7aM9Oa9Qqnxs9AXLD1gnD6uc2Mgo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=a6UOstIi; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="a6UOstIi" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 1B618C19421; Fri, 13 Mar 2026 04:18:57 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1773375539; bh=Tt3AfELBEtOk0qMhCqYoOGFksbxLNP2gfazCyyXA3zg=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=a6UOstIivyxodtN4Yn3n1/3OrFn5+d/tauxRsgMqeRycoq9gNcw0BlhiGva6OPxqB 5XTv5NAJrR9RtJRpJADxjMrp747XpM2NlvFGcX+pRnuncWeujNaEanB9YiKcGyWrIM +8BpctJGPV6XtvHb1mNoIA3GnneOzd2cNOQotNkCceqN4oXiFihUIdkFwNJCMb+tVn LCqguYEgE904J/M+Zdl5q/SlY81BTLtJjulhc7MkxPefdeeNhvXDT3cRlyA/Ua5AjE PedrOhXQ3lwxBoeV13QL8MOGq8897or2HwTDyrW6wB+0b2RMPMhUYlmZ4M+q4Y4o0T W37mYJfFW9MaQ== From: "Masami Hiramatsu (Google)" To: Masami Hiramatsu , Steven Rostedt Cc: Andrew Morton , Josh Law , linux-kernel@vger.kernel.org, linux-trace-kernel@vger.kernel.org Subject: [PATCH] bootconfig: Add bootconfig tests about braces Date: Fri, 13 Mar 2026 13:18:55 +0900 Message-ID: <177337553551.416919.11217619471547711262.stgit@devnote2> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260312191143.28719-1-objecting@objecting.org> References: <20260312191143.28719-1-objecting@objecting.org> User-Agent: StGit/0.19 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable From: Masami Hiramatsu (Google) Add more bootconfig tests for checking the error message of non closing brace and max number of nested braces. Signed-off-by: Masami Hiramatsu (Google) Acked-By: Josh Law --- .../bootconfig/samples/bad-non-closed-brace.bconf | 4 ++++ tools/bootconfig/samples/bad-over-max-brace.bconf | 19 ++++++++++++++++= +++ .../bootconfig/samples/exp-good-nested-brace.bconf | 1 + tools/bootconfig/samples/good-nested-brace.bconf | 18 ++++++++++++++++= ++ tools/bootconfig/test-bootconfig.sh | 9 +++++++++ 5 files changed, 51 insertions(+) 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/tools/bootconfig/samples/bad-non-closed-brace.bconf b/tools/bo= otconfig/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/boot= config/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/b= ootconfig/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/bootc= onfig/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-bo= otconfig.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 =20 +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 "=3D=3D=3D expected failure cases =3D=3D=3D" for i in samples/bad-* ; do xfail $BOOTCONF -a $i $INITRD