Fix buffer overflow in libm-test.inc check_complex()

This commit is contained in:
Marcus Shawcroft 2012-11-15 18:02:03 +00:00
parent 6e099e57a7
commit 2fd8978571
2 changed files with 13 additions and 3 deletions

View File

@ -1,3 +1,7 @@
2012-11-15 Marcus Shawcroft <marcus.shawcroft@linaro.org>
* math/libm-test.inc (check_complex): Use asprintf.
2012-11-14 Joseph Myers <joseph@codesourcery.com>
* debug/pcprofiledump.c (print_version): Update copyright year.

View File

@ -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);
}