sh: Do not consider a tilde-prefix with expansions in it.
That is, do not do tilde expansion if any of the CTL* bytes (\201-\210), not only CTLESC and CTLQUOTEMARK, are encountered. Such an expansion would look up a user name with sh's internal representation. The parser does not currently distinguish between backslashed and unbackslashed \201-\210, so tilde expansion of user names with these bytes in them is not so easy to fix.
This commit is contained in:
parent
10a290af39
commit
05c10507e9
@ -271,8 +271,13 @@ exptilde(char *p, int flag)
|
||||
|
||||
while ((c = *p) != '\0') {
|
||||
switch(c) {
|
||||
case CTLESC:
|
||||
return (startp);
|
||||
case CTLESC: /* This means CTL* are always considered quoted. */
|
||||
case CTLVAR:
|
||||
case CTLENDVAR:
|
||||
case CTLBACKQ:
|
||||
case CTLBACKQ | CTLQUOTE:
|
||||
case CTLARI:
|
||||
case CTLENDARI:
|
||||
case CTLQUOTEMARK:
|
||||
return (startp);
|
||||
case ':':
|
||||
|
Loading…
Reference in New Issue
Block a user