All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] setproctitle: fix out of boundary access
@ 2017-09-25 19:55 Tobias Stoeckmann
  2017-09-26 10:12 ` Karel Zak
  0 siblings, 1 reply; 2+ messages in thread
From: Tobias Stoeckmann @ 2017-09-25 19:55 UTC (permalink / raw)
  To: util-linux

A program using setproctitle can trigger an out of boundary access
if an attacker was able to clear the environment before execution.

The check in setproctitle prevents overflows, but does not take into
account that the whole length of the arguments could be 1, which is
possible by supplying such a program name to execlp(3) or using a
symbolic link, e.g. argv[0] = "l", argv[1] = NULL.

Only login uses setproctitle, which is not affected by this
problem due to initializing the environment right before the call.
---
 lib/setproctitle.c | 11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)

diff --git a/lib/setproctitle.c b/lib/setproctitle.c
index 93bc82e47..7168e4658 100644
--- a/lib/setproctitle.c
+++ b/lib/setproctitle.c
@@ -17,7 +17,7 @@
 extern char **environ;
 
 static char **argv0;
-static int argv_lth;
+static size_t argv_lth;
 
 void initproctitle (int argc, char **argv)
 {
@@ -42,16 +42,17 @@ void initproctitle (int argc, char **argv)
 			return;
 	environ[i] = NULL;
 
-	argv0 = argv;
 	if (i > 0)
-		argv_lth = envp[i-1] + strlen(envp[i-1]) - argv0[0];
+		argv_lth = envp[i-1] + strlen(envp[i-1]) - argv[0];
 	else
-		argv_lth = argv0[argc-1] + strlen(argv0[argc-1]) - argv0[0];
+		argv_lth = argv[argc-1] + strlen(argv[argc-1]) - argv[0];
+	if (argv_lth > 1)
+		argv0 = argv;
 }
 
 void setproctitle (const char *prog, const char *txt)
 {
-        int i;
+        size_t i;
         char buf[SPT_BUFSIZE];
 
         if (!argv0)
-- 
2.14.1


^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [PATCH] setproctitle: fix out of boundary access
  2017-09-25 19:55 [PATCH] setproctitle: fix out of boundary access Tobias Stoeckmann
@ 2017-09-26 10:12 ` Karel Zak
  0 siblings, 0 replies; 2+ messages in thread
From: Karel Zak @ 2017-09-26 10:12 UTC (permalink / raw)
  To: Tobias Stoeckmann; +Cc: util-linux

On Mon, Sep 25, 2017 at 09:55:34PM +0200, Tobias Stoeckmann wrote:
>  lib/setproctitle.c | 11 ++++++-----
>  1 file changed, 6 insertions(+), 5 deletions(-)

Applied, thanks.

-- 
 Karel Zak  <kzak@redhat.com>
 http://karelzak.blogspot.com

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2017-09-26 10:12 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-09-25 19:55 [PATCH] setproctitle: fix out of boundary access Tobias Stoeckmann
2017-09-26 10:12 ` Karel Zak

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.