diff options
Diffstat (limited to 'lib/libarchive/archive_write_set_format_cpio_newc.c')
-rw-r--r-- | lib/libarchive/archive_write_set_format_cpio_newc.c | 8 |
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); } |