[Samba] smbclient: Tar create to stdout produces a broken tarball
Marc Leuser
marc at mleuser.de
Mon May 2 15:23:03 UTC 2022
Hi everybody,
when running "smbclient -Tc -" to get the tarball to stdout, a debug
message that should be sent to stderr is sent to stdout instead, which
results in a broken archive. I'm testing version 4.15.2 on Alpine and
have two commands to reproduce this behaviour:
/usr/bin/smbclient \\\\servername\\C\$ -U Username -E -d 1 -c tarmode\
full -mSMB3 -Tc - \\something > smbdump.tar
PASSWD=passwordhere /usr/bin/smbclient \\\\servername\\C\$ -U Username
-E -d 1 -c tarmode\ full -mSMB3 -Tc - \\something > smbdump.tar
The first one puts "Password for [MYGROUP\Administrator]:" at the
beginning of the tarball, the second one puts "tarmode is now full,
system, hidden, noreset, noverbose" and a newline (0x0A). Initially i
thought it's related to a specific message, but it looks like there are
at least two of them. Interestingly, when i run the same commands with
debug levels 0-10, the resulting files are the same. So it appears that
it's also not just "the first debug message that gets printed".
Since the environment i'm encountering this bug in is Docker-based, i
was able to quickly hop between versions and was able to narrow the
scope down to two versions of smbclient i had available. 4.12.15 is
still working, 4.14.5 has the breakage in it. Another observation is
that the working version prints several messages to stderr which appear
on the console, while the broken versions seem to print nothing to
stderr at all. I've tried sifting through the source code and revisions
but now i'm a bit lost. The only thing i found was that there seems to
be no test for this specific case, which explains why it wasn't spotted.
Can someone else confirm this bug? And can somebody with a better
overview of the codebase maybe spot why it's there?
Best Regards
Marc Leuser
More information about the samba
mailing list