Package: rsyncrypto
Version: 1.13-1
Severity: serious
Tags: patch upstream
Justification: crash on basic functionality

Dear maintainer,

I have recently been exposed to rsyncrypto through a client of my
work's, and have encountered a crash when using rsyncrypto to refresh an
encrypted directory tree with --delete enabled.

This happens because of an infinite recursion in autofd::unlink():

https://sources.debian.org/src/rsyncrypto/1.13-1/autofd.h/#L217

static int unlink(const char *pathname)
{
    bool success=unlink( pathname )==0;
    [...]
}

I came up with the following patch which simply calls unlink() in the
top scope. This seems to fix the problem for me:

--- rsyncrypto-1.14.orig/autofd.h
+++ rsyncrypto-1.14/autofd.h
@@ -216,7 +216,7 @@ public:
     // unless it failed with ENOENT - the file already doesn't exist
     static int unlink(const char *pathname)
     {
-        bool success=unlink( pathname )==0;
+        bool success=::unlink( pathname )==0;
         if( !success && errno!=ENOENT )
             throw rscerror("Erasing file", errno, pathname );
 

This affects 1.13-1 and 1.14-1 in Debian in the same way. Please let me
know if you would like any further information.

Best regards,
Chris

-- System Information:
Debian Release: buster/sid
  APT prefers unstable-debug
  APT policy: (500, 'unstable-debug'), (500, 'testing-debug'), (500, 
'testing'), (100, 'unstable')
Architecture: amd64 (x86_64)

Kernel: Linux 4.13.0-1-amd64 (SMP w/8 CPU cores)
Locale: LANG=en_GB.UTF-8, LC_CTYPE=en_GB.UTF-8 (charmap=UTF-8), 
LANGUAGE=en_GB:en (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)

Versions of packages rsyncrypto depends on:
ii  gzip            1.6-5+b1
pn  libargtable2-0  <none>
ii  libc6           2.25-3
ii  libgcc1         1:7.2.0-17
ii  libssl1.1       1.1.0g-2
ii  libstdc++6      7.2.0-17

Versions of packages rsyncrypto recommends:
ii  rsync  3.1.2-2

rsyncrypto suggests no packages.

Reply via email to