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