Package: libarchive1
Version: 2.8.4-1
Severity: normal

In libarchive/archive_read_disk_entry_from_file.c, there is code
to retrieve ext2 extended file attributes (see chattr(8)) from
regular files and directories but it is not enabled because of
some missing #includes.

Enabling it should only be a matter of applying the patch below
(though you'd probably  wants to also add test code) which seems
to work as expected.

--- libarchive/archive_read_disk_entry_from_file.c~     2011-02-28 
16:55:27.000000000 +0000
+++ libarchive/archive_read_disk_entry_from_file.c      2011-02-28 
16:55:52.501888288 +0000
@@ -26,6 +26,7 @@
 #include "archive_platform.h"
 __FBSDID("$FreeBSD: head/lib/libarchive/archive_read_disk_entry_from_file.c 
201084 2009-12-28 02:14:09Z kientzle $");
 
+#include <fcntl.h>
 #ifdef HAVE_SYS_TYPES_H
 /* Mac OSX requires sys/types.h before sys/acl.h. */
 #include <sys/types.h>
@@ -33,6 +34,9 @@ __FBSDID("$FreeBSD: head/lib/libarchive/
 #ifdef HAVE_SYS_ACL_H
 #include <sys/acl.h>
 #endif
+#ifdef HAVE_SYS_IOCTL_H
+#include <sys/ioctl.h>
+#endif
 #ifdef HAVE_SYS_EXTATTR_H
 #include <sys/extattr.h>
 #endif
@@ -45,6 +49,16 @@ __FBSDID("$FreeBSD: head/lib/libarchive/
 #ifdef HAVE_SYS_XATTR_H
 #include <sys/xattr.h>
 #endif
+/*
+ * Some Linux distributions have both linux/ext2_fs.h and ext2fs/ext2_fs.h.
+ * As the include guards don't agree, the order of include is important.
+ */
+#ifdef HAVE_LINUX_EXT2_FS_H
+#include <linux/ext2_fs.h>     /* for Linux file flags */
+#endif
+#if defined(HAVE_EXT2FS_EXT2_FS_H) && !defined(__CYGWIN__)
+#include <ext2fs/ext2_fs.h>    /* Linux file flags, broken on Cygwin */
+#endif
 #ifdef HAVE_ACL_LIBACL_H
 #include <acl/libacl.h>
 #endif
@@ -76,6 +90,10 @@ __FBSDID("$FreeBSD: head/lib/libarchive/
 #define        ACL_GET_PERM acl_get_perm_np
 #endif
 
+#ifndef O_BINARY
+#define O_BINARY 0
+#endif
+
 static int setup_acls_posix1e(struct archive_read_disk *,
     struct archive_entry *, int fd);
 static int setup_xattrs(struct archive_read_disk *,
@@ -103,7 +121,7 @@ archive_read_disk_entry_from_file(struct
         * open file descriptor which we can use in the subsequent lookups. */
        if ((S_ISREG(st->st_mode) || S_ISDIR(st->st_mode))) {
                if (fd < 0)
-                       fd = open(pathname, O_RDONLY | O_NONBLOCK | O_BINARY);
+                       fd = open(path, O_RDONLY | O_NONBLOCK | O_BINARY);
                if (fd >= 0) {
                        unsigned long stflags;
                        int r = ioctl(fd, EXT2_IOC_GETFLAGS, &stflags);

-- System Information:
Debian Release: wheezy/sid
  APT prefers unstable
  APT policy: (500, 'unstable'), (1, 'experimental')
Architecture: amd64 (x86_64)

Kernel: Linux 2.6.37-1-amd64 (SMP w/2 CPU cores)
Locale: LANG=en_GB.utf8, LC_CTYPE=en_GB.utf8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash

Versions of packages libarchive1 depends on:
ii  libattr1                1:2.4.44-2       Extended attribute shared library
ii  libc6                   2.11.2-11        Embedded GNU C Library: Shared lib
ii  libxml2                 2.7.8.dfsg-2     GNOME XML library
ii  zlib1g                  1:1.2.3.4.dfsg-3 compression library - runtime

libarchive1 recommends no packages.

libarchive1 suggests no packages.

-- no debconf information



-- 
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org

Reply via email to