Commit 2a8514d8 authored by Guillem Jover's avatar Guillem Jover

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.
parent 3b2b7938
......@@ -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;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment