Your message dated Wed, 25 Feb 2009 21:24:38 -0800
with message-id <[email protected]>
has caused the report #516577,
regarding libarchive: skip segfaults when using archive_read_open
to be marked as having been forwarded to the upstream software
author(s) John Goerzen <[email protected]>
(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact [email protected]
Debian Bug Tracking System
Contact [email protected] with problems
--- Begin Message ---
Re: FW: Bug#516577: libarchive: skip segfaults when using archive_read_open
Wed, 25 Feb 2009 21:24:38 -0800
Bernhard's patch looks fine; you should feel free
to use that or you can update to libarchive 2.6.2
which includes this and three other very specific
Thanks as always for the reports.
John Goerzen wrote:
I received the below bug report in the Debian BTS. I recently
upgraded our unstable distribution from 2.4.x to 2.6.1, and it appears
to have started right after that.
----- Forwarded message from "Bernhard R. Link" <[email protected]> -----
From: "Bernhard R. Link" <[email protected]>
Date: Sun, 22 Feb 2009 14:05:33 +0100
Reply-To: "Bernhard R. Link" <[email protected]>, [email protected]
To: [email protected]
Subject: Bug#516577: libarchive: skip segfaults when using archive_read_open
When using the old archive_read_open function of libarchive, it calls
libarchive_read_open2 with skipper set to NULL. But that functions
always adds a function calling this one as skipper for source stream.
Which leads to segfaults when the program requests a skip.
I'm setting severity to serious to avoid it migrating to testing, as
it makes reprepro segfault, see #516515.
Attached is a patch which fixes the issue for me.
Bernhard R. Link
--- a/libarchive-2.6.1/libarchive/archive_read.c 2008-12-28
+++ b/libarchive-2.6.1/libarchive/archive_read.c 2009-02-22
@@ -189,7 +189,8 @@ archive_read_open2(struct archive *_a, v
source->archive = a;
source->data = client_data;
source->read = client_read_proxy;
- source->skip = client_skip_proxy;
+ if (a->client.skipper != NULL)
+ source->skip = client_skip_proxy;
source->close = client_close_proxy;
a->source = source;
----- End forwarded message -----
--- End Message ---