[openssh-commits] [openssh] 04/04: upstream: unit tests for sshbuf_consume_upto_child()

git+noreply at mindrot.org git+noreply at mindrot.org
Tue Dec 30 11:37:54 AEDT 2025


This is an automated email from the git hooks/post-receive script.

djm pushed a commit to branch master
in repository openssh.

commit b9c318777eb40db66fb92df87666c3642467d0e7
Author: djm at openbsd.org <djm at openbsd.org>
AuthorDate: Tue Dec 30 00:12:58 2025 +0000

    upstream: unit tests for sshbuf_consume_upto_child()
    
    OpenBSD-Regress-ID: 13cbd0370ebca7c61c35346b3e0356517719a447
---
 regress/unittests/sshbuf/test_sshbuf.c | 39 ++++++++++++++++++++++++++++++++--
 1 file changed, 37 insertions(+), 2 deletions(-)

diff --git a/regress/unittests/sshbuf/test_sshbuf.c b/regress/unittests/sshbuf/test_sshbuf.c
index dc021ba90..3e165d430 100644
--- a/regress/unittests/sshbuf/test_sshbuf.c
+++ b/regress/unittests/sshbuf/test_sshbuf.c
@@ -1,4 +1,4 @@
-/* 	$OpenBSD: test_sshbuf.c,v 1.2 2021/12/14 21:25:27 deraadt Exp $ */
+/* 	$OpenBSD: test_sshbuf.c,v 1.3 2025/12/30 00:12:58 djm Exp $ */
 /*
  * Regress test for sshbuf.h buffer API
  *
@@ -28,7 +28,8 @@ void sshbuf_tests(void);
 void
 sshbuf_tests(void)
 {
-	struct sshbuf *p1;
+	struct sshbuf *p1, *p2, *p3;
+	u_int v32;
 	const u_char *cdp;
 	u_char *dp;
 	size_t sz;
@@ -238,4 +239,38 @@ sshbuf_tests(void)
 	ASSERT_SIZE_T_EQ(sshbuf_avail(p1), 1223);
 	sshbuf_free(p1);
 	TEST_DONE();
+
+	TEST_START("sshbuf_consume_upto_child");
+	p1 = sshbuf_new();
+	ASSERT_PTR_NE(p1, NULL);
+	p2 = sshbuf_new();
+	ASSERT_PTR_NE(p2, NULL);
+	/* Unrelated buffers */
+	ASSERT_INT_EQ(sshbuf_consume_upto_child(p1, p2),
+	    SSH_ERR_INVALID_ARGUMENT);
+	/* Simple success case */
+	ASSERT_INT_EQ(sshbuf_put_u32(p1, 0xdeadbeef), 0);
+	ASSERT_INT_EQ(sshbuf_put_u32(p1, 0x01020304), 0);
+	ASSERT_INT_EQ(sshbuf_put_u32(p1, 0xfeedface), 0);
+	ASSERT_SIZE_T_EQ(sshbuf_len(p1), 12);
+	p3 = sshbuf_fromb(p1);
+	ASSERT_PTR_NE(p3, NULL);
+	ASSERT_INT_EQ(sshbuf_get_u32(p3, &v32), 0);
+	ASSERT_U32_EQ(v32, 0xdeadbeef);
+	ASSERT_SIZE_T_EQ(sshbuf_len(p3), 8);
+	ASSERT_INT_EQ(sshbuf_consume_upto_child(p1, p3), 0);
+	ASSERT_SIZE_T_EQ(sshbuf_len(p1), sshbuf_len(p3));
+	ASSERT_PTR_EQ(sshbuf_ptr(p1), sshbuf_ptr(p3));
+	sshbuf_free(p3);
+	/* Parent already consumed past child */
+	p3 = sshbuf_fromb(p1);
+	ASSERT_PTR_NE(p3, NULL);
+	ASSERT_INT_EQ(sshbuf_get_u32(p1, &v32), 0);
+	ASSERT_U32_EQ(v32, 0x01020304);
+	ASSERT_INT_EQ(sshbuf_consume_upto_child(p1, p3),
+	    SSH_ERR_INVALID_ARGUMENT);
+	sshbuf_free(p1);
+	sshbuf_free(p2);
+	sshbuf_free(p3);
+	TEST_DONE();
 }

-- 
To stop receiving notification emails like this one, please contact
djm at mindrot.org.


More information about the openssh-commits mailing list