From 4e35283a8b2c4b816b7aec821c719378a1ef10a6 Mon Sep 17 00:00:00 2001 From: Jeremy Allison Date: Mon, 26 Mar 2001 22:34:25 +0000 Subject: Fix for smbtar race condition from Glenn Burkhardt . Jeremy. (This used to be commit 0c9a92a0557b2595e520cbaf2feaa587f9e7502d) --- source3/client/clitar.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'source3/client/clitar.c') diff --git a/source3/client/clitar.c b/source3/client/clitar.c index fe0fc83e4c..f6e0423025 100644 --- a/source3/client/clitar.c +++ b/source3/client/clitar.c @@ -729,6 +729,17 @@ static void do_atar(char *rname,char *lname,file_info *finfo1) break; } + nread += datalen; + + /* if file size has increased since we made file size query, truncate + read so tar header for this file will be correct. + */ + + if (nread > finfo.size) { + datalen -= nread - finfo.size; + DEBUG(0,("File size change - truncating %s to %d bytes\n", finfo.name, (int)finfo.size)); + } + /* add received bits of file to buffer - dotarbuf will * write out in 512 byte intervals */ if (dotarbuf(tarhandle,data,datalen) != datalen) { @@ -736,7 +747,6 @@ static void do_atar(char *rname,char *lname,file_info *finfo1) break; } - nread += datalen; if (datalen == 0) { DEBUG(0,("Error reading file %s. Got 0 bytes\n", rname)); break; -- cgit