From 6d61a3859ecdcd2813a5d2f06393208fa2feb399 Mon Sep 17 00:00:00 2001 From: Peter Stephenson Date: Wed, 2 Aug 2006 17:16:37 +0000 Subject: 22578: ensure HISTCHARS/histchars never contains non-ASCII characters --- Src/params.c | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) (limited to 'Src/params.c') diff --git a/Src/params.c b/Src/params.c index 17ce2c54d..e3040fb7f 100644 --- a/Src/params.c +++ b/Src/params.c @@ -3548,10 +3548,21 @@ void histcharssetfn(UNUSED(Param pm), char *x) { if (x) { - bangchar = x[0]; - hatchar = (bangchar) ? x[1] : '\0'; - hashchar = (hatchar) ? x[2] : '\0'; - zsfree(x); + int len, i; + + unmetafy(x, &len); + if (len > 3) + len = 3; + for (i = 0; i < len; i++) { + if (!isascii(STOUC(x[i]))) { + zwarn("HISTCHARS can only contain ASCII characters"); + return; + } + } + bangchar = len ? STOUC(x[0]) : '\0'; + hatchar = len > 1 ? STOUC(x[1]) : '\0'; + hashchar = len > 2 ? STOUC(x[2]) : '\0'; + free(x); } else { bangchar = '!'; hashchar = '#'; -- cgit 1.4.1