[email protected]
[Top] [All Lists]

Bug#516577: marked as forwarded (libarchive: skip segfaults when using

Subject: Bug#516577: marked as forwarded libarchive: skip segfaults when using archive_read_open
From: Debian Bug Tracking System
Date: Wed, 25 Feb 2009 05:42:06 +0000
Your message dated Tue, 24 Feb 2009 23:41:25 -0600
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

(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]

516577: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=516577
Debian Bug Tracking System
Contact [email protected] with problems
--- Begin Message ---
Subject: FW: Bug#516577: libarchive: skip segfaults when using archive_read_open
From: John Goerzen
Date: Tue, 24 Feb 2009 23:41:25 -0600

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.

-- John

----- 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

Package: libarchive1
Version: 2.6.1-1
Severity: serious
Tags: patch

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 
21:08:32.000000000 +0100
+++ b/libarchive-2.6.1/libarchive/archive_read.c        2009-02-22 
13:51:48.000000000 +0100
@@ -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 ---
<Prev in Thread] Current Thread [Next in Thread>