https://github.com/cyrusimap/cyrus-imapd/issues/2850 filled Argv[0] by '\0' instead of ' ' by default used memset() instead of loop (better optimized by the compiler) diff --git a/imap/setproctitle.c b/imap/setproctitle.c index 4eb2b3139..3f5fb4614 100644 --- a/imap/setproctitle.c +++ b/imap/setproctitle.c @@ -196,7 +196,7 @@ typedef unsigned int *pt_entry_t; # endif # ifndef SPT_PADCHAR -# define SPT_PADCHAR ' ' +# define SPT_PADCHAR '\0' # endif # ifndef SPT_BUFSIZE @@ -278,10 +278,9 @@ setproctitle(const char *fmt __attribute__((__unused__)), ...) i = LastArgv - Argv[0] - 2; buf[i] = '\0'; } + memset(Argv[0], SPT_PADCHAR, LastArgv - Argv[0]); (void) strcpy(Argv[0], buf); - p = &Argv[0][i]; - while (p < LastArgv) - *p++ = SPT_PADCHAR; + Argv[1] = NULL; # endif # endif /* SPT_TYPE != SPT_NONE */