public inbox for glibc-cvs@sourceware.org
help / color / mirror / Atom feed
From: Adhemerval Zanella <azanella@sourceware.org>
To: glibc-cvs@sourceware.org
Subject: [glibc/azanella/tunables] elf: Do not process invalid tunable format
Date: Wed,  4 Oct 2023 19:28:54 +0000 (GMT)	[thread overview]
Message-ID: <20231004192854.5BDB73857C44@sourceware.org> (raw)

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

commit dde95b6c66dc99c82bccd7db31fad095cd2b31d5
Author: Adhemerval Zanella <adhemerval.zanella@linaro.org>
Date:   Wed Oct 4 09:29:49 2023 -0300

    elf: Do not process invalid tunable format
    
    Tunables string with with more than one '=' on its definition are
    parsed and enabled, and any subsequent '=' are ignored.  It means
    that tunables in the form 'tunable=tunable=value' or
    'tunable=value=value' are handled 'tunable=value'.  This inputs are
    most likely user input error, which should not be accepted.
    
    Checked on x86_64-linux-gnu.

Diff:
---
 elf/dl-tunables.c  |  6 ++++--
 elf/tst-tunables.c | 21 +++++++++++++++++++++
 2 files changed, 25 insertions(+), 2 deletions(-)

diff --git a/elf/dl-tunables.c b/elf/dl-tunables.c
index 18ce0c0b27..9cd4c52568 100644
--- a/elf/dl-tunables.c
+++ b/elf/dl-tunables.c
@@ -194,10 +194,12 @@ parse_tunables (char *valstring)
 
       const char *value = p;
 
-      while (*p != ':' && *p != '\0')
+      while (*p != '=' && *p != ':' && *p != '\0')
 	p++;
 
-      if (*p == '\0')
+      if (*p == '=')
+	break;
+      else if (*p == '\0')
 	done = true;
       else
 	*p++ = '\0';
diff --git a/elf/tst-tunables.c b/elf/tst-tunables.c
index ec1ec8462c..006ba965c0 100644
--- a/elf/tst-tunables.c
+++ b/elf/tst-tunables.c
@@ -136,12 +136,33 @@ static const struct test_t
     0,
     0,
   },
+  /* Ill-formatted tunables are ignored.  */
+  {
+    "glibc.malloc.check=2=2",
+    0,
+    0,
+    0,
+  },
   {
     "glibc.malloc.mmap_threshold=glibc.malloc.mmap_threshold=4096",
     0,
     0,
     0,
   },
+  /* If there is a ill-formatted key=value, everything after is also ignored.  */
+  {
+    "glibc.malloc.check=2=2:glibc.malloc.check=2",
+    0,
+    0,
+    0,
+  },
+  /* Valid tunables set before ill-formatted ones are set.  */
+  {
+    "glibc.malloc.check=2:glibc.malloc.mmap_threshold=4096=4096",
+    2,
+    0,
+    0,
+  }
 };
 
 static int

             reply	other threads:[~2023-10-04 19:28 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-10-04 19:28 Adhemerval Zanella [this message]
2023-10-05 13:13 Adhemerval Zanella
2023-10-06 14:28 Adhemerval Zanella

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=20231004192854.5BDB73857C44@sourceware.org \
    --to=azanella@sourceware.org \
    --cc=glibc-cvs@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).