From: Florian Weimer Date: Tue, 24 Sep 2024 11:23:10 +0000 (+0200) Subject: elf: Eliminate alloca in open_verify X-Git-Url: https://sourceware.org/git/?a=commitdiff_plain;h=9802c0f2fec787ffcd192e1f2d6871dc586c6dad;p=glibc.git elf: Eliminate alloca in open_verify With the two-stage approach for exception handling, the name can be freed after it has been copied into the exception, but before it is raised. --- diff --git a/elf/dl-load.c b/elf/dl-load.c index c47ae093f3..ac8e217a7f 100644 --- a/elf/dl-load.c +++ b/elf/dl-load.c @@ -1592,15 +1592,13 @@ open_verify (const char *name, int fd, errval = errno; errstring = (errval == 0 ? N_("file too short") : N_("cannot read file data")); - lose: + lose:; + struct dl_exception exception; + _dl_exception_create (&exception, name, errstring); if (free_name) - { - char *realname = (char *) name; - name = strdupa (realname); - free (realname); - } + free ((char *) name); __close_nocancel (fd); - _dl_signal_error (errval, name, NULL, errstring); + _dl_signal_exception (errval, &exception, NULL); } /* See whether the ELF header is what we expect. */