summaryrefslogtreecommitdiffstats
path: root/lib/libarchive/archive_write_set_format_cpio_newc.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/libarchive/archive_write_set_format_cpio_newc.c')
-rw-r--r--lib/libarchive/archive_write_set_format_cpio_newc.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/lib/libarchive/archive_write_set_format_cpio_newc.c b/lib/libarchive/archive_write_set_format_cpio_newc.c
index 37dd35a..6580b52 100644
--- a/lib/libarchive/archive_write_set_format_cpio_newc.c
+++ b/lib/libarchive/archive_write_set_format_cpio_newc.c
@@ -176,9 +176,15 @@ archive_write_newc_header(struct archive_write *a, struct archive_entry *entry)
cpio->entry_bytes_remaining = archive_entry_size(entry);
cpio->padding = 3 & (-cpio->entry_bytes_remaining);
+
/* Write the symlink now. */
- if (p != NULL && *p != '\0')
+ if (p != NULL && *p != '\0') {
ret = (a->compressor.write)(a, p, strlen(p));
+ if (ret != ARCHIVE_OK)
+ return (ARCHIVE_FATAL);
+ pad = 0x3 & -strlen(p);
+ ret = (a->compressor.write)(a, "\0\0\0", pad);
+ }
return (ret);
}
OpenPOWER on IntegriCloud