Message ID | 20200812053607.1626325-1-lilydjwg@gmail.com |
---|---|
State | Superseded, archived |
Headers | show |
Series | [pacman-dev] lock file may be left behind when a signal arrives while in cleanup | expand |
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
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; } + remove_soft_interrupt_handler(); /* free memory */ FREELIST(pm_targets);
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(-)