diff options
| author | Barton E. Schaefer <schaefer@zsh.org> | 2017-01-29 08:30:14 -0800 |
|---|---|---|
| committer | Barton E. Schaefer <schaefer@zsh.org> | 2017-01-29 08:30:14 -0800 |
| commit | e51c9c17af51e4055efb5a2cc36739d1d7ae457f (patch) | |
| tree | b77de131860f9f0d48ed0604d095a82c59665a1a /Src/glob.c | |
| parent | 40439: PAT_HEAPDUP definition just for clarity (diff) | |
| download | zsh-e51c9c17af51e4055efb5a2cc36739d1d7ae457f.tar zsh-e51c9c17af51e4055efb5a2cc36739d1d7ae457f.tar.gz zsh-e51c9c17af51e4055efb5a2cc36739d1d7ae457f.tar.bz2 zsh-e51c9c17af51e4055efb5a2cc36739d1d7ae457f.tar.lz zsh-e51c9c17af51e4055efb5a2cc36739d1d7ae457f.tar.xz zsh-e51c9c17af51e4055efb5a2cc36739d1d7ae457f.tar.zst zsh-e51c9c17af51e4055efb5a2cc36739d1d7ae457f.zip | |
40453: signal handler safety for callers of patcompile(PAT_STATIC), which is not re-entrant.
Diffstat (limited to 'Src/glob.c')
| -rw-r--r-- | Src/glob.c | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/Src/glob.c b/Src/glob.c index 623e6f1d6..ff6b2583b 100644 --- a/Src/glob.c +++ b/Src/glob.c @@ -2462,13 +2462,20 @@ xpandbraces(LinkList list, LinkNode *np) int matchpat(char *a, char *b) { - Patprog p = patcompile(b, PAT_STATIC, NULL); + Patprog p; + int ret; - if (!p) { + queue_signals(); /* Protect PAT_STATIC */ + + if (!(p = patcompile(b, PAT_STATIC, NULL))) { zerr("bad pattern: %s", b); - return 0; - } - return pattry(p, a); + ret = 0; + } else + ret = pattry(p, a); + + unqueue_signals(); + + return ret; } /* do the ${foo%%bar}, ${foo#bar} stuff */ |
