From 263a0c247620f86532424727f7ed07ca7540fbf3 Mon Sep 17 00:00:00 2001 From: Peter Stephenson Date: Tue, 9 May 2017 09:46:23 +0100 Subject: 41078: Empty psvar could cause bad dereference in prompt expansion --- ChangeLog | 5 +++++ Src/prompt.c | 2 +- Test/D01prompt.ztst | 4 ++++ 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 00e335f6c..82d4a7086 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2017-05-09 Peter Stephenson + + * 41078: Src/prompt.c, Test/D01prompt.ztst: Empty psvar could + cause bad reference in prompt expansion. + 2017-05-08 Peter Stephenson * 41059: Completion/compinit: use 2>&- to avoid error in diff --git a/Src/prompt.c b/Src/prompt.c index 29e006e0e..c478e69fb 100644 --- a/Src/prompt.c +++ b/Src/prompt.c @@ -399,7 +399,7 @@ putpromptchar(int doprint, int endchar, unsigned int *txtchangep) test = 1; break; case 'V': - if (arrlen_ge(psvar, arg)) { + if (psvar && *psvar && arrlen_ge(psvar, arg)) { if (*psvar[(arg ? arg : 1) - 1]) test = 1; } diff --git a/Test/D01prompt.ztst b/Test/D01prompt.ztst index 08187287d..11f18dc71 100644 --- a/Test/D01prompt.ztst +++ b/Test/D01prompt.ztst @@ -209,3 +209,7 @@ print -P -f '%%Sfoo%%s\n' bar 0:print -P -f >%Sfoo%s + + print ${(%U)Y-%(v} +0:Regression test for test on empty psvar +> -- cgit 1.4.1