]> git.ipfire.org Git - thirdparty/libarchive.git/commitdiff
Issue 675: SIGRTMAX can be non-constant, so allocate the signal tracking array at...
authorTim Kientzle <kientzle@gmail.com>
Wed, 23 Mar 2016 03:28:42 +0000 (20:28 -0700)
committerTim Kientzle <kientzle@gmail.com>
Wed, 23 Mar 2016 03:28:42 +0000 (20:28 -0700)
libarchive_fe/passphrase.c

index c9eaba641eaae5a100a0aff9e7156bce02eb7758..1eae0b888bcd3d78799bffbccc04bd2348e5477a 100644 (file)
@@ -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;