[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bash interprets ~ in PATH - not compatible with exec*()
From: |
egmont |
Subject: |
bash interprets ~ in PATH - not compatible with exec*() |
Date: |
Sun, 24 Nov 2002 13:55:03 +0100 (CET) |
Configuration Information [Automatically generated, do not change]:
Machine: i386
OS: linux-gnu
Compiler: gcc
Compilation CFLAGS: -DPROGRAM='bash' -DCONF_HOSTTYPE='i386'
-DCONF_OSTYPE='linux-gnu' -DCONF_MACHTYPE='i386-pc-linux-gnu'
-DCONF_VENDOR='pc' -DSHELL -DHAVE_CONFIG_H -I.
-I/home/doko/packages/bash/bash-2.05a
-I/home/doko/packages/bash/bash-2.05a/include
-I/home/doko/packages/bash/bash-2.05a/lib -g -O2
uname output: Linux sziami 2.4.18 #1 SMP Mon Nov 18 17:04:42 CET 2002 i686
unknown
Machine Type: i386-pc-linux-gnu
Bash Version: 2.05a
Patch Level: 0
Release Status: release
Description:
Bash interpretes ~ and ~username in PATH. This is incompatible with the
behaviour of exec*p() library calls, which - obviously - do not do so.
This can cause a lot of trouble to the user who sets PATH to e.g.
"~/bin:otherdirectories", as s/he will believe his/her PATH is okay, bash
finds executables under his/her home slash bin, but applications different
from bash executing other applications won't see this component of PATH.
Tested on two systems:
Debian GNU/Linux 3.0 (bash 2.05a, glibc 2.2.5, gcc 2.95.4)
UHU Linux 1.0-rc2 (bash 2.05b, glibc 2.3.1, gcc 3.2.1)
strace clearly shows on both systems that if PATH contains '~/bin' then an
execlp() call tries to execve() '~/bin/executablename', without expanding '~'.
However, on both systems, bash finds the executables under your home slash bin.
Repeat-By:
<should be trivial to repeat>
Fix:
bash should not expand ~ characters in PATH, to be compatible with exec*p(),
and not to make the user believe s/he has a correct PATH when s/he doesn't
have.
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- bash interprets ~ in PATH - not compatible with exec*(),
egmont <=