RPM Package Manager, CVS Repository
  http://rpm5.org/cvs/
  ____________________________________________________________________________

  Server: rpm5.org                         Name:   Anders F. Björklund
  Root:   /v/rpm/cvs                       Email:  [EMAIL PROTECTED]
  Module: xar                              Date:   09-Nov-2007 01:00:08
  Branch: HEAD                             Handle: 2007110900000701

  Modified files:
    xar                     ChangeLog
    xar/lib                 darwinattr.c data.c
    xar/src                 xar.1

  Log:
    merge bugfixes from upstream

  Summary:
    Revision    Changes     Path
    1.10        +3  -0      xar/ChangeLog
    1.4         +27 -9      xar/lib/darwinattr.c
    1.3         +3  -1      xar/lib/data.c
    1.9         +4  -1      xar/src/xar.1
  ____________________________________________________________________________

  patch -p0 <<'@@ .'
  Index: xar/ChangeLog
  ============================================================================
  $ cvs diff -u -r1.9 -r1.10 ChangeLog
  --- xar/ChangeLog     24 Oct 2007 06:43:53 -0000      1.9
  +++ xar/ChangeLog     9 Nov 2007 00:00:07 -0000       1.10
  @@ -1,4 +1,7 @@
   devel
  +     2007-11-1 Dave Leimbach [EMAIL PROTECTED]
  +     * lib/data.c: fixed a file descriptor leak by adding a close before 
return
  +     * src/xar.1: Added man page text for --extract-subdoc
        2007-10-22 Rob Braun [EMAIL PROTECTED]
        * src/xar.c src/xar.1: Add -a as a synonym for --compression=lzma
        * lib/darwinattr.c lib/fbsdattr.c: Add --prop-exclude support for 
