diff options
author | Michihiro NAKAJIMA <ggcueroad@gmail.com> | 2011-03-18 15:58:06 -0400 |
---|---|---|
committer | Michihiro NAKAJIMA <ggcueroad@gmail.com> | 2011-03-18 15:58:06 -0400 |
commit | 511f36a504b22eac10baf343048e337b7dbf4df6 (patch) | |
tree | 3f38df867db58442c2ef38a03774d4bdf4f238d9 /libarchive/archive_write_set_format_mtree.c | |
parent | de2299acc3c6b2a81e3a23c76f9f8451b95092bc (diff) | |
download | libarchive-511f36a504b22eac10baf343048e337b7dbf4df6.tar.gz |
Do not process sum if a file is not a regular file.
Fix r3028.
SVN-Revision: 3030
Diffstat (limited to 'libarchive/archive_write_set_format_mtree.c')
-rw-r--r-- | libarchive/archive_write_set_format_mtree.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/libarchive/archive_write_set_format_mtree.c b/libarchive/archive_write_set_format_mtree.c index c014f825..f10afe30 100644 --- a/libarchive/archive_write_set_format_mtree.c +++ b/libarchive/archive_write_set_format_mtree.c @@ -966,7 +966,8 @@ write_entry(struct archive_write *a, struct mtree_entry *me) } /* Write a bunch of sum. */ - sum_write(mtree, str, me); + if (me->filetype == AE_IFREG) + sum_write(mtree, str, me); archive_strcat(str, "\n"); if (mtree->indent) @@ -1012,7 +1013,8 @@ archive_write_mtree_finish_entry(struct archive_write *a) return (ARCHIVE_OK); mtree->mtree_entry = NULL; - sum_final(mtree, me); + if (me->filetype == AE_IFREG) + sum_final(mtree, me); if (mtree->set.output) { if (!mtree->dironly) { @@ -1072,7 +1074,8 @@ archive_write_mtree_data(struct archive_write *a, const void *buff, size_t n) if (mtree->mtree_entry == NULL) return (n); - sum_update(mtree, buff, n); + if (mtree->mtree_entry->filetype == AE_IFREG) + sum_update(mtree, buff, n); return (n); } |