From 2fd8978571e1afecb46149f7886aa7deb9bceedc Mon Sep 17 00:00:00 2001 From: Marcus Shawcroft Date: Thu, 15 Nov 2012 18:02:03 +0000 Subject: [PATCH] Fix buffer overflow in libm-test.inc check_complex() --- ChangeLog | 4 ++++ math/libm-test.inc | 12 +++++++++--- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 0f4c503..fa27958 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2012-11-15 Marcus Shawcroft + + * math/libm-test.inc (check_complex): Use asprintf. + 2012-11-14 Joseph Myers * debug/pcprofiledump.c (print_version): Update copyright year. diff --git a/math/libm-test.inc b/math/libm-test.inc index 74488e7..225a5e1 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); } -- 2.7.4