fix segmentation faul introduced with hugeSparse.patch
This commit is contained in:
parent
6bead2194d
commit
75cdd6bdb5
@ -1,5 +1,5 @@
|
|||||||
--- tar-1.15.1/src/sparse.c.hugeSparse 2006-03-22 13:18:53.000000000 -0500
|
--- tar-1.15.1/src/sparse.c.hugeSparse 2006-04-13 15:29:19.000000000 +0200
|
||||||
+++ tar-1.15.1/src/sparse.c 2006-03-22 13:24:54.000000000 -0500
|
+++ tar-1.15.1/src/sparse.c 2006-04-13 15:32:29.000000000 +0200
|
||||||
@@ -47,9 +47,9 @@
|
@@ -47,9 +47,9 @@
|
||||||
{
|
{
|
||||||
int fd; /* File descriptor */
|
int fd; /* File descriptor */
|
||||||
@ -231,11 +231,12 @@
|
|||||||
|
|
||||||
if (!sparse_select_optab (&file)
|
if (!sparse_select_optab (&file)
|
||||||
|| !tar_sparse_init (&file))
|
|| !tar_sparse_init (&file))
|
||||||
@@ -456,15 +434,14 @@
|
@@ -456,15 +434,15 @@
|
||||||
struct tar_sparse_file file;
|
struct tar_sparse_file file;
|
||||||
size_t i;
|
size_t i;
|
||||||
|
|
||||||
+ if (!tar_sparse_init (&file))
|
+ if (!sparse_select_optab (&file)
|
||||||
|
+ || !tar_sparse_init (&file))
|
||||||
+ return dump_status_not_implemented;
|
+ return dump_status_not_implemented;
|
||||||
+
|
+
|
||||||
file.stat_info = st;
|
file.stat_info = st;
|
||||||
@ -250,7 +251,7 @@
|
|||||||
rc = tar_sparse_decode_header (&file);
|
rc = tar_sparse_decode_header (&file);
|
||||||
for (i = 0; rc && i < file.stat_info->sparse_map_avail; i++)
|
for (i = 0; rc && i < file.stat_info->sparse_map_avail; i++)
|
||||||
rc = tar_sparse_extract_region (&file, i);
|
rc = tar_sparse_extract_region (&file, i);
|
||||||
@@ -491,8 +468,6 @@
|
@@ -491,8 +469,6 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -259,7 +260,7 @@
|
|||||||
static bool
|
static bool
|
||||||
check_sparse_region (struct tar_sparse_file *file, off_t beg, off_t end)
|
check_sparse_region (struct tar_sparse_file *file, off_t beg, off_t end)
|
||||||
{
|
{
|
||||||
@@ -502,11 +477,9 @@
|
@@ -502,11 +478,9 @@
|
||||||
while (beg < end)
|
while (beg < end)
|
||||||
{
|
{
|
||||||
size_t bytes_read;
|
size_t bytes_read;
|
||||||
@ -273,7 +274,7 @@
|
|||||||
bytes_read = safe_read (file->fd, diff_buffer, rdsize);
|
bytes_read = safe_read (file->fd, diff_buffer, rdsize);
|
||||||
if (bytes_read == SAFE_READ_ERROR)
|
if (bytes_read == SAFE_READ_ERROR)
|
||||||
{
|
{
|
||||||
@@ -539,6 +512,7 @@
|
@@ -539,6 +513,7 @@
|
||||||
{
|
{
|
||||||
size_t bytes_read;
|
size_t bytes_read;
|
||||||
size_t rdsize = (size_left > BLOCKSIZE) ? BLOCKSIZE : size_left;
|
size_t rdsize = (size_left > BLOCKSIZE) ? BLOCKSIZE : size_left;
|
||||||
@ -281,7 +282,7 @@
|
|||||||
|
|
||||||
union block *blk = find_next_block ();
|
union block *blk = find_next_block ();
|
||||||
if (!blk)
|
if (!blk)
|
||||||
@@ -551,9 +525,9 @@
|
@@ -551,9 +526,9 @@
|
||||||
if (bytes_read == SAFE_READ_ERROR)
|
if (bytes_read == SAFE_READ_ERROR)
|
||||||
{
|
{
|
||||||
read_diag_details (file->stat_info->orig_file_name,
|
read_diag_details (file->stat_info->orig_file_name,
|
||||||
@ -294,7 +295,7 @@
|
|||||||
rdsize);
|
rdsize);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -647,7 +621,7 @@
|
@@ -647,7 +622,7 @@
|
||||||
|| file->stat_info->archive_file_size < 0)
|
|| file->stat_info->archive_file_size < 0)
|
||||||
return add_fail;
|
return add_fail;
|
||||||
|
|
||||||
@ -303,7 +304,7 @@
|
|||||||
return add_ok;
|
return add_ok;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -669,7 +643,7 @@
|
@@ -669,7 +644,7 @@
|
||||||
size_t i;
|
size_t i;
|
||||||
union block *h = current_header;
|
union block *h = current_header;
|
||||||
int ext_p;
|
int ext_p;
|
||||||
@ -312,7 +313,7 @@
|
|||||||
|
|
||||||
file->stat_info->sparse_map_avail = 0;
|
file->stat_info->sparse_map_avail = 0;
|
||||||
for (i = 0; i < SPARSES_IN_OLDGNU_HEADER; i++)
|
for (i = 0; i < SPARSES_IN_OLDGNU_HEADER; i++)
|
||||||
@@ -756,7 +730,7 @@
|
@@ -756,7 +731,7 @@
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -321,7 +322,7 @@
|
|||||||
NULL, /* No init function */
|
NULL, /* No init function */
|
||||||
NULL, /* No done function */
|
NULL, /* No done function */
|
||||||
oldgnu_sparse_member_p,
|
oldgnu_sparse_member_p,
|
||||||
@@ -795,7 +769,7 @@
|
@@ -795,7 +770,7 @@
|
||||||
size_t i;
|
size_t i;
|
||||||
union block *h = current_header;
|
union block *h = current_header;
|
||||||
int ext_p;
|
int ext_p;
|
||||||
@ -330,7 +331,7 @@
|
|||||||
|
|
||||||
file->stat_info->sparse_map_avail = 0;
|
file->stat_info->sparse_map_avail = 0;
|
||||||
|
|
||||||
@@ -837,7 +811,7 @@
|
@@ -837,7 +812,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -339,7 +340,7 @@
|
|||||||
NULL, /* No init function */
|
NULL, /* No init function */
|
||||||
NULL, /* No done function */
|
NULL, /* No done function */
|
||||||
star_sparse_member_p,
|
star_sparse_member_p,
|
||||||
@@ -890,7 +864,7 @@
|
@@ -890,7 +865,7 @@
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
5
tar.spec
5
tar.spec
@ -1,7 +1,7 @@
|
|||||||
Summary: A GNU file archiving program.
|
Summary: A GNU file archiving program.
|
||||||
Name: tar
|
Name: tar
|
||||||
Version: 1.15.1
|
Version: 1.15.1
|
||||||
Release: 14
|
Release: 15
|
||||||
License: GPL
|
License: GPL
|
||||||
Group: Applications/Archiving
|
Group: Applications/Archiving
|
||||||
URL: http://www.gnu.org/software/tar/
|
URL: http://www.gnu.org/software/tar/
|
||||||
@ -119,6 +119,9 @@ fi
|
|||||||
%{_infodir}/tar.info*
|
%{_infodir}/tar.info*
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Thu Apr 13 2006 Peter Vrabec <pvrabec@redhat.com> 1.15.1-15
|
||||||
|
- fix segmentation faul introduced with hugeSparse.patch
|
||||||
|
|
||||||
* Wed Mar 22 2006 Peter Vrabec <pvrabec@redhat.com> 1.15.1-14
|
* Wed Mar 22 2006 Peter Vrabec <pvrabec@redhat.com> 1.15.1-14
|
||||||
- fix problems with extracting large sparse archive members (#185460)
|
- fix problems with extracting large sparse archive members (#185460)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user