Authentication-Results: mail-b.sr.ht; dkim=pass header.d=aarsen.me header.i=@aarsen.me Received: from mout-p-201.mailbox.org (mout-p-201.mailbox.org [80.241.56.171]) by mail-b.sr.ht (Postfix) with ESMTPS id 6BAEE11EE06 for <~lattis/muon@lists.sr.ht>; Sun, 20 Nov 2022 21:25:02 +0000 (UTC) Received: from smtp202.mailbox.org (smtp202.mailbox.org [10.196.197.202]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-384) server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by mout-p-201.mailbox.org (Postfix) with ESMTPS id 4NFk7b1C7Jz9sVh; Sun, 20 Nov 2022 22:24:59 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=aarsen.me; s=MBO0001; t=1668979499; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding; bh=nXduL5Ocb9iEGFclwtac8bbbJgSgNKdhNA+DizoymPE=; b=Hq/TP5c33HOLM+d3Hrha4z/50f+dePFvDxD6Bxwi2Vu4mSXiF85rdd077lfGTPDXKioZGz VchQI96EK+2DBrXP76u1Ocfr66cxKgxl8W4va/z6+GSkqMeUQXWowuN5FQD+QavypDU+NY aZ2x4W+xThF7jN0/KtIibIZ137+HvmMHMQLVxlyxPYd78CiHuxYbU54QeKRRFwV73FxS63 fPJ8XWOWFT7nz9kPVy1sDvvd0AZppg6vnZ7or7WT24GvlvisOb1/mKeyyN79Rd/Q9VEJOG kDr6IDZ6h4bJuchTGnKobM2iKYHgIiH1zzdmLFzvkNSCfoUD7TjdN2QN8vr3pw== From: =?UTF-8?q?Arsen=20Arsenovi=C4=87?= To: ~lattis/muon@lists.sr.ht Cc: =?UTF-8?q?Arsen=20Arsenovi=C4=87?= Subject: [PATCH] build_target: Fix possible out-of-bounds egde case Date: Sun, 20 Nov 2022 22:23:33 +0100 Message-Id: <20221120212332.3783571-1-arsen@aarsen.me> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Detected on Tinderbox with FORTIFY_SOURCE=3. Bug: https://bugs.gentoo.org/882295 --- Hey there, The Tinderbox spotted a potential error in determine_target_build_name while running tests. I traced it back to a bad concat, fix included. Tested on x86_64-pc-linux-gnu, though I'm unsure if I got all the configurations or if the contract of the function is still fulfilled following this change (but it appears to be to me). Thanks in advance, and have a great night! src/functions/kernel/build_target.c | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/functions/kernel/build_target.c b/src/functions/kernel/build_target.c index 07b20e29..2ecc27c4 100644 --- a/src/functions/kernel/build_target.c +++ b/src/functions/kernel/build_target.c @@ -307,7 +307,6 @@ determine_target_build_name(struct workspace *wk, struct obj_build_target *tgt, obj name_pre, obj name_suff, char plain_name[BUF_SIZE_2k]) { const char *pref, *suff, *ver_suff = NULL; - uint32_t i; switch (tgt->type) { case tgt_executable: @@ -341,10 +340,7 @@ determine_target_build_name(struct workspace *wk, struct obj_build_target *tgt, suff = get_cstr(wk, name_suff); } - i = snprintf(plain_name, BUF_SIZE_2k, "%s%s", pref, get_cstr(wk, tgt->name)); - if (suff) { - snprintf(&plain_name[i], BUF_SIZE_2k, ".%s", suff); - } + snprintf(plain_name, BUF_SIZE_2k, "%s%s%s%s", pref, get_cstr(wk, tgt->name), suff ? "." : "", suff ? suff : ""); tgt->build_name = make_strf(wk, "%s%s%s", plain_name, ver_suff ? "." : "", ver_suff ? ver_suff : ""); return true; -- 2.38.1