public inbox for libc-alpha@sourceware.org
 help / color / mirror / Atom feed
From: Javier Pello <devel@otheo.eu>
To: libc-alpha@sourceware.org
Subject: [PATCH 1/4] elf: Fix hwcaps string size overestimation
Date: Mon, 5 Sep 2022 20:09:01 +0200	[thread overview]
Message-ID: <20220905200901.07ccae81662ec00d68094f7e@otheo.eu> (raw)
In-Reply-To: <20220905200652.d69204581d15c64647da5cd2@otheo.eu>

Commit dad90d528259b669342757c37dedefa8577e2636 added glibc-hwcaps
support for LD_LIBRARY_PATH and, for this, it adjusted the total
string size required in _dl_important_hwcaps. However, in doing so
it inadvertently altered the calculation of the size required for
the power set strings, as the computation of the power set string
size depended on the first value assigned to the total variable,
which is later shifted, resulting in overallocation of string
space. Fix this now by using a different variable to hold the
string size required for glibc-hwcaps.

Signed-off-by: Javier Pello <devel@otheo.eu>
---
 elf/dl-hwcaps.c | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/elf/dl-hwcaps.c b/elf/dl-hwcaps.c
index 6f161f6a..92eb5379 100644
--- a/elf/dl-hwcaps.c
+++ b/elf/dl-hwcaps.c
@@ -193,7 +193,7 @@ _dl_important_hwcaps (const char *glibc_hwcaps_prepend,
   /* Each hwcaps subdirectory has a GLIBC_HWCAPS_PREFIX string prefix
      and a "/" suffix once stored in the result.  */
   hwcaps_counts.maximum_length += strlen (GLIBC_HWCAPS_PREFIX) + 1;
-  size_t total = (hwcaps_counts.count * (strlen (GLIBC_HWCAPS_PREFIX) + 1)
+  size_t hwcaps_sz = (hwcaps_counts.count * (strlen (GLIBC_HWCAPS_PREFIX) + 1)
 		  + hwcaps_counts.total_length);
 
   /* Count the number of bits set in the masked value.  */
@@ -229,11 +229,12 @@ _dl_important_hwcaps (const char *glibc_hwcaps_prepend,
   assert (m == cnt);
 
   /* Determine the total size of all strings together.  */
+  size_t total;
   if (cnt == 1)
-    total += temp[0].len + 1;
+    total = temp[0].len + 1;
   else
     {
-      total += temp[0].len + temp[cnt - 1].len + 2;
+      total = temp[0].len + temp[cnt - 1].len + 2;
       if (cnt > 2)
 	{
 	  total <<= 1;
@@ -255,6 +256,7 @@ _dl_important_hwcaps (const char *glibc_hwcaps_prepend,
   /* This is the overall result, including both glibc-hwcaps
      subdirectories and the legacy hwcaps subdirectories using the
      power set construction.  */
+  total += hwcaps_sz;
   struct r_strlenpair *overall_result
     = malloc (*sz * sizeof (*result) + total);
   if (overall_result == NULL)
-- 
2.36.0


  reply	other threads:[~2022-09-05 18:10 UTC|newest]

Thread overview: 53+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-09-05 18:06 [PATCH 0/4] " Javier Pello
2022-09-05 18:09 ` Javier Pello [this message]
2022-09-08 10:15   ` [PATCH 1/4] " Florian Weimer
2022-09-05 18:10 ` [PATCH 2/4] elf: Simplify hwcaps masked value bit counting Javier Pello
2022-09-05 18:12 ` [PATCH 3/4] elf: Remove unneeded conditional in _dl_important_hwcaps Javier Pello
2022-09-05 18:13 ` [PATCH 4/4] elf: Simplify hwcaps power set string construction Javier Pello
2022-09-06  7:35 ` [PATCH 0/4] elf: Fix hwcaps string size overestimation Florian Weimer
2022-09-06 18:12   ` Javier Pello
2022-09-08 11:23     ` Florian Weimer
2022-09-14 18:07       ` [PATCH 0/6] Remove legacy hwcaps support Javier Pello
2022-09-14 18:08         ` [PATCH 1/6] elf: Remove legacy hwcaps support from the dynamic loader Javier Pello
2022-09-14 18:10         ` [PATCH 2/6] elf: Remove legacy hwcaps support from ldconfig Javier Pello
2022-09-14 18:10         ` [PATCH 3/6] elf: Remove hwcap parameter from add_to_cache signature Javier Pello
2022-09-14 18:12         ` [PATCH 4/6] elf: Remove hwcap and bits_hwcap fields from struct cache_entry Javier Pello
2022-09-14 18:13         ` [PATCH 5/6] elf: Remove _dl_string_hwcap Javier Pello
2022-09-14 18:15         ` [PATCH 6/6] elf: Simplify output of hwcap subdirectories in ld.so help Javier Pello
2022-09-15  8:42           ` Carlos O'Donell
2022-09-15 19:12             ` Javier Pello
2022-09-14 21:23         ` [PATCH 0/6] Remove legacy hwcaps support Joseph Myers
2022-09-17 14:17         ` [PATCH v2 " Javier Pello
2022-09-17 14:18           ` [PATCH v2 1/6] elf: Remove legacy hwcaps support from the dynamic loader Javier Pello
2022-09-22 11:46             ` Florian Weimer
2022-09-17 14:19           ` [PATCH v2 2/6] elf: Remove legacy hwcaps support from ldconfig Javier Pello
2022-09-22 12:14             ` Florian Weimer
2022-09-17 14:20           ` [PATCH v2 3/6] elf: Remove hwcap parameter from add_to_cache signature Javier Pello
2022-09-22 16:02             ` Florian Weimer
2022-09-17 14:22           ` [PATCH v2 4/6] elf: Remove hwcap and bits_hwcap fields from struct cache_entry Javier Pello
2022-09-22 16:03             ` Florian Weimer
2022-09-17 14:23           ` [PATCH v2 5/6] elf: Remove _dl_string_hwcap Javier Pello
2022-09-17 14:24           ` [PATCH v2 6/6] elf: Simplify output of hwcap subdirectories in ld.so help Javier Pello
2022-09-21 16:26           ` [PATCH v2 0/6] Remove legacy hwcaps support Joseph Myers
2022-09-27 18:03           ` [PATCH v3 0/8] " Javier Pello
2022-09-27 18:05             ` [PATCH v3 1/8] x86_64: Remove platform directory library loading test Javier Pello
2022-10-03 14:56               ` Adhemerval Zanella Netto
2022-10-04 17:53                 ` Javier Pello
2022-10-04 17:59                   ` Adhemerval Zanella Netto
2022-09-27 18:05             ` [PATCH v3 2/8] elf: Remove legacy hwcaps support from the dynamic loader Javier Pello
2022-09-27 18:06             ` [PATCH v3 3/8] elf: Remove legacy hwcaps support from ldconfig Javier Pello
2022-10-03 15:31               ` Adhemerval Zanella Netto
2022-09-27 18:07             ` [PATCH v3 4/8] elf: Remove hwcap parameter from add_to_cache signature Javier Pello
2022-09-27 18:08             ` [PATCH v3 5/8] elf: Remove hwcap and bits_hwcap fields from struct cache_entry Javier Pello
2022-09-27 18:08             ` [PATCH v3 6/8] Add NEWS entry for legacy hwcaps removal Javier Pello
2022-10-03 15:44               ` Adhemerval Zanella Netto
2022-10-03 19:29                 ` Andreas Schwab
2022-10-03 19:49                   ` Adhemerval Zanella Netto
2022-10-03 19:59                     ` Florian Weimer
2022-10-04 18:00                       ` Adhemerval Zanella Netto
2022-10-05 18:12                         ` Javier Pello
2022-10-06 11:03                           ` Adhemerval Zanella Netto
2022-09-27 18:09             ` [PATCH v3 7/8] elf: Remove _dl_string_hwcap Javier Pello
2022-10-03 16:52               ` Adhemerval Zanella Netto
2022-09-27 18:10             ` [PATCH v3 8/8] elf: Simplify output of hwcap subdirectories in ld.so help Javier Pello
2022-10-03 17:02               ` Adhemerval Zanella Netto

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20220905200901.07ccae81662ec00d68094f7e@otheo.eu \
    --to=devel@otheo.eu \
    --cc=libc-alpha@sourceware.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).