From 2e02f29632218fc24d71fbbefc368d551d0528a7 Mon Sep 17 00:00:00 2001 From: Christos Zoulas Date: Mon, 10 Jun 2019 13:15:23 +0100 Subject: [PATCH] Tidy up ar_open by using asprintf to replace xmalloc and sprintf. PR 24649 * arsup.c (ar_open): Use asprintf in place of xmalloc and sprintf. --- binutils/ChangeLog | 6 ++++++ binutils/arsup.c | 11 +++++++++-- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/binutils/ChangeLog b/binutils/ChangeLog index c98ed943508..b845caca035 100644 --- a/binutils/ChangeLog +++ b/binutils/ChangeLog @@ -1,3 +1,9 @@ +2019-06-10 Christos Zoulas + + PR 24649 + * arsup.c (ar_open): Use asprintf in place of xmalloc and + sprintf. + 2019-06-03 Nick Clifton Revert: diff --git a/binutils/arsup.c b/binutils/arsup.c index 75549bba118..0836496180a 100644 --- a/binutils/arsup.c +++ b/binutils/arsup.c @@ -149,13 +149,20 @@ maybequit (void) void ar_open (char *name, int t) { - char *tname = (char *) xmalloc (strlen (name) + 10); + char *tname; const char *bname = lbasename (name); real_name = name; /* Prepend tmp- to the beginning, to avoid file-name clashes after truncation on filesystems with limited namespaces (DOS). */ - sprintf (tname, "%.*stmp-%s", (int) (bname - name), name, bname); + if (asprintf (&tname, "%.*stmp-%s", (int) (bname - name), name, bname) == -1) + { + fprintf (stderr, _("%s: Can't allocate memory for temp name (%s)\n"), + program_name, strerror(errno)); + maybequit (); + return; + } + obfd = bfd_openw (tname, NULL); if (!obfd) -- 2.30.2