From hjl@innovix.com Sun Apr 28 02:33:46 BST 1996
Article: 392 of linux.dev.gcc
Xref: detached.demon.co.uk linux.dev.gcc:392
Newsgroups: linux.dev.gcc
Path: detached.demon.co.uk!news.demon.co.uk!dispatch.news.demon.net!demon!news.uoregon.edu!news1.mpcs.com!park.uvsc.edu!ratatosk.yggdrasil.com!vger.gate.yggdrasil.com!not-for-mail
Approved: linux-gcc@vger.rutgers.edu
X-Env-Sender: owner-linux-gcc-outgoing@vger.rutgers.edu
Message-ID: <m0uAHko-0000WMC@eric.innovix.com>
X-Hdr-Sender: hjl@innovix.com 
From: hjl@innovix.com (H.J. Lu)
Subject: Re: segv in tar w libc 5.3.x (?) (fwd)
Date: Fri, 19 Apr 1996 08:05:45 -0700 (PDT)
Content-Type: text
Sender: owner-linux-gcc@vger.rutgers.edu
Lines: 75

I am tired of this. I hope someone will send this guy,
anders@it.kth.se, a note next time before I do :-(.

BTW, after my server is up and running, I will put those bug
fixes on my web server if I have the time :-(.

H.J.
----
Forwarded message:
>From vger.rutgers.edu!owner-linux-gcc-outgoing Tue Apr  9 05:20:16 1996
Date: 	Tue, 9 Apr 1996 13:19:59 +0200
Message-Id: <199604091119.NAA11758@md.dent.med.uni-muenchen.de>
From: Wolfram Gloger <Wolfram.Gloger@dent.med.uni-muenchen.de>
To: veliaa@rpi.edu
Cc: linux-gcc@vger.rutgers.edu
In-Reply-To: <199604090657.CAA04855@fugue.rpi.edu> (message from Andrew
	Veliath on Tue, 9 Apr 1996 02:57:28 -0400)
Subject: Re: segv in tar w libc 5.3.x (?)
Sender: owner-linux-gcc@vger.rutgers.edu
Precedence: bulk

I had a look at this before Xmas, and sent a patch to gnu.utils.bug
that will be in the next version of tar.  It's appended below.

Regards,
Wolfram.

--- tar-1.11.8/src/buffer.c.orig	Mon May 29 02:26:27 1995
+++ tar-1.11.8/src/buffer.c	Fri Dec 22 15:56:47 1995
@@ -933,18 +933,18 @@
   if (flag_multivol)
     if (save_name)
       {
-	if (save_name != real_s_name)
-	  {
+	char *cursor = save_name;
+
 #ifdef __MSDOS__
-	    if (save_name[1] == ':')
-	      save_name += 2;
+	if (cursor[1] == ':')
+	  cursor += 2;
 #endif
-	    while (*save_name == '/')
-	      save_name++;
+	while (*cursor == '/')
+	  cursor++;
 
-	    strcpy (real_s_name, save_name);
-	    save_name = real_s_name;
-	  }
+	strcpy (real_s_name, cursor);
+	/* Is the following really necessary ? */
+	assign_string(&save_name, real_s_name);
 	real_s_totsize = save_totsize;
 	real_s_sizeleft = save_sizeleft;
       }
@@ -1274,8 +1274,7 @@
     free (current_file_name);
   if (current_link_name)
     free (current_link_name);
-  if (save_name)
-    free (save_name);
+  assign_string(&save_name, NULL);
   free (flag_multivol ? ar_block - 2 : ar_block);
 }
 



-- 
H.J. Lu
Innovix Technologies, Inc.
hjl@innovix.com



