Tighten up the semantics of acl_next() and xattr_next() when you
hit the end of the ACL or xattr list. Thanks to: Jeff Johnson for pointing out the obvious typo
This commit is contained in:
parent
826055b6a8
commit
c2247d3995
@ -1124,6 +1124,11 @@ archive_entry_acl_next(struct archive_entry *entry, int want_type, int *type,
|
||||
entry->acl_p = entry->acl_p->next;
|
||||
if (entry->acl_p == NULL) {
|
||||
entry->acl_state = 0;
|
||||
*type = 0;
|
||||
*permset = 0;
|
||||
*tag = 0;
|
||||
*id = -1;
|
||||
*name = NULL;
|
||||
return (ARCHIVE_EOF); /* End of ACL entries. */
|
||||
}
|
||||
*type = entry->acl_p->type;
|
||||
|
@ -213,10 +213,16 @@ DEFINE_TEST(test_entry)
|
||||
assertEqualInt(1, archive_entry_xattr_count(e));
|
||||
assertEqualInt(ARCHIVE_WARN,
|
||||
archive_entry_xattr_next(e, &xname, &xval, &xsize));
|
||||
assertEqualString(xname, NULL);
|
||||
assertEqualString(xval, NULL);
|
||||
assertEqualInt(xsize, 0);
|
||||
archive_entry_xattr_clear(e);
|
||||
assertEqualInt(0, archive_entry_xattr_reset(e));
|
||||
assertEqualInt(ARCHIVE_WARN,
|
||||
archive_entry_xattr_next(e, &xname, &xval, &xsize));
|
||||
assertEqualString(xname, NULL);
|
||||
assertEqualString(xval, NULL);
|
||||
assertEqualInt(xsize, 0);
|
||||
archive_entry_xattr_add_entry(e, "xattr1", "xattrvalue1", 12);
|
||||
assertEqualInt(1, archive_entry_xattr_reset(e));
|
||||
archive_entry_xattr_add_entry(e, "xattr2", "xattrvalue2", 12);
|
||||
@ -225,6 +231,9 @@ DEFINE_TEST(test_entry)
|
||||
assertEqualInt(0, archive_entry_xattr_next(e, &xname, &xval, &xsize));
|
||||
assertEqualInt(ARCHIVE_WARN,
|
||||
archive_entry_xattr_next(e, &xname, &xval, &xsize));
|
||||
assertEqualString(xname, NULL);
|
||||
assertEqualString(xval, NULL);
|
||||
assertEqualInt(xsize, 0);
|
||||
|
||||
|
||||
/*
|
||||
@ -348,6 +357,11 @@ DEFINE_TEST(test_entry)
|
||||
assertEqualString(xname, "xattr1");
|
||||
assertEqualString(xval, "xattrvalue");
|
||||
assertEqualInt(xsize, 11);
|
||||
assertEqualInt(ARCHIVE_WARN,
|
||||
archive_entry_xattr_next(e2, &xname, &xval, &xsize));
|
||||
assertEqualString(xname, NULL);
|
||||
assertEqualString(xval, NULL);
|
||||
assertEqualInt(xsize, 0);
|
||||
#endif
|
||||
|
||||
/* Change the original */
|
||||
@ -453,6 +467,14 @@ DEFINE_TEST(test_entry)
|
||||
assertEqualInt(tag, ARCHIVE_ENTRY_ACL_USER);
|
||||
assertEqualInt(qual, 77);
|
||||
assertEqualString(name, "user77");
|
||||
assertEqualInt(1, archive_entry_acl_next(e2,
|
||||
ARCHIVE_ENTRY_ACL_TYPE_ACCESS,
|
||||
&type, &permset, &tag, &qual, &name));
|
||||
assertEqualInt(type, 0);
|
||||
assertEqualInt(permset, 0);
|
||||
assertEqualInt(tag, 0);
|
||||
assertEqualInt(qual, -1);
|
||||
assertEqualString(name, NULL);
|
||||
#endif
|
||||
#if ARCHIVE_VERSION_STAMP < 1009000
|
||||
skipping("xattr preserved in archive_entry copy");
|
||||
|
Loading…
x
Reference in New Issue
Block a user