|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
091b7b5 |
Index: libarchive-2.8.4/libarchive/archive_read_support_format_iso9660.c
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
091b7b5 |
===================================================================
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
091b7b5 |
--- libarchive-2.8.4/libarchive/archive_read_support_format_iso9660.c
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
091b7b5 |
+++ libarchive-2.8.4/libarchive/archive_read_support_format_iso9660.c 2012-01-01 03:11:38.424123879 +0200
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
@@ -405,12 +405,12 @@
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
static inline void cache_add_to_next_of_parent(struct iso9660 *iso9660,
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
struct file_info *file);
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
static inline struct file_info *cache_get_entry(struct iso9660 *iso9660);
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
-static void heap_add_entry(struct heap_queue *heap,
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
+static int heap_add_entry(struct archive_read *a, struct heap_queue *heap,
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
struct file_info *file, uint64_t key);
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
static struct file_info *heap_get_entry(struct heap_queue *heap);
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
-#define add_entry(iso9660, file) \
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
- heap_add_entry(&((iso9660)->pending_files), file, file->offset)
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
+#define add_entry(arch, iso9660, file) \
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
+ heap_add_entry(arch, &((iso9660)->pending_files), file, file->offset)
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
#define next_entry(iso9660) \
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
heap_get_entry(&((iso9660)->pending_files))
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
091b7b5 |
@@ -967,10 +967,11 @@
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
091b7b5 |
child = parse_file_info(a, parent, p);
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
if (child == NULL)
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
return (ARCHIVE_FATAL);
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
091b7b5 |
- if (child->cl_offset)
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
- heap_add_entry(&(iso9660->cl_files),
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
- child, child->cl_offset);
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
091b7b5 |
- else {
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
091b7b5 |
+ if (child->cl_offset) {
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
+ if (heap_add_entry(a, &(iso9660->cl_files),
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
+ child, child->cl_offset) != ARCHIVE_OK)
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
+ return (ARCHIVE_FATAL);
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
091b7b5 |
+ } else {
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
if (child->multi_extent || multi != NULL) {
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
struct content *con;
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
091b7b5 |
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
@@ -993,15 +994,19 @@
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
con->next = NULL;
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
*multi->contents.last = con;
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
multi->contents.last = &(con->next);
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
- if (multi == child)
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
- add_entry(iso9660, child);
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
- else {
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
+ if (multi == child) {
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
+ if (add_entry(a, iso9660, child)
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
+ != ARCHIVE_OK)
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
+ return (ARCHIVE_FATAL);
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
+ } else {
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
multi->size += child->size;
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
if (!child->multi_extent)
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
multi = NULL;
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
}
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
} else
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
- add_entry(iso9660, child);
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
+ if (add_entry(a, iso9660, child)
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
+ != ARCHIVE_OK)
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
+ return (ARCHIVE_FATAL);
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
}
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
}
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
}
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
@@ -1014,7 +1019,8 @@
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
}
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
static int
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
-relocate_dir(struct iso9660 *iso9660, struct file_info *file)
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
+relocate_dir(struct archive_read *a, struct iso9660 *iso9660,
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
+ struct file_info *file)
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
{
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
struct file_info *re;
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
@@ -1036,7 +1042,9 @@
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
return (1);
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
} else
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
/* This case is wrong pattern. */
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
- heap_add_entry(&(iso9660->re_dirs), re, re->offset);
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
+ if (heap_add_entry(a, &(iso9660->re_dirs), re, re->offset)
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
+ != ARCHIVE_OK)
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
+ return (ARCHIVE_FATAL);
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
return (0);
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
}
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
091b7b5 |
@@ -1062,21 +1070,24 @@
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
091b7b5 |
(strcmp(file->name.s, "rr_moved") == 0 ||
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
strcmp(file->name.s, ".rr_moved") == 0)) {
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
iso9660->rr_moved = file;
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
091b7b5 |
- } else if (file->re)
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
- heap_add_entry(&(iso9660->re_dirs), file,
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
- file->offset);
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
091b7b5 |
- else
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
091b7b5 |
+ } else if (file->re) {
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
+ if (heap_add_entry(a, &(iso9660->re_dirs), file,
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
+ file->offset) != ARCHIVE_OK)
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
+ return (ARCHIVE_FATAL);
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
091b7b5 |
+ } else
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
cache_add_entry(iso9660, file);
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
}
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
if (file != NULL)
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
- add_entry(iso9660, file);
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
+ if (add_entry(a, iso9660, file) != ARCHIVE_OK)
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
+ return (ARCHIVE_FATAL);
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
if (iso9660->rr_moved != NULL) {
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
/*
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
* Relocate directory which rr_moved has.
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
*/
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
while ((file = heap_get_entry(&(iso9660->cl_files))) != NULL)
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
- relocate_dir(iso9660, file);
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
+ if (relocate_dir(a, iso9660, file) != ARCHIVE_OK)
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
+ return ARCHIVE_FATAL;
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
/* If rr_moved directory still has children,
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
* Add rr_moved into pending_files to show
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
@@ -1192,7 +1203,8 @@
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
iso9660->seenJoliet = seenJoliet;
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
}
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
/* Store the root directory in the pending list. */
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
- add_entry(iso9660, file);
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
+ if (add_entry(a, iso9660, file) != ARCHIVE_OK)
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
+ return (ARCHIVE_FATAL);
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
if (iso9660->seenRockridge) {
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
a->archive.archive_format =
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
ARCHIVE_FORMAT_ISO9660_ROCKRIDGE;
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
@@ -2619,8 +2631,8 @@
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
return (file);
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
}
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
-static void
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
-heap_add_entry(struct heap_queue *heap, struct file_info *file, uint64_t key)
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
+static int
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
+heap_add_entry(struct archive_read *a, struct heap_queue *heap, struct file_info *file, uint64_t key)
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
{
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
uint64_t file_key, parent_key;
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
int hole, parent;
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
@@ -2633,12 +2645,18 @@
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
if (heap->allocated < 1024)
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
new_size = 1024;
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
/* Overflow might keep us from growing the list. */
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
- if (new_size <= heap->allocated)
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
- __archive_errx(1, "Out of memory");
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
+ if (new_size <= heap->allocated) {
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
+ archive_set_error(&a->archive,
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
+ ENOMEM, "Out of memory");
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
+ return (ARCHIVE_FATAL);
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
+ }
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
new_pending_files = (struct file_info **)
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
malloc(new_size * sizeof(new_pending_files[0]));
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
- if (new_pending_files == NULL)
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
- __archive_errx(1, "Out of memory");
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
+ if (new_pending_files == NULL) {
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
+ archive_set_error(&a->archive,
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
+ ENOMEM, "Out of memory");
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
+ return (ARCHIVE_FATAL);
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
+ }
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
memcpy(new_pending_files, heap->files,
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
heap->allocated * sizeof(new_pending_files[0]));
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
if (heap->files != NULL)
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
091b7b5 |
@@ -2658,13 +2676,15 @@
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
091b7b5 |
parent_key = heap->files[parent]->key;
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
091b7b5 |
if (file_key >= parent_key) {
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
091b7b5 |
heap->files[hole] = file;
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
091b7b5 |
- return;
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
091b7b5 |
+ return (ARCHIVE_OK);
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
091b7b5 |
}
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
091b7b5 |
// Move parent into hole <==> move hole up tree.
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
091b7b5 |
heap->files[hole] = heap->files[parent];
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
hole = parent;
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
}
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
heap->files[0] = file;
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
+
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
+ return (ARCHIVE_OK);
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
}
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
|
|
![](https://seccdn.libravatar.org/avatar/1add0424c4b748a675c22e2dff83b5ab87aa48948bd7ce5bda21d3039d660010?s=16&d=retro) |
133909d |
static struct file_info *
|