mirror of
https://github.com/RsyncProject/rsync.git
synced 2026-05-24 14:55:46 -04:00
Better fix for infinite recursion; don't return from exit_cleanup
unless the nesting is already pretty deep, because there are normal cases where exit_cleanup is nested shallowly. Patch from Marc Espie, posted by Brian Poole.
This commit is contained in:
2
NEWS
2
NEWS
@@ -69,7 +69,7 @@ rsync changes since last release
|
||||
broken. (Dave Dykstra)
|
||||
|
||||
* Prevent infinite recursion in cleanup code under certain circumstances.
|
||||
(Sviatoslav Sviridov)
|
||||
(Sviatoslav Sviridov and Marc Espie)
|
||||
|
||||
* Fixed a bug that prevented rsync from creating intervening directories
|
||||
when --relative-paths/-R is set. (Craig Barratt)
|
||||
|
||||
@@ -63,11 +63,11 @@ void _exit_cleanup(int code, const char *file, int line)
|
||||
extern int log_got_error;
|
||||
static int inside_cleanup = 0;
|
||||
|
||||
if (inside_cleanup != 0) {
|
||||
if (inside_cleanup > 10) {
|
||||
/* prevent the occasional infinite recursion */
|
||||
return;
|
||||
}
|
||||
inside_cleanup = 1;
|
||||
inside_cleanup++;
|
||||
|
||||
signal(SIGUSR1, SIG_IGN);
|
||||
signal(SIGUSR2, SIG_IGN);
|
||||
|
||||
Reference in New Issue
Block a user