On 08/12/20 at 01:36pm, lilydjwg wrote:
When a SIGINT or SIGHUP arrives before alpm_unlock (in alpm_release) but after remove_soft_interrupt_handler, the lock file will be left behind.
Signed-off-by: lilydjwg <lilydjwg@gmail.com> --- src/pacman/pacman.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/pacman/pacman.c b/src/pacman/pacman.c index fefd3fa4..2d2e41d2 100644 --- a/src/pacman/pacman.c +++ b/src/pacman/pacman.c @@ -287,7 +287,6 @@ static void setuseragent(void) */ static void cleanup(int ret) { - remove_soft_interrupt_handler(); if(config) { /* free alpm library resources */ if(config->handle && alpm_release(config->handle) == -1) { @@ -297,6 +296,7 @@ static void cleanup(int ret) config_free(config); config = NULL; }
The signal handler uses config->handle; this will segfault if a signal arrives between alpm_release and here.
+ remove_soft_interrupt_handler();
/* free memory */ FREELIST(pm_targets); -- 2.28.0