aboutsummaryrefslogtreecommitdiff
path: root/math/libm-test.inc
diff options
context:
space:
mode:
authorMarcus Shawcroft <marcus.shawcroft@linaro.org>2012-11-15 18:02:03 +0000
committerMarcus Shawcroft <marcus.shawcroft@linaro.org>2012-11-15 18:02:03 +0000
commit2fd8978571e1afecb46149f7886aa7deb9bceedc (patch)
treedd9d3e902a77d326247f60e4700d683947b59c49 /math/libm-test.inc
parent6e099e57a7084e17eb3b3aa5e30264a930c4be37 (diff)
downloadglibc-2fd8978571e1afecb46149f7886aa7deb9bceedc.zip
glibc-2fd8978571e1afecb46149f7886aa7deb9bceedc.tar.gz
glibc-2fd8978571e1afecb46149f7886aa7deb9bceedc.tar.bz2
Fix buffer overflow in libm-test.inc check_complex()
Diffstat (limited to 'math/libm-test.inc')
-rw-r--r--math/libm-test.inc12
1 files changed, 9 insertions, 3 deletions
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);
}