1// commit 109048e031f39fbb370211fde44ababf6c04c8fb 2014-04-07 2// float printf out-of-bounds access 3#include <stdio.h> 4#include <string.h> 5#include "test.h" 6 7static void t(const char *fmt, double d, const char *want) 8{ 9 char buf[256]; 10 int n = strlen(want); 11 int r = snprintf(buf, sizeof buf, fmt, d); 12 if (r != n || memcmp(buf, want, n+1) != 0) 13 t_error("snprintf(\"%s\",%f) want %s got %s\n", fmt, d, want, buf); 14} 15 16int main() 17{ 18 // fill stack with something 19 t("%.1f", 123123123123123.0, "123123123123123.0"); 20 // test for out-of-bounds access 21 t("%g", 999999999.0, "1e+09"); 22 t("%.3e", 999999999.75, "1.000e+09"); 23 return t_status; 24} 25