diff options
Diffstat (limited to 'libarchive_fe')
-rw-r--r-- | libarchive_fe/passphrase.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/libarchive_fe/passphrase.c b/libarchive_fe/passphrase.c index c9eaba64..1eae0b88 100644 --- a/libarchive_fe/passphrase.c +++ b/libarchive_fe/passphrase.c @@ -142,12 +142,11 @@ readpassphrase(const char *prompt, char *buf, size_t bufsiz, int flags) # define _POSIX_VDISABLE VDISABLE #endif -static volatile sig_atomic_t signo[SIGRTMAX]; +static volatile sig_atomic_t *signo; static void handler(int s) { - signo[s] = 1; } @@ -167,6 +166,10 @@ readpassphrase(const char *prompt, char *buf, size_t bufsiz, int flags) return(NULL); } + if (signo == NULL) { + signo = calloc(SIGRTMAX, sizeof(sig_atomic_t)); + } + restart: for (i = 0; i < SIGRTMAX; i++) signo[i] = 0; |