]> andersk Git - openssh.git/commitdiff
- (dtucker) [Makefile.in configure.ac, added openbsd-compat/regress/]
authordtucker <dtucker>
Sun, 19 Feb 2006 11:50:20 +0000 (11:50 +0000)
committerdtucker <dtucker>
Sun, 19 Feb 2006 11:50:20 +0000 (11:50 +0000)
   Add first attempt at regress tests for compat library.  ok djm@

ChangeLog
Makefile.in
configure.ac
openbsd-compat/regress/Makefile.in [new file with mode: 0644]
openbsd-compat/regress/snprintftest.c [new file with mode: 0644]
openbsd-compat/regress/strduptest.c [new file with mode: 0644]
openbsd-compat/regress/strtonumtest.c [new file with mode: 0644]

index 53f5764fd319418207e1eda8c6219626822bf637..a9da24afdc080647f364d8d6d6208b43819212d8 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+20060219
+ - (dtucker) [Makefile.in configure.ac, added openbsd-compat/regress/]
+   Add first attempt at regress tests for compat library.  ok djm@
+
 20060214
  - (tim) [buildpkg.sh.in] Make the names consistent.
    s/pkg_post_make_install_fixes.sh/pkg-post-make-install-fixes.sh/ OK dtucker@
index 15a165a8fd2a26f48404b7f51ecefe4e2e2aa3a5..827adb8e8c54b09f5ce3e718893467838cc3bfac 100644 (file)
@@ -410,6 +410,9 @@ tests:      $(TARGETS)
                EXEEXT="$(EXEEXT)" \
                $@
 
+compat-tests: $(LIBCOMPAT)
+       (cd openbsd-compat/regress && $(MAKE))
+
 regressclean:
        if [ -f regress/Makefile ] && [ -r regress/Makefile ]; then \
                (cd regress && $(MAKE) clean) \
index 7fb54781152fcfbc6448ccf6d5c6cfce958d1e41..b3b0a71146cc1309f89d6dd2cb958392250bcf5e 100644 (file)
@@ -3729,7 +3729,7 @@ CFLAGS="$CFLAGS $werror_flags"
 
 AC_EXEEXT
 AC_CONFIG_FILES([Makefile buildpkg.sh opensshd.init openbsd-compat/Makefile \
-       scard/Makefile ssh_prng_cmds survey.sh])
+       openbsd-compat/regress/Makefile scard/Makefile ssh_prng_cmds survey.sh])
 AC_OUTPUT
 
 # Print summary of options
