Fix buffer overflow in libm-test.inc check_complex()
authorMarcus Shawcroft <marcus.shawcroft@linaro.org>
Thu, 15 Nov 2012 18:02:03 +0000 (18:02 +0000)
committerMarcus Shawcroft <marcus.shawcroft@linaro.org>
Thu, 15 Nov 2012 18:02:03 +0000 (18:02 +0000)
ChangeLog
math/libm-test.inc

index 0f4c503..fa27958 100644 (file)
--- 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.
index 74488e7..225a5e1 100644 (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);
 }