printf oob regression test
authorSzabolcs Nagy <nsz@port70.net>
Sat, 5 Apr 2014 23:37:24 +0000 (01:37 +0200)
committerSzabolcs Nagy <nsz@port70.net>
Sat, 5 Apr 2014 23:37:24 +0000 (01:37 +0200)
src/regression/printf-1e9-oob.c [new file with mode: 0644]

diff --git a/src/regression/printf-1e9-oob.c b/src/regression/printf-1e9-oob.c
new file mode 100644 (file)
index 0000000..3d7dccf
--- /dev/null
@@ -0,0 +1,22 @@
+#include <stdio.h>
+#include <string.h>
+#include "test.h"
+
+static void t(const char *fmt, double d, const char *want)
+{
+       char buf[256];
+       int n = strlen(want);
+       int r = snprintf(buf, sizeof buf, fmt, d);
+       if (r != n || memcmp(buf, want, n+1) != 0)
+               t_error("snprintf(\"%s\",%f) want %s got %s\n", fmt, d, want, buf);
+}
+
+int main()
+{
+       // fill stack with something
+       t("%.1f", 123123123123123.0, "123123123123123.0");
+       // test for out-of-bounds access
+       t("%g", 999999999.0, "1e+09");
+       t("%.3e", 999999999.75, "1.000e+09");
+       return t_status;
+}