bug-bash
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

PS1 expansion of \W incorrect for short paths


From: Cameron Hutchison
Subject: PS1 expansion of \W incorrect for short paths
Date: Tue, 18 Jan 2011 14:41:29 +1100
User-agent: Mutt/1.5.18 (2008-05-17)

Configuration Information [Automatically generated, do not change]:
Machine: x86_64
OS: linux-gnu
Compiler: gcc
Compilation CFLAGS:  -DPROGRAM='bash' -DCONF_HOSTTYPE='x86_64' 
-DCONF_OSTYPE='linux-gnu' -DCONF_MACHTYPE='x86_64-pc-linux-gnu' 
-DCONF_VENDOR='pc' -DLOCALEDIR='/usr/share/locale' -DPACKAGE='bash' -DSHELL 
-DHAVE_CONFIG_H   -I.  -I../bash -I../bash/include -I../bash/lib   -g -O2 -Wall
uname output: Linux balrog 2.6.37-balrog-1-00002-gaf41dc2 #2 SMP PREEMPT Tue 
Jan 18 11:16:08 EST 2011 x86_64 GNU/Linux
Machine Type: x86_64-pc-linux-gnu

Bash Version: 4.1
Patch Level: 5
Release Status: release

Description:
        Prompt expansion of \W sometimes produces garbage prompts.

Repeat-By:
        $ PS1='\W$ '
        ~$ cd /home
        hmee$ cd /proc
        pocc$ cd /lib32
        li332$

Fix:
        In parse.y : decode_prompt_string() in the 'W' case, it uses strcpy
        to copy the basename of the path to the beginning of the string.
        For short strings, the src and dest args to strcpy may overlap
        which is not supported by strcpy.
        
        memmove should be used instead.
        
        change
                strcpy (t_string, t + 1);
        to
                memmove (t_string, t + 1, strlen(t + 1) + 1);
        
        (untested)




reply via email to

[Prev in Thread] Current Thread [Next in Thread]