aboutsummaryrefslogtreecommitdiff
path: root/assert
diff options
context:
space:
mode:
authorAdhemerval Zanella <adhemerval.zanella@linaro.org>2024-12-30 16:36:18 -0300
committerAdhemerval Zanella <adhemerval.zanella@linaro.org>2025-01-02 10:19:42 -0300
commit6f0ea84f17581d13ad668adbc181c37141d389b8 (patch)
tree01ccc8d91186c45eb27bfc87a4fc8cfb224c2577 /assert
parent37d0a3e55a0d92eaf5c7892eb49abfc041eb0b65 (diff)
downloadglibc-6f0ea84f17581d13ad668adbc181c37141d389b8.tar.xz
glibc-6f0ea84f17581d13ad668adbc181c37141d389b8.zip
assert: Remove the use of %n from __assert_fail_base (BZ #32456)
The require size for mmap can be inferred from __vasprintf return value. It also fixes tst-assert-2 when building with --enable-fortify, where even if the format is not translated, __readonly_area fails because malloc can not be used. Checked on aarch64-linux-gnu. Reviewed-by: Florian Weimer <fweimer@redhat.com>
Diffstat (limited to 'assert')
-rw-r--r--assert/assert-perr.c2
-rw-r--r--assert/assert.c27
2 files changed, 11 insertions, 18 deletions
diff --git a/assert/assert-perr.c b/assert/assert-perr.c
index 80cae4d00d..83f0b3a76f 100644
--- a/assert/assert-perr.c
+++ b/assert/assert-perr.c
@@ -32,7 +32,7 @@ __assert_perror_fail (int errnum,
char errbuf[1024];
char *e = __strerror_r (errnum, errbuf, sizeof errbuf);
- __assert_fail_base (_("%s%s%s:%u: %s%sUnexpected error: %s.\n%n"),
+ __assert_fail_base (_("%s%s%s:%u: %s%sUnexpected error: %s.\n"),
e, file, line, function);
}
libc_hidden_def (__assert_perror_fail)
diff --git a/assert/assert.c b/assert/assert.c
index 47b06ec7fd..db90b8d7ef 100644
--- a/assert/assert.c
+++ b/assert/assert.c
@@ -15,24 +15,17 @@
License along with the GNU C Library; if not, see
<https://www.gnu.org/licenses/>. */
-#include <assert.h>
-#include <atomic.h>
+#include <intprops.h>
#include <ldsodefs.h>
#include <libintl.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <sysdep.h>
-#include <unistd.h>
-#include <sys/mman.h>
+#include <libio/iolibio.h>
#include <setvmaname.h>
#include <sys/uio.h>
-#include <intprops.h>
+#include <unistd.h>
extern const char *__progname;
-#include <wchar.h>
-#include <libio/iolibio.h>
#define fflush(s) _IO_fflush (s)
/* This function, when passed a string containing an asserted
@@ -56,12 +49,12 @@ __assert_fail_base (const char *fmt, const char *assertion, const char *file,
FATAL_PREPARE;
#endif
- int total;
- if (__asprintf (&str, fmt,
- __progname, __progname[0] ? ": " : "",
- file, line,
- function ? function : "", function ? ": " : "",
- assertion, &total) >= 0)
+ int total = __asprintf (&str, fmt,
+ __progname, __progname[0] ? ": " : "",
+ file, line,
+ function ? function : "", function ? ": " : "",
+ assertion);
+ if (total >= 0)
{
/* Print the message. */
(void) __fxprintf (NULL, "%s", str);
@@ -129,6 +122,6 @@ void
__assert_fail (const char *assertion, const char *file, unsigned int line,
const char *function)
{
- __assert_fail_base (_("%s%s%s:%u: %s%sAssertion `%s' failed.\n%n"),
+ __assert_fail_base (_("%s%s%s:%u: %s%sAssertion `%s' failed.\n"),
assertion, file, line, function);
}