From nobody Sun Feb 8 13:08:49 2026 Received: from mail-wr1-f54.google.com (mail-wr1-f54.google.com [209.85.221.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 DB846320CBE for ; Tue, 3 Feb 2026 10:30:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.54 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770114615; cv=none; b=OyEZrLnJsuoBvPOIJuv8d5zNzSFZtBXPjPjgUjsDPY3zgLGxAvUwLZcwnsVIlfrTgHhYuIKrsU+GDaK3hyvE5JTdA2qL6A1KIuwbrvTSCwWN39hSg3gNTzNcaQC5x7mYB7x/H4L2rw3+AFFsPaKw7HE17jer/ENADmBXSwpMKD4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770114615; c=relaxed/simple; bh=V5Kgbu8KWduZOz1IPzijcL+R0EtvKaaz5UOiV2qyt+w=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=KdP+lyzgbo+I5U3ply0jstDByRdFlVLiFyVu0WckIdTBMzVklCDKWEKPCXp4JoyY44qDdVWXCbfF431l7jNyXgbqj422mvVxsUksu9wpMeT1cNyEwTXn5cj0MfZ680YlhplfNIPqkmaoUG4fbBj2aVmQuJsdRUQl9AyiD0vXBis= 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=UEv1R2V9; arc=none smtp.client-ip=209.85.221.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="UEv1R2V9" Received: by mail-wr1-f54.google.com with SMTP id ffacd0b85a97d-43596062728so371901f8f.1 for ; Tue, 03 Feb 2026 02:30:13 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1770114612; x=1770719412; 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=d1YB/VeDMJ7msRHf0d0Q6uzpeZSh9PcvIzZ+rmHr5yE=; b=UEv1R2V9QmzICr7SdqAz3LAd5o5o6mSs2dXI5uvah5If89Q3mWM1xjC2KrCNOzXOfq 91pH9kustCt0VYeKFNC9cKr9LqyPaFwDC0GtzZN0RBP/VuCKdJ9rIg9IrNEAfy9thBr6 EvU+6ze4/vTc/B5pX/GIkOvW8+I72e5XwzCFc53S/Z3cSQjcqYqyNOqF59UEjTS7e6d+ PmJh4TrWzv2f5ImwhETRTIpRtYAXCdOwSJo7emwvTee8RzXQOyrSK4ne4pGeyg34DMy+ GXTmb+qZQ/kdm0sANITJ3PhnWH3ikBf91lUsndsbPKX8yBzVZm8NOMp/sU5QNpr7nC5d zJjw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770114612; x=1770719412; 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=d1YB/VeDMJ7msRHf0d0Q6uzpeZSh9PcvIzZ+rmHr5yE=; b=IcNMLRXCh9MO7qg/Tax77o/v1gF+7XsD67qWgM/xiRCUR63iEuBnlFROkelZOxpwSk jDH740hMCu3SNLrcTS4PFD+evu/5AsEpQSWV1Xiv7s0A/2yZ5LDWuOuKAJTORQfR7PH/ 9bWE8JJNsgU3U6Mj9fe5vDz4OdeHUxkmTx8FIwQHVxgOh4Oz0zTMUOpJASfriv4Ddntk vxIEqqfCGbCxlgnRRkKzzyYIyxicEC+Zg4oopmTWshJTNAiFM4Oo3e16feqfvnzMiDik dysOSlP/RHLwdvroz4FchvdVBY2o7x02Ss8aF1LCBUwCj0b7lMjaKrEXptlq730FuAcA fQlg== X-Forwarded-Encrypted: i=1; AJvYcCWhc4BaqsKfKRn18C82WTRQyZ/oz9kEdy+a2jvWZTNCcNjSyRSZ7ok6V7gyUmRHk5hwftv2+c8PF18yl50=@vger.kernel.org X-Gm-Message-State: AOJu0YwNoCCy/qrjUPK8RPWatG8XNjW/OoU4TL5pf+IiZ1jMuf3Rrqgw H+ySmPdgajCQxMJuOIojNzqEsYJPZySOTN+hdywQFaqj5BjuYVXRHsD5gwPHQQ== X-Gm-Gg: AZuq6aJNEIl/A8UEzt77nhWx8YaqWO0kzan14S5Acpucjl6DSDBjg81lDB9424TKJ/i RhaidZ/ewYK/jw28qokHy+I3ZnbOIrkfqxClZ1Jcj5hHnVWF2fO0NVFdlTUSuHngJL8ZtsGRaoc 9osfl9g5GnYddkPUNdW9RbrfeJWUqvV/XIco8zfwGhKKk5S/5yz+yefKWgwB2LWA91FxW//avY3 mibpff4Vcj93rY2m/PEhUMFyC2M5S3/1JvBwMolj4gdDJZeBE9mhbnLJHWgT88wNDLs74WpBXJP DeR+WIFU0vh03XlFDGVMkFwjNfsOXBx6jLXXPFQ98/OT7P6toiSMeNoMzgbHANn6yMDXRyKC8J/ V518IY6Pnr6XGgSBuKpROr9NlcsEXpQXd83ut4602tIf99YHtwX95EizJeZVm3iq4a2/k1MHo/Q zUkvDiosOC27h+er8FTGZSYRkR62y69aRS3zMo9oZMH0zaYIDtHJwONN2PU8XFvBCyT4skk6s9 X-Received: by 2002:a05:6000:2284:b0:435:9635:2943 with SMTP id ffacd0b85a97d-436114218eamr4682445f8f.17.1770114612162; Tue, 03 Feb 2026 02:30:12 -0800 (PST) Received: from snowdrop.snailnet.com (82-69-66-36.dsl.in-addr.zen.co.uk. [82.69.66.36]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-435e10edf62sm55940729f8f.13.2026.02.03.02.30.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 03 Feb 2026 02:30:11 -0800 (PST) From: david.laight.linux@gmail.com To: Willy Tarreau , =?UTF-8?q?Thomas=20Wei=C3=9Fschuh?= , linux-kernel@vger.kernel.org, Cheng Li Cc: David Laight Subject: [PATCH next 04/12] selftests/nolibc: Improve reporting of vfprintf() errors Date: Tue, 3 Feb 2026 10:29:52 +0000 Message-Id: <20260203103000.20206-5-david.laight.linux@gmail.com> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20260203103000.20206-1-david.laight.linux@gmail.com> References: <20260203103000.20206-1-david.laight.linux@gmail.com> 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: David Laight Check the string matches before checking the returned length. Only print the string once when it matches. Normally the length is that of the expected string, make it easier to write tests by treating a length of zero as being that of the expected output. Additionally check that nothing beyond the end is written. Signed-off-by: David Laight --- tools/testing/selftests/nolibc/nolibc-test.c | 27 ++++++++++++++++---- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/tools/testing/selftests/nolibc/nolibc-test.c b/tools/testing/s= elftests/nolibc/nolibc-test.c index 3c5a226dad3a..9378a1f26c34 100644 --- a/tools/testing/selftests/nolibc/nolibc-test.c +++ b/tools/testing/selftests/nolibc/nolibc-test.c @@ -1567,28 +1567,45 @@ int run_stdlib(int min, int max) =20 static int expect_vfprintf(int llen, int c, const char *expected, const ch= ar *fmt, ...) { + unsigned int i; char buf[100]; va_list args; ssize_t w; int ret; =20 + for (i =3D 0; i < sizeof(buf); i++) + buf[i] =3D i; =20 va_start(args, fmt); - /* Only allow writing 21 bytes, to test truncation */ + /* Only allow writing 20 bytes, to test truncation */ w =3D vsnprintf(buf, 21, fmt, args); va_end(args); =20 + llen +=3D printf(" \"%s\"", buf); + ret =3D strcmp(expected, buf); + if (ret) { + llen +=3D printf(" should be \"%s\"", expected); + result(llen, FAIL); + return 1; + } + if (!c) + c =3D strlen(expected); if (w !=3D c) { llen +=3D printf(" written(%d) !=3D %d", (int)w, c); result(llen, FAIL); return 1; } =20 - llen +=3D printf(" \"%s\" =3D \"%s\"", expected, buf); - ret =3D strncmp(expected, buf, c); + for (i =3D c + 1; i < sizeof(buf); i++) { + if (buf[i] - i) { + llen +=3D printf(" overwrote buf[%d] with 0x%x", i, buf[i]); + result(llen, FAIL); + return 1; + } + } =20 - result(llen, ret ? FAIL : OK); - return ret; + result(llen, OK); + return 0; } =20 static int test_scanf(void) --=20 2.39.5