Date: Tue, 24 Aug 2004 23:49:17 +0300 From: Giorgos Keramidas <keramida@ceid.upatras.gr> To: Sean McNeil <sean@mcneil.com> Cc: current@freebsd.org Subject: Re: bsdtar core dumps Message-ID: <20040824204917.GA3348@gothmog.gr> In-Reply-To: <1093377802.43728.11.camel@server.mcneil.com> References: <1092777586.92327.9.camel@server.mcneil.com> <1093369220.10362.6.camel@server.mcneil.com> <20040824200225.V517@beagle.kn.op.dlr.de> <1093371600.10464.23.camel@server.mcneil.com> <20040824205417.L517@beagle.kn.op.dlr.de> <1093377802.43728.11.camel@server.mcneil.com>
next in thread | previous in thread | raw e-mail | index | archive | help
Hi Sean,
Does the patch below also solve the problems with tar you were
experiencing?
On 2004-08-24 13:03, Sean McNeil <sean@mcneil.com> wrote:
> *** lib/libarchive/archive_string_sprintf.c.orig Fri Aug 13
> 20:45:45 2004--- lib/libarchive/archive_string_sprintf.c Tue Aug 24
> 12:58:24 2004
> *************** __archive_string_vsprintf(struct archive
> *** 47,65 ****
> va_list ap)
> {
> size_t l;
>
> if (fmt == NULL) {
> as->s[0] = 0;
> return;
> }
>
> l = vsnprintf(as->s, as->buffer_length, fmt, ap);
> /* If output is bigger than the buffer, resize and try again. */
> if (l+1 >= as->buffer_length) {
> __archive_string_ensure(as, l + 1);
> ! l = vsnprintf(as->s, as->buffer_length, fmt, ap);
> }
> as->length = l;
> }
>
> /*
> --- 47,68 ----
> va_list ap)
> {
> size_t l;
> + va_list ap1;
>
> if (fmt == NULL) {
> as->s[0] = 0;
> return;
> }
>
> + va_copy(ap1,ap);
> l = vsnprintf(as->s, as->buffer_length, fmt, ap);
> /* If output is bigger than the buffer, resize and try again. */
> if (l+1 >= as->buffer_length) {
> __archive_string_ensure(as, l + 1);
> ! l = vsnprintf(as->s, as->buffer_length, fmt, ap1);
> }
> as->length = l;
> + va_end(ap1);
> }
>
> /*
>
> *** lib/libc/stdio/vfprintf.c.orig Mon Aug 23 20:35:43 2004
> --- lib/libc/stdio/vfprintf.c Tue Aug 24 13:01:45 2004
> *************** error:
> *** 1237,1242 ****
> --- 1237,1243 ----
> if (dtoaresult != NULL)
> freedtoa(dtoaresult);
> #endif
> + va_end(orgap);
> if (convbuf != NULL)
> free(convbuf);
> if (__sferror(fp))
>
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20040824204917.GA3348>