darwin and fbsd EAs.
  @@ .
  patch -p0 <<'@@ .'
  Index: xar/lib/darwinattr.c
  ============================================================================
  $ cvs diff -u -r1.3 -r1.4 darwinattr.c
  --- xar/lib/darwinattr.c      24 Oct 2007 06:43:53 -0000      1.3
  +++ xar/lib/darwinattr.c      9 Nov 2007 00:00:08 -0000       1.4
  @@ -502,13 +502,19 @@
        memset(&ash, 0, sizeof(ash));
        memset(&ase, 0, sizeof(ase));
        r = read(DARWINATTR_CONTEXT(context)->fd, &ash, XAR_ASH_SIZE);
  -     if( r < XAR_ASH_SIZE )
  +     if( r < XAR_ASH_SIZE ) {
  +             close(DARWINATTR_CONTEXT(context)->fd);
                return -1;
  +     }
   
  -     if( ntohl(ash.magic) != APPLEDOUBLE_MAGIC )
  +     if( ntohl(ash.magic) != APPLEDOUBLE_MAGIC ) {
  +             close(DARWINATTR_CONTEXT(context)->fd);
                return -1;
  -     if( ntohl(ash.version) != APPLEDOUBLE_VERSION )
  +     }
  +     if( ntohl(ash.version) != APPLEDOUBLE_VERSION ) {
  +             close(DARWINATTR_CONTEXT(context)->fd);
                return -1;
  +     }
   
        off = XAR_ASH_SIZE;
        num_entries = ntohs(ash.entries);
  @@ -516,36 +522,48 @@
        for(i = 0; i < num_entries; i++) {
                off_t entoff;
                r = read(DARWINATTR_CONTEXT(context)->fd, &ase, sizeof(ase));
  -             if( r < sizeof(ase) )
  +             if( r < sizeof(ase) ) {
  +                     close(DARWINATTR_CONTEXT(context)->fd);
                        return -1;
  +             }
                off+=r;
   
                if( ntohl(ase.entry_id) == AS_ID_FINDER ) {
                        xar_ea_t e;
                        entoff = (off_t)ntohl(ase.offset);
  -                     if( lseek(DARWINATTR_CONTEXT(context)->fd, entoff, 
SEEK_SET) == -1 )
  +                     if( lseek(DARWINATTR_CONTEXT(context)->fd, entoff, 
SEEK_SET) == -1 ) {
  +                             close(DARWINATTR_CONTEXT(context)->fd);
                                return -1;
  +                     }
                        r = read(DARWINATTR_CONTEXT(context)->fd, z, sizeof(z));
  -                     if( r < sizeof(z) )
  +                     if( r < sizeof(z) ) {
  +                             close(DARWINATTR_CONTEXT(context)->fd);
                                return -1;
  +                     }
                        
                        DARWINATTR_CONTEXT(context)->finfo = z;
                        e = xar_ea_new(f, "com.apple.FinderInfo");
                        xar_attrcopy_to_heap(x, f, xar_ea_root(e), finfo_read, 
context);
  -                     if( lseek(DARWINATTR_CONTEXT(context)->fd, (off_t)off, 
SEEK_SET) == -1 )
  +                     if( lseek(DARWINATTR_CONTEXT(context)->fd, (off_t)off, 
SEEK_SET) == -1 ) {
  +                             close(DARWINATTR_CONTEXT(context)->fd);
                                return -1;
  +                     }
                }
                if( ntohl(ase.entry_id) == AS_ID_RESOURCE ) {
                        xar_ea_t e;
                        entoff = (off_t)ntohl(ase.offset);
  -                     if( lseek(DARWINATTR_CONTEXT(context)->fd, entoff, 
SEEK_SET) == -1 )
  +                     if( lseek(DARWINATTR_CONTEXT(context)->fd, entoff, 
SEEK_SET) == -1 ) {
  +                             close(DARWINATTR_CONTEXT(context)->fd);
                                return -1;
  +                     }
   
                        e = xar_ea_new(f, "com.apple.ResourceFork");
                        xar_attrcopy_to_heap(x, f, xar_ea_root(e), 
xar_rsrc_read, context);
   
  -                     if( lseek(DARWINATTR_CONTEXT(context)->fd, (off_t)off, 
SEEK_SET) == -1 )
  +                     if( lseek(DARWINATTR_CONTEXT(context)->fd, (off_t)off, 
SEEK_SET) == -1 ) {
  +                             close(DARWINATTR_CONTEXT(context)->fd);
                                return -1;
  +                     }
                }
        }
   
  @@ .
  patch -p0 <<'@@ .'
  Index: xar/lib/data.c
  ============================================================================
  $ cvs diff -u -r1.2 -r1.3 data.c
  --- xar/lib/data.c    30 Aug 2007 18:35:45 -0000      1.2
  +++ xar/lib/data.c    9 Nov 2007 00:00:08 -0000       1.3
  @@ -238,8 +238,10 @@
        tmpp = xar_prop_pfirst(f);
        if( tmpp )
                tmpp = xar_prop_find(tmpp, "data");
  -     if( !tmpp )
  +     if( !tmpp ) {
  +             close(context.fd);
                return 0;
  +     }
        retval = xar_attrcopy_from_heap(x, f, tmpp, xar_data_write, (void 
*)(&context));
        
        if( context.fd > 0 ){           
  @@ .
  patch -p0 <<'@@ .'
  Index: xar/src/xar.1
  ============================================================================
  $ cvs diff -u -r1.8 -r1.9 xar.1
  --- xar/src/xar.1     24 Oct 2007 06:40:37 -0000      1.8
  +++ xar/src/xar.1     9 Nov 2007 00:00:08 -0000       1.9
  @@ -1,4 +1,4 @@
  -.TH XAR "1" "August 22, 2005" "version 1.4" "User Commands"
  +.TH XAR "1" "November 1, 2007" "version 1.6" "User Commands"
   .SH NAME
   xar \- eXtensible ARchiver
   .SH SYNOPSIS
  @@ -55,6 +55,9 @@
   \-\-dump\-header
   Has xar print out the xar binary header information to stdout.
   .TP
  +\-\-extract\-subdoc=<name> 
  +Extracts the specified subdocument to a document in cwd named <name>.xml
  +.TP
   \-\-list\-subdocs
   List the subdocuments in the xml header
   .TP
  @@ .
______________________________________________________________________
RPM Package Manager                                    http://rpm5.org
CVS Sources Repository                                rpm-cvs@rpm5.org

Reply via email to