aboutsummaryrefslogtreecommitdiff
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
parent6e099e57a7084e17eb3b3aa5e30264a930c4be37 (diff)
downloadglibc-2fd8978571e1afecb46149f7886aa7deb9bceedc.tar
glibc-2fd8978571e1afecb46149f7886aa7deb9bceedc.tar.gz
glibc-2fd8978571e1afecb46149f7886aa7deb9bceedc.tar.bz2
glibc-2fd8978571e1afecb46149f7886aa7deb9bceedc.zip
Fix buffer overflow in libm-test.inc check_complex()
-rw-r--r--ChangeLog4
-rw-r--r--math/libm-test.inc12
2 files changed, 13 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index 0f4c503c11..fa279585c1 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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.
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);
}