diff --git a/openbsd-compat/regress/Makefile.in b/openbsd-compat/regress/Makefile.in
new file mode 100644 (file)
index 0000000..fc3008e
--- /dev/null
@@ -0,0 +1,39 @@
+# $Id$
+
+sysconfdir=@sysconfdir@
+piddir=@piddir@
+srcdir=@srcdir@
+top_srcdir=@top_srcdir@
+
+VPATH=@srcdir@
+CC=@CC@
+LD=@LD@
+CFLAGS=@CFLAGS@
+CPPFLAGS=-I. -I.. -I$(srcdir) -I$(srcdir)/.. @CPPFLAGS@ @DEFS@
+LIBS=@LIBS@
+LDFLAGS=-L.. -lopenbsd-compat @LDFLAGS@
+
+LIBCOMPAT=../libopenbsd-compat.a
+TESTPROGS=strtonumtest strduptest snprintftest
+
+all:   t-exec ${OTHERTESTS}
+
+t-exec:        $(TESTPROGS)
+       @echo running compat regress tests
+       @for TEST in ""$?; do \
+               echo "run test $${TEST}" ... 1>&2; \
+               ./$${TEST} || exit $$? ; \
+       done
+       @echo finished compat regress tests
+
+strtonumtest: strtonumtest.c $(LIBCOMPAT)
+       $(CC) $(CFLAGS) $(CPPFLAGS) -o strtonumtest $< $(LDFLAGS)
+
+strduptest: strduptest.c $(LIBCOMPAT)
+       $(CC) $(CFLAGS) $(CPPFLAGS) -o strduptest $< $(LDFLAGS)
+
+clean:
+       rm -f *.o *.a core $(TESTPROGS) valid.out
+
+distclean: clean
+       rm -f Makefile *~
diff --git a/openbsd-compat/regress/snprintftest.c b/openbsd-compat/regress/snprintftest.c
new file mode 100644 (file)
index 0000000..e25bf22
--- /dev/null
@@ -0,0 +1,72 @@
+/*
+ * Copyright (c) 2005 Darren Tucker
+ * Copyright (c) 2005 Damien Miller
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+#define BUFSZ 2048
+
+#include <sys/types.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <stdarg.h>
+
+static int failed = 0;
+
+static void
+fail(const char *m)
+{
+       fprintf(stderr, "%s", m);
+       failed = 1;
+}
+
+int x_snprintf(char *str, size_t count, const char *fmt, ...)
+{
+       size_t ret;
+       va_list ap;
+
+       va_start(ap, fmt);
+       ret = vsnprintf(str, count, fmt, ap);
+       va_end(ap);
+       return ret;
+}
+
+int
+main(void)
+{
+       char b[5];
+       char *src;
+
+       snprintf(b,5,"123456789");
+       if (b[4] != '\0')
+               fail("snprintf does not correctly terminate long strings");
+
+       /* check for read overrun on unterminated string */
+       if ((src = malloc(BUFSZ)) == NULL) {
+               fail("malloc failed");
+       } else {
+               memset(src, 'a', BUFSZ);
+               snprintf(b, sizeof(b), "%.*s", 1, src);
+               if (strcmp(b, "a") != 0)
+                       fail("failed with length limit '%%.s'");
+       }
+
+       /* check that snprintf and vsnprintf return sane values */
+       if (snprintf(b, 1, "%s %d", "hello", 12345) != 11)
+               fail("snprintf does not return required length");
+       if (x_snprintf(b, 1, "%s %d", "hello", 12345) != 11)
+               fail("vsnprintf does not return required length");
+
+       return failed;
+}
diff --git a/openbsd-compat/regress/strduptest.c b/openbsd-compat/regress/strduptest.c
new file mode 100644 (file)
index 0000000..664a48e
--- /dev/null
@@ -0,0 +1,42 @@
+/*
+ * Copyright (c) 2005 Darren Tucker
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+static int fail = 0;
+
+void
+test(const char *a)
+{
+       char *b;
+
+       b = strdup(a);
+       if (b == 0) {
+               fail = 1;
+               return;
+       }
+       if (strcmp(a, b) != 0)
+               fail = 1;
+       free(b);
+}
+
+int
+main(void)
+{
+       test("");
+       test("a");
+       test("\0");
+       test("abcdefghijklmnopqrstuvwxyz");
+       return fail;
+}
diff --git a/openbsd-compat/regress/strtonumtest.c b/openbsd-compat/regress/strtonumtest.c
new file mode 100644 (file)
index 0000000..cb85851
--- /dev/null
@@ -0,0 +1,66 @@
+/*     $OpenBSD: strtonumtest.c,v 1.1 2004/08/03 20:38:36 otto Exp $   */
+/*
+ * Copyright (c) 2004 Otto Moerbeek <otto@drijf.net>
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+/* OPENBSD ORIGINAL: regress/lib/libc/strtonum/strtonumtest.c */
+
+#include <limits.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+int fail;
+
+void
+test(const char *p, long long lb, long long ub, int ok)
+{
+       long long val;
+       const char *q;
+
+       val = strtonum(p, lb, ub, &q);
+       if (ok && q != NULL) {
+               fprintf(stderr, "%s [%lld-%lld] ", p, lb, ub);
+               fprintf(stderr, "NUMBER NOT ACCEPTED %s\n", q);
+               fail = 1;
+       } else if (!ok && q == NULL) {
+               fprintf(stderr, "%s [%lld-%lld] %lld ", p, lb, ub, val);
+               fprintf(stderr, "NUMBER ACCEPTED\n");
+               fail = 1;
+       }
+}
+
+int main(int argc, char *argv[])
+{
+       test("1", 0, 10, 1);
+       test("0", -2, 5, 1);
+       test("0", 2, 5, 0);
+       test("0", 2, LLONG_MAX, 0);
+       test("-2", 0, LLONG_MAX, 0);
+       test("0", -5, LLONG_MAX, 1);
+       test("-3", -3, LLONG_MAX, 1);
+       test("-9223372036854775808", LLONG_MIN, LLONG_MAX, 1);
+       test("9223372036854775807", LLONG_MIN, LLONG_MAX, 1);
+       test("-9223372036854775809", LLONG_MIN, LLONG_MAX, 0);
+       test("9223372036854775808", LLONG_MIN, LLONG_MAX, 0);
+       test("1000000000000000000000000", LLONG_MIN, LLONG_MAX, 0);
+       test("-1000000000000000000000000", LLONG_MIN, LLONG_MAX, 0);
+       test("-2", 10, -1, 0);
+       test("-2", -10, -1, 1);
+       test("-20", -10, -1, 0);
+       test("20", -10, -1, 0);
+
+       return (fail);
+}
+
This page took 0.078626 seconds and 5 git commands to generate.