[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