summaryrefslogtreecommitdiff
path: root/regress/unittests
diff options
context:
space:
mode:
Diffstat (limited to 'regress/unittests')
-rw-r--r--regress/unittests/Makefile4
-rw-r--r--regress/unittests/sshbuf/test_sshbuf_misc.c31
-rw-r--r--regress/unittests/sshkey/test_sshkey.c4
-rw-r--r--regress/unittests/test_helper/Makefile3
-rw-r--r--regress/unittests/utf8/Makefile12
-rw-r--r--regress/unittests/utf8/tests.c82
6 files changed, 129 insertions, 7 deletions
diff --git a/regress/unittests/Makefile b/regress/unittests/Makefile
index d3d90823f9072..0a95d4b205fba 100644
--- a/regress/unittests/Makefile
+++ b/regress/unittests/Makefile
@@ -1,5 +1,5 @@
-# $OpenBSD: Makefile,v 1.5 2015/02/16 22:21:03 djm Exp $
+# $OpenBSD: Makefile,v 1.6 2016/05/26 19:14:25 schwarze Exp $
REGRESS_FAIL_EARLY= yes
-SUBDIR= test_helper sshbuf sshkey bitmap kex hostkeys
+SUBDIR= test_helper sshbuf sshkey bitmap kex hostkeys utf8
.include <bsd.subdir.mk>
diff --git a/regress/unittests/sshbuf/test_sshbuf_misc.c b/regress/unittests/sshbuf/test_sshbuf_misc.c
index f155491a0b6bb..762a6c31c0374 100644
--- a/regress/unittests/sshbuf/test_sshbuf_misc.c
+++ b/regress/unittests/sshbuf/test_sshbuf_misc.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: test_sshbuf_misc.c,v 1.1 2014/04/30 05:32:00 djm Exp $ */
+/* $OpenBSD: test_sshbuf_misc.c,v 1.2 2016/05/03 13:48:33 djm Exp $ */
/*
* Regress test for sshbuf.h buffer API
*
@@ -134,5 +134,34 @@ sshbuf_misc_tests(void)
ASSERT_U32_EQ(PEEK_U32(sshbuf_ptr(p1)), 0xd00fd00f);
sshbuf_free(p1);
TEST_DONE();
+
+ TEST_START("sshbuf_dup_string");
+ p1 = sshbuf_new();
+ ASSERT_PTR_NE(p1, NULL);
+ /* Check empty buffer */
+ p = sshbuf_dup_string(p1);
+ ASSERT_PTR_NE(p, NULL);
+ ASSERT_SIZE_T_EQ(strlen(p), 0);
+ free(p);
+ /* Check buffer with string */
+ ASSERT_INT_EQ(sshbuf_put(p1, "quad1", strlen("quad1")), 0);
+ p = sshbuf_dup_string(p1);
+ ASSERT_PTR_NE(p, NULL);
+ ASSERT_SIZE_T_EQ(strlen(p), strlen("quad1"));
+ ASSERT_STRING_EQ(p, "quad1");
+ free(p);
+ /* Check buffer with terminating nul */
+ ASSERT_INT_EQ(sshbuf_put(p1, "\0", 1), 0);
+ p = sshbuf_dup_string(p1);
+ ASSERT_PTR_NE(p, NULL);
+ ASSERT_SIZE_T_EQ(strlen(p), strlen("quad1"));
+ ASSERT_STRING_EQ(p, "quad1");
+ free(p);
+ /* Check buffer with data after nul (expect failure) */
+ ASSERT_INT_EQ(sshbuf_put(p1, "quad2", strlen("quad2")), 0);
+ p = sshbuf_dup_string(p1);
+ ASSERT_PTR_EQ(p, NULL);
+ sshbuf_free(p1);
+ TEST_DONE();
}
diff --git a/regress/unittests/sshkey/test_sshkey.c b/regress/unittests/sshkey/test_sshkey.c
index 1f160d1a7917e..1476dc2e305fb 100644
--- a/regress/unittests/sshkey/test_sshkey.c
+++ b/regress/unittests/sshkey/test_sshkey.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: test_sshkey.c,v 1.9 2015/12/07 02:20:46 djm Exp $ */
+/* $OpenBSD: test_sshkey.c,v 1.10 2016/05/02 09:52:00 djm Exp $ */
/*
* Regress test for sshkey.h key management API
*
@@ -455,7 +455,7 @@ sshkey_tests(void)
put_opt(k1->cert->extensions, "permit-X11-forwarding", NULL);
put_opt(k1->cert->extensions, "permit-agent-forwarding", NULL);
ASSERT_INT_EQ(sshkey_from_private(k2, &k1->cert->signature_key), 0);
- ASSERT_INT_EQ(sshkey_certify(k1, k2), 0);
+ ASSERT_INT_EQ(sshkey_certify(k1, k2, NULL), 0);
b = sshbuf_new();
ASSERT_PTR_NE(b, NULL);
ASSERT_INT_EQ(sshkey_putb(k1, b), 0);
diff --git a/regress/unittests/test_helper/Makefile b/regress/unittests/test_helper/Makefile
index 5b3894cbfb567..78026e6533da1 100644
--- a/regress/unittests/test_helper/Makefile
+++ b/regress/unittests/test_helper/Makefile
@@ -1,9 +1,8 @@
-# $OpenBSD: Makefile,v 1.2 2015/01/20 22:58:57 djm Exp $
+# $OpenBSD: Makefile,v 1.3 2016/07/04 18:01:44 guenther Exp $
LIB= test_helper
SRCS= test_helper.c fuzz.c
-DEBUGLIBS= no
NOPROFILE= yes
NOPIC= yes
diff --git a/regress/unittests/utf8/Makefile b/regress/unittests/utf8/Makefile
new file mode 100644
index 0000000000000..150ea2f2e2c7a
--- /dev/null
+++ b/regress/unittests/utf8/Makefile
@@ -0,0 +1,12 @@
+# $OpenBSD: Makefile,v 1.2 2016/05/30 12:14:08 schwarze Exp $
+
+TEST_ENV= "MALLOC_OPTIONS=CFGJPRSUX"
+
+PROG=test_utf8
+SRCS=tests.c
+REGRESS_TARGETS=run-regress-${PROG}
+
+run-regress-${PROG}: ${PROG}
+ env ${TEST_ENV} ./${PROG}
+
+.include <bsd.regress.mk>
diff --git a/regress/unittests/utf8/tests.c b/regress/unittests/utf8/tests.c
new file mode 100644
index 0000000000000..fad2ec2794413
--- /dev/null
+++ b/regress/unittests/utf8/tests.c
@@ -0,0 +1,82 @@
+/* $OpenBSD: tests.c,v 1.2 2016/05/30 12:05:56 schwarze Exp $ */
+/*
+ * Regress test for the utf8.h *mprintf() API
+ *
+ * Written by Ingo Schwarze <schwarze@openbsd.org> in 2016
+ * and placed in the public domain.
+ */
+
+#include <locale.h>
+#include <string.h>
+
+#include "test_helper.h"
+
+#include "utf8.h"
+
+void badarg(void);
+void one(const char *, const char *, int, int, int, const char *);
+
+void
+badarg(void)
+{
+ char buf[16];
+ int len, width;
+
+ width = 1;
+ TEST_START("utf8_badarg");
+ len = snmprintf(buf, sizeof(buf), &width, "\377");
+ ASSERT_INT_EQ(len, -1);
+ ASSERT_STRING_EQ(buf, "");
+ ASSERT_INT_EQ(width, 0);
+ TEST_DONE();
+}
+
+void
+one(const char *name, const char *mbs, int width,
+ int wantwidth, int wantlen, const char *wants)
+{
+ char buf[16];
+ int *wp;
+ int len;
+
+ if (wantlen == -2)
+ wantlen = strlen(wants);
+ (void)strlcpy(buf, "utf8_", sizeof(buf));
+ (void)strlcat(buf, name, sizeof(buf));
+ TEST_START(buf);
+ wp = wantwidth == -2 ? NULL : &width;
+ len = snmprintf(buf, sizeof(buf), wp, "%s", mbs);
+ ASSERT_INT_EQ(len, wantlen);
+ ASSERT_STRING_EQ(buf, wants);
+ ASSERT_INT_EQ(width, wantwidth);
+ TEST_DONE();
+}
+
+void
+tests(void)
+{
+ char *loc;
+
+ TEST_START("utf8_setlocale");
+ loc = setlocale(LC_CTYPE, "en_US.UTF-8");
+ ASSERT_PTR_NE(loc, NULL);
+ TEST_DONE();
+
+ badarg();
+ one("null", NULL, 8, 6, 6, "(null)");
+ one("empty", "", 2, 0, 0, "");
+ one("ascii", "x", -2, -2, -2, "x");
+ one("newline", "a\nb", -2, -2, -2, "a\nb");
+ one("cr", "a\rb", -2, -2, -2, "a\rb");
+ one("tab", "a\tb", -2, -2, -2, "a\tb");
+ one("esc", "\033x", -2, -2, -2, "\\033x");
+ one("inv_badbyte", "\377x", -2, -2, -2, "\\377x");
+ one("inv_nocont", "\341x", -2, -2, -2, "\\341x");
+ one("inv_nolead", "a\200b", -2, -2, -2, "a\\200b");
+ one("sz_ascii", "1234567890123456", -2, -2, 16, "123456789012345");
+ one("sz_esc", "123456789012\033", -2, -2, 16, "123456789012");
+ one("width_ascii", "123", 2, 2, -1, "12");
+ one("width_double", "a\343\201\201", 2, 1, -1, "a");
+ one("double_fit", "a\343\201\201", 3, 3, 4, "a\343\201\201");
+ one("double_spc", "a\343\201\201", 4, 3, 4, "a\343\201\201");
+}