RPM Package Manager, CVS Repository
http://rpm5.org/cvs/
____________________________________________________________________________
Server: rpm5.org Name: Anders F. Björklund
Root: /v/rpm/cvs Email: afb@rpm5.org
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 leimy2k@gmail.com
+ * 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 bbraun@synack.net
* 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
@@ .
Received on Fri Nov 9 01:00:08 2007