From 2a8514d8a5708c2c42c5b1f9fd20bb88e71ef880 Mon Sep 17 00:00:00 2001 From: Guillem Jover Date: Mon, 17 Jul 2017 00:57:07 +0200 Subject: [PATCH] Fix handling of non-contiguous argv + envp in setproctitle() The two arrays might not reference contiguous memory, and assuming they are does break at least now on GNU/Hurd, which contains an unmapped memory block between the memory used by the two arrays. Just check that each element is strictly after the previous one, so that we know there are no unmapped memory blocks inbetween. --- src/setproctitle.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/setproctitle.c b/src/setproctitle.c index c18c61c..038ac7d 100644 --- a/src/setproctitle.c +++ b/src/setproctitle.c @@ -173,14 +173,14 @@ setproctitle_init(int argc, char *argv[], char *envp[]) end = nul + 1; for (i = 0; i < argc || (i >= argc && argv[i]); i++) { - if (argv[i] == NULL || argv[i] < end) + if (argv[i] == NULL || argv[i] != end) continue; end = argv[i] + strlen(argv[i]) + 1; } for (i = 0; envp[i]; i++) { - if (envp[i] < end) + if (envp[i] != end) continue; end = envp[i] + strlen(envp[i]) + 1; -- 2.47.2