]> granicus.if.org Git - neomutt/commitdiff
fix: Garbage in chdir prompt due to unescaped string
authorRichard Russon <rich@flatcap.org>
Sat, 11 Mar 2017 18:46:00 +0000 (18:46 +0000)
committerguiniol <gui-gui@netcourrier.com>
Sat, 11 Mar 2017 18:46:00 +0000 (19:46 +0100)
I upgraded one of my stable systems to stretch and noticed that when
changing the directory with 'c', there was some garbage at the end of
the string in the prompt. I've not noticed that before on my main
amd64 system, but this stable system is i386, so different alignment
and word size that can affect this kind of thing.

I tracked it down to an unescaped string handling.

Debian BTS#857433

browser.c

index 71bc65e5e154499d50016dfa22127cca8f18ee7b..96dee7d9069c1b3c556657c43e2fa293fdf2b08e 100644 (file)
--- a/browser.c
+++ b/browser.c
@@ -1577,9 +1577,12 @@ void _mutt_select_file (char *f, size_t flen, int flags, char ***files, int *num
 #endif
        {
          /* add '/' at the end of the directory name if not already there */
-         int len=mutt_strlen(LastDir);
-         if (len && LastDir[len-1] != '/' && sizeof (buf) > len)
-           buf[len]='/';
+         int len = mutt_strlen(buf);
+         if ((len > 0) && (buf[len - 1] != '/') && (sizeof(buf) > (len + 1)))
+         {
+           buf[len] = '/';
+           buf[len + 1] = '\0';
+         }
        }
 
        if (mutt_get_field (_("Chdir to: "), buf, sizeof (buf), MUTT_FILE) == 0 &&