diff options
author | Marcus Shawcroft <marcus.shawcroft@linaro.org> | 2012-11-15 18:02:03 +0000 |
---|---|---|
committer | Marcus Shawcroft <marcus.shawcroft@linaro.org> | 2012-11-15 18:02:03 +0000 |
commit | 2fd8978571e1afecb46149f7886aa7deb9bceedc (patch) | |
tree | dd9d3e902a77d326247f60e4700d683947b59c49 /math | |
parent | 6e099e57a7084e17eb3b3aa5e30264a930c4be37 (diff) | |
download | glibc-2fd8978571e1afecb46149f7886aa7deb9bceedc.tar.gz |
Fix buffer overflow in libm-test.inc check_complex()
Diffstat (limited to 'math')
-rw-r--r-- | math/libm-test.inc | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/math/libm-test.inc b/math/libm-test.inc index 74488e7b6a..225a5e1b15 100644 --- a/math/libm-test.inc +++ b/math/libm-test.inc @@ -627,9 +627,11 @@ check_complex (const char *test_name, __complex__ FLOAT computed, { FLOAT part_comp, part_exp, part_max_ulp; int part_xfail; - char str[200]; + char *str; + + if (asprintf (&str, "Real part of: %s", test_name) == -1) + abort (); - sprintf (str, "Real part of: %s", test_name); part_comp = __real__ computed; part_exp = __real__ expected; part_max_ulp = __real__ max_ulp; @@ -637,8 +639,11 @@ check_complex (const char *test_name, __complex__ FLOAT computed, check_float_internal (str, part_comp, part_exp, part_max_ulp, part_xfail, exception, &real_max_error); + free (str); + + if (asprintf (&str, "Imaginary part of: %s", test_name) == -1) + abort (); - sprintf (str, "Imaginary part of: %s", test_name); part_comp = __imag__ computed; part_exp = __imag__ expected; part_max_ulp = __imag__ max_ulp; @@ -649,6 +654,7 @@ check_complex (const char *test_name, __complex__ FLOAT computed, check_float_internal (str, part_comp, part_exp, part_max_ulp, part_xfail, exception & IGNORE_ZERO_INF_SIGN, &imag_max_error); + free (str); } |