SEGV on FreeBSD 4.8-STABLE with 2.6.2

Wayne Davison wayned at samba.org
Mon May 3 01:26:16 GMT 2004


On Sun, May 02, 2004 at 03:33:03PM -0500, Albert Chin wrote:
> I'm getting a SEGV on a FreeBSD 4.8-STABLE box. The client is Solaris
> 9/SPARC. Both boxes run 2.6.2.
> 
> The command I'm running is:
>   $ rsync -arHRv --numeric-ids --delete --exclude=/opt/dist/cdrom \
>   [paths] [server]:[path]
> 
> If I whittle down what appears in [paths], then it works.

When the --delete option iterates over all the specified [paths] it
clears the delete-file_list after each one.  This makes the "lastdir"
pointer no longer valid.  The appended patch fixes this bug and also
a similar bug that could affect the batch code.

Thanks for the report.

..wayne..
-------------- next part --------------
--- flist.c	29 Apr 2004 19:37:15 -0000	1.218
+++ flist.c	3 May 2004 01:24:10 -0000	1.220
@@ -539,6 +539,7 @@ void receive_file_entry(struct file_stru
 		rdev_major = 0;
 		uid = 0, gid = 0;
 		*lastname = '\0';
+		lastdir_len = -1;
 		return;
 	}
 
@@ -745,7 +746,7 @@ struct file_struct *make_file(char *fnam
 	char *basename, *dirname, *bp;
 	unsigned short flags = 0;
 
-	if (!flist)	/* lastdir isn't valid if flist is NULL */
+	if (!flist || !flist->count)	/* Ignore lastdir when invalid. */
 		lastdir_len = -1;
 
 	if (strlcpy(thisname, fname, sizeof thisname)


More information about the rsync mailing list