ash: fix incorrect path in describe_command
authorYoufu Zhang <zhangyoufu@gmail.com>
Fri, 26 May 2017 07:31:29 +0000 (15:31 +0800)
committerDenys Vlasenko <vda.linux@googlemail.com>
Fri, 26 May 2017 15:37:35 +0000 (17:37 +0200)
commit6683d1cbb44859f549f87f882545b84b9369585c
treea151695f4874f5bb8e2c23ef9b6f2fd4c744b62d
parent2599937c4e5012d8e410d58574d22dec92e6eaa5
ash: fix incorrect path in describe_command

$ PATH=/extra/path:/usr/sbin:/usr/bin:/sbin:/bin \
> busybox sh -xc 'command -V ls; command -V ls; command -Vp ls; command -vp ls'
+ command -V ls
ls is /bin/ls
+ command -V ls
ls is a tracked alias for /bin/ls
+ command -Vp ls
ls is a tracked alias for (null)
+ command -vp ls
Segmentation fault

describe_command should respect `path' argument. Looking up in the hash table
may gives incorrect index in entry.u.index and finally causes incorrect output
or SIGSEGV.

function                                             old     new   delta
describe_command                                     386     313     -73

Signed-off-by: Youfu Zhang <zhangyoufu@gmail.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
shell/ash.c