public inbox for glibc-cvs@sourceware.org
help / color / mirror / Atom feed
* [glibc/release/2.36/master] elf: Fix hwcaps string size overestimation
@ 2022-09-15 13:09 Florian Weimer
  0 siblings, 0 replies; only message in thread
From: Florian Weimer @ 2022-09-15 13:09 UTC (permalink / raw)
  To: glibc-cvs

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=4b95b6e8bbb5a2b6856f707bf3bc3308ebef595a

commit 4b95b6e8bbb5a2b6856f707bf3bc3308ebef595a
Author: Javier Pello <devel@otheo.eu>
Date:   Mon Sep 5 20:09:01 2022 +0200

    elf: Fix hwcaps string size overestimation
    
    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>
    (cherry picked from commit a23820f6052a740246fdc7dcd9c43ce8eed0c45a)

Diff:
---
 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 6f161f6ad5..92eb53790e 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)

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2022-09-15 13:09 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-09-15 13:09 [glibc/release/2.36/master] elf: Fix hwcaps string size overestimation Florian Weimer

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).