test_acl_text.c (313926) | test_acl_text.c (315432) |
---|---|
1/*- 2 * Copyright (c) 2016 Martin Matuska 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 1. Redistributions of source code must retain the above copyright --- 9 unchanged lines hidden (view full) --- 18 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 19 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 20 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 21 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 22 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 23 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 24 */ 25#include "test.h" | 1/*- 2 * Copyright (c) 2016 Martin Matuska 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 1. Redistributions of source code must retain the above copyright --- 9 unchanged lines hidden (view full) --- 18 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 19 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 20 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 21 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 22 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 23 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 24 */ 25#include "test.h" |
26__FBSDID("$FreeBSD: stable/11/contrib/libarchive/libarchive/test/test_acl_text.c 313926 2017-02-18 21:58:56Z mm $"); | 26__FBSDID("$FreeBSD: stable/11/contrib/libarchive/libarchive/test/test_acl_text.c 315432 2017-03-16 23:07:35Z mm $"); |
27 28/* 29 * Test converting ACLs to text, both wide and non-wide 30 * 31 * This should work on all systems, regardless of whether local 32 * filesystems support ACLs or not. 33 */ 34 --- 242 unchanged lines hidden (view full) --- 277 278 /* Create an empty archive_entry. */ 279 assert((ae = archive_entry_new()) != NULL); 280 281 /* 1a. Read POSIX.1e access ACLs from text */ 282 assertEqualInt(ARCHIVE_OK, 283 archive_entry_acl_from_text(ae, acltext[5], 284 ARCHIVE_ENTRY_ACL_TYPE_ACCESS)); | 27 28/* 29 * Test converting ACLs to text, both wide and non-wide 30 * 31 * This should work on all systems, regardless of whether local 32 * filesystems support ACLs or not. 33 */ 34 --- 242 unchanged lines hidden (view full) --- 277 278 /* Create an empty archive_entry. */ 279 assert((ae = archive_entry_new()) != NULL); 280 281 /* 1a. Read POSIX.1e access ACLs from text */ 282 assertEqualInt(ARCHIVE_OK, 283 archive_entry_acl_from_text(ae, acltext[5], 284 ARCHIVE_ENTRY_ACL_TYPE_ACCESS)); |
285 archive_test_compare_acls(ae, acls0, sizeof(acls0)/sizeof(acls0[0]), | 285 assertEntryCompareAcls(ae, acls0, sizeof(acls0)/sizeof(acls0[0]), |
286 ARCHIVE_ENTRY_ACL_TYPE_ACCESS, 0755); 287 assertEqualInt(6, archive_entry_acl_reset(ae, 288 ARCHIVE_ENTRY_ACL_TYPE_ACCESS)); 289 290 /* 1b. Now read POSIX.1e default ACLs and append them */ 291 assertEqualInt(ARCHIVE_OK, 292 archive_entry_acl_from_text(ae, acltext[7], 293 ARCHIVE_ENTRY_ACL_TYPE_DEFAULT)); | 286 ARCHIVE_ENTRY_ACL_TYPE_ACCESS, 0755); 287 assertEqualInt(6, archive_entry_acl_reset(ae, 288 ARCHIVE_ENTRY_ACL_TYPE_ACCESS)); 289 290 /* 1b. Now read POSIX.1e default ACLs and append them */ 291 assertEqualInt(ARCHIVE_OK, 292 archive_entry_acl_from_text(ae, acltext[7], 293 ARCHIVE_ENTRY_ACL_TYPE_DEFAULT)); |
294 archive_test_compare_acls(ae, acls0, sizeof(acls0)/sizeof(acls0[0]), | 294 assertEntryCompareAcls(ae, acls0, sizeof(acls0)/sizeof(acls0[0]), |
295 ARCHIVE_ENTRY_ACL_TYPE_POSIX1E, 0755); 296 assertEqualInt(11, archive_entry_acl_reset(ae, 297 ARCHIVE_ENTRY_ACL_TYPE_POSIX1E)); 298 archive_entry_acl_clear(ae); 299 300 /* 1a and 1b with wide strings */ 301 ws = convert_s_to_ws(acltext[5]); 302 303 assertEqualInt(ARCHIVE_OK, 304 archive_entry_acl_from_text_w(ae, ws, 305 ARCHIVE_ENTRY_ACL_TYPE_ACCESS)); | 295 ARCHIVE_ENTRY_ACL_TYPE_POSIX1E, 0755); 296 assertEqualInt(11, archive_entry_acl_reset(ae, 297 ARCHIVE_ENTRY_ACL_TYPE_POSIX1E)); 298 archive_entry_acl_clear(ae); 299 300 /* 1a and 1b with wide strings */ 301 ws = convert_s_to_ws(acltext[5]); 302 303 assertEqualInt(ARCHIVE_OK, 304 archive_entry_acl_from_text_w(ae, ws, 305 ARCHIVE_ENTRY_ACL_TYPE_ACCESS)); |
306 archive_test_compare_acls(ae, acls0, sizeof(acls0)/sizeof(acls0[0]), | 306 assertEntryCompareAcls(ae, acls0, sizeof(acls0)/sizeof(acls0[0]), |
307 ARCHIVE_ENTRY_ACL_TYPE_ACCESS, 0755); 308 assertEqualInt(6, archive_entry_acl_reset(ae, 309 ARCHIVE_ENTRY_ACL_TYPE_ACCESS)); 310 311 free(ws); 312 ws = convert_s_to_ws(acltext[7]); 313 314 assertEqualInt(ARCHIVE_OK, 315 archive_entry_acl_from_text_w(ae, ws, 316 ARCHIVE_ENTRY_ACL_TYPE_DEFAULT)); | 307 ARCHIVE_ENTRY_ACL_TYPE_ACCESS, 0755); 308 assertEqualInt(6, archive_entry_acl_reset(ae, 309 ARCHIVE_ENTRY_ACL_TYPE_ACCESS)); 310 311 free(ws); 312 ws = convert_s_to_ws(acltext[7]); 313 314 assertEqualInt(ARCHIVE_OK, 315 archive_entry_acl_from_text_w(ae, ws, 316 ARCHIVE_ENTRY_ACL_TYPE_DEFAULT)); |
317 archive_test_compare_acls(ae, acls0, sizeof(acls0)/sizeof(acls0[0]), | 317 assertEntryCompareAcls(ae, acls0, sizeof(acls0)/sizeof(acls0[0]), |
318 ARCHIVE_ENTRY_ACL_TYPE_POSIX1E, 0755); 319 assertEqualInt(11, archive_entry_acl_reset(ae, 320 ARCHIVE_ENTRY_ACL_TYPE_POSIX1E)); 321 archive_entry_acl_clear(ae); 322 323 /* 2. Read POSIX.1e default ACLs from text */ 324 assertEqualInt(ARCHIVE_OK, 325 archive_entry_acl_from_text(ae, acltext[7], 326 ARCHIVE_ENTRY_ACL_TYPE_DEFAULT)); | 318 ARCHIVE_ENTRY_ACL_TYPE_POSIX1E, 0755); 319 assertEqualInt(11, archive_entry_acl_reset(ae, 320 ARCHIVE_ENTRY_ACL_TYPE_POSIX1E)); 321 archive_entry_acl_clear(ae); 322 323 /* 2. Read POSIX.1e default ACLs from text */ 324 assertEqualInt(ARCHIVE_OK, 325 archive_entry_acl_from_text(ae, acltext[7], 326 ARCHIVE_ENTRY_ACL_TYPE_DEFAULT)); |
327 archive_test_compare_acls(ae, acls0, sizeof(acls0)/sizeof(acls0[0]), | 327 assertEntryCompareAcls(ae, acls0, sizeof(acls0)/sizeof(acls0[0]), |
328 ARCHIVE_ENTRY_ACL_TYPE_DEFAULT, 0); 329 assertEqualInt(5, archive_entry_acl_reset(ae, 330 ARCHIVE_ENTRY_ACL_TYPE_DEFAULT)); 331 archive_entry_acl_clear(ae); 332 333 /* ws is still acltext[7] */ 334 assertEqualInt(ARCHIVE_OK, 335 archive_entry_acl_from_text_w(ae, ws, 336 ARCHIVE_ENTRY_ACL_TYPE_DEFAULT)); | 328 ARCHIVE_ENTRY_ACL_TYPE_DEFAULT, 0); 329 assertEqualInt(5, archive_entry_acl_reset(ae, 330 ARCHIVE_ENTRY_ACL_TYPE_DEFAULT)); 331 archive_entry_acl_clear(ae); 332 333 /* ws is still acltext[7] */ 334 assertEqualInt(ARCHIVE_OK, 335 archive_entry_acl_from_text_w(ae, ws, 336 ARCHIVE_ENTRY_ACL_TYPE_DEFAULT)); |
337 archive_test_compare_acls(ae, acls0, sizeof(acls0)/sizeof(acls0[0]), | 337 assertEntryCompareAcls(ae, acls0, sizeof(acls0)/sizeof(acls0[0]), |
338 ARCHIVE_ENTRY_ACL_TYPE_DEFAULT, 0); 339 assertEqualInt(5, archive_entry_acl_reset(ae, 340 ARCHIVE_ENTRY_ACL_TYPE_DEFAULT)); 341 archive_entry_acl_clear(ae); 342 343 /* 3. Read POSIX.1e access and default ACLs from text */ 344 assertEqualInt(ARCHIVE_OK, 345 archive_entry_acl_from_text(ae, acltext[1], 346 ARCHIVE_ENTRY_ACL_TYPE_POSIX1E)); | 338 ARCHIVE_ENTRY_ACL_TYPE_DEFAULT, 0); 339 assertEqualInt(5, archive_entry_acl_reset(ae, 340 ARCHIVE_ENTRY_ACL_TYPE_DEFAULT)); 341 archive_entry_acl_clear(ae); 342 343 /* 3. Read POSIX.1e access and default ACLs from text */ 344 assertEqualInt(ARCHIVE_OK, 345 archive_entry_acl_from_text(ae, acltext[1], 346 ARCHIVE_ENTRY_ACL_TYPE_POSIX1E)); |
347 archive_test_compare_acls(ae, acls0, sizeof(acls0)/sizeof(acls0[0]), | 347 assertEntryCompareAcls(ae, acls0, sizeof(acls0)/sizeof(acls0[0]), |
348 ARCHIVE_ENTRY_ACL_TYPE_POSIX1E, 0755); 349 assertEqualInt(11, archive_entry_acl_reset(ae, 350 ARCHIVE_ENTRY_ACL_TYPE_POSIX1E)); 351 archive_entry_acl_clear(ae); 352 353 free(ws); 354 ws = convert_s_to_ws(acltext[1]); 355 assertEqualInt(ARCHIVE_OK, 356 archive_entry_acl_from_text_w(ae, ws, 357 ARCHIVE_ENTRY_ACL_TYPE_POSIX1E)); | 348 ARCHIVE_ENTRY_ACL_TYPE_POSIX1E, 0755); 349 assertEqualInt(11, archive_entry_acl_reset(ae, 350 ARCHIVE_ENTRY_ACL_TYPE_POSIX1E)); 351 archive_entry_acl_clear(ae); 352 353 free(ws); 354 ws = convert_s_to_ws(acltext[1]); 355 assertEqualInt(ARCHIVE_OK, 356 archive_entry_acl_from_text_w(ae, ws, 357 ARCHIVE_ENTRY_ACL_TYPE_POSIX1E)); |
358 archive_test_compare_acls(ae, acls0, sizeof(acls0)/sizeof(acls0[0]), | 358 assertEntryCompareAcls(ae, acls0, sizeof(acls0)/sizeof(acls0[0]), |
359 ARCHIVE_ENTRY_ACL_TYPE_POSIX1E, 0755); 360 assertEqualInt(11, archive_entry_acl_reset(ae, 361 ARCHIVE_ENTRY_ACL_TYPE_POSIX1E)); 362 archive_entry_acl_clear(ae); 363 364 /* 4. Read POSIX.1e access and default ACLs from text (short form) */ 365 assertEqualInt(ARCHIVE_OK, 366 archive_entry_acl_from_text(ae, acltext[2], 367 ARCHIVE_ENTRY_ACL_TYPE_POSIX1E)); | 359 ARCHIVE_ENTRY_ACL_TYPE_POSIX1E, 0755); 360 assertEqualInt(11, archive_entry_acl_reset(ae, 361 ARCHIVE_ENTRY_ACL_TYPE_POSIX1E)); 362 archive_entry_acl_clear(ae); 363 364 /* 4. Read POSIX.1e access and default ACLs from text (short form) */ 365 assertEqualInt(ARCHIVE_OK, 366 archive_entry_acl_from_text(ae, acltext[2], 367 ARCHIVE_ENTRY_ACL_TYPE_POSIX1E)); |
368 archive_test_compare_acls(ae, acls0, sizeof(acls0)/sizeof(acls0[0]), | 368 assertEntryCompareAcls(ae, acls0, sizeof(acls0)/sizeof(acls0[0]), |
369 ARCHIVE_ENTRY_ACL_TYPE_POSIX1E, 0755); 370 assertEqualInt(11, archive_entry_acl_reset(ae, 371 ARCHIVE_ENTRY_ACL_TYPE_POSIX1E)); 372 archive_entry_acl_clear(ae); 373 374 free(ws); 375 ws = convert_s_to_ws(acltext[2]); 376 assertEqualInt(ARCHIVE_OK, 377 archive_entry_acl_from_text_w(ae, ws, 378 ARCHIVE_ENTRY_ACL_TYPE_POSIX1E)); | 369 ARCHIVE_ENTRY_ACL_TYPE_POSIX1E, 0755); 370 assertEqualInt(11, archive_entry_acl_reset(ae, 371 ARCHIVE_ENTRY_ACL_TYPE_POSIX1E)); 372 archive_entry_acl_clear(ae); 373 374 free(ws); 375 ws = convert_s_to_ws(acltext[2]); 376 assertEqualInt(ARCHIVE_OK, 377 archive_entry_acl_from_text_w(ae, ws, 378 ARCHIVE_ENTRY_ACL_TYPE_POSIX1E)); |
379 archive_test_compare_acls(ae, acls0, sizeof(acls0)/sizeof(acls0[0]), | 379 assertEntryCompareAcls(ae, acls0, sizeof(acls0)/sizeof(acls0[0]), |
380 ARCHIVE_ENTRY_ACL_TYPE_POSIX1E, 0755); 381 assertEqualInt(11, archive_entry_acl_reset(ae, 382 ARCHIVE_ENTRY_ACL_TYPE_POSIX1E)); 383 archive_entry_acl_clear(ae); 384 385 /* 5. Read NFSv4 ACLs from text */ 386 assertEqualInt(ARCHIVE_OK, 387 archive_entry_acl_from_text(ae, acltext[10], 388 ARCHIVE_ENTRY_ACL_TYPE_NFS4)); | 380 ARCHIVE_ENTRY_ACL_TYPE_POSIX1E, 0755); 381 assertEqualInt(11, archive_entry_acl_reset(ae, 382 ARCHIVE_ENTRY_ACL_TYPE_POSIX1E)); 383 archive_entry_acl_clear(ae); 384 385 /* 5. Read NFSv4 ACLs from text */ 386 assertEqualInt(ARCHIVE_OK, 387 archive_entry_acl_from_text(ae, acltext[10], 388 ARCHIVE_ENTRY_ACL_TYPE_NFS4)); |
389 archive_test_compare_acls(ae, acls1, sizeof(acls1)/sizeof(acls1[0]), | 389 assertEntryCompareAcls(ae, acls1, sizeof(acls1)/sizeof(acls1[0]), |
390 ARCHIVE_ENTRY_ACL_TYPE_NFS4, 0); 391 assertEqualInt(6, archive_entry_acl_reset(ae, 392 ARCHIVE_ENTRY_ACL_TYPE_NFS4)); 393 archive_entry_acl_clear(ae); 394 395 free(ws); 396 ws = convert_s_to_ws(acltext[10]); 397 398 assertEqualInt(ARCHIVE_OK, 399 archive_entry_acl_from_text_w(ae, ws, 400 ARCHIVE_ENTRY_ACL_TYPE_NFS4)); | 390 ARCHIVE_ENTRY_ACL_TYPE_NFS4, 0); 391 assertEqualInt(6, archive_entry_acl_reset(ae, 392 ARCHIVE_ENTRY_ACL_TYPE_NFS4)); 393 archive_entry_acl_clear(ae); 394 395 free(ws); 396 ws = convert_s_to_ws(acltext[10]); 397 398 assertEqualInt(ARCHIVE_OK, 399 archive_entry_acl_from_text_w(ae, ws, 400 ARCHIVE_ENTRY_ACL_TYPE_NFS4)); |
401 archive_test_compare_acls(ae, acls1, sizeof(acls1)/sizeof(acls1[0]), | 401 assertEntryCompareAcls(ae, acls1, sizeof(acls1)/sizeof(acls1[0]), |
402 ARCHIVE_ENTRY_ACL_TYPE_NFS4, 0); 403 assertEqualInt(6, archive_entry_acl_reset(ae, 404 ARCHIVE_ENTRY_ACL_TYPE_NFS4)); 405 archive_entry_acl_clear(ae); 406 407 free(ws); 408 archive_entry_free(ae); 409} 410 411DEFINE_TEST(test_acl_to_text) 412{ 413 struct archive_entry *ae; 414 415 /* Create an empty archive_entry. */ 416 assert((ae = archive_entry_new()) != NULL); 417 418 /* Write POSIX.1e ACLs */ | 402 ARCHIVE_ENTRY_ACL_TYPE_NFS4, 0); 403 assertEqualInt(6, archive_entry_acl_reset(ae, 404 ARCHIVE_ENTRY_ACL_TYPE_NFS4)); 405 archive_entry_acl_clear(ae); 406 407 free(ws); 408 archive_entry_free(ae); 409} 410 411DEFINE_TEST(test_acl_to_text) 412{ 413 struct archive_entry *ae; 414 415 /* Create an empty archive_entry. */ 416 assert((ae = archive_entry_new()) != NULL); 417 418 /* Write POSIX.1e ACLs */ |
419 archive_test_set_acls(ae, acls0, sizeof(acls0)/sizeof(acls0[0])); | 419 assertEntrySetAcls(ae, acls0, sizeof(acls0)/sizeof(acls0[0])); |
420 421 /* No flags should give output like getfacl(1) on linux */ 422 compare_acl_text(ae, 0, acltext[0]); 423 424 /* This should give the same output as previous test */ 425 compare_acl_text(ae, ARCHIVE_ENTRY_ACL_TYPE_ACCESS | 426 ARCHIVE_ENTRY_ACL_TYPE_DEFAULT, acltext[0]); 427 --- 24 unchanged lines hidden (view full) --- 452 compare_acl_text(ae, ARCHIVE_ENTRY_ACL_TYPE_DEFAULT | 453 ARCHIVE_ENTRY_ACL_STYLE_EXTRA_ID, acltext[7]); 454 455 /* POSIX.1e default acls prefixed with default: */ 456 compare_acl_text(ae, ARCHIVE_ENTRY_ACL_TYPE_DEFAULT | 457 ARCHIVE_ENTRY_ACL_STYLE_MARK_DEFAULT, acltext[8]); 458 459 /* Write NFSv4 ACLs */ | 420 421 /* No flags should give output like getfacl(1) on linux */ 422 compare_acl_text(ae, 0, acltext[0]); 423 424 /* This should give the same output as previous test */ 425 compare_acl_text(ae, ARCHIVE_ENTRY_ACL_TYPE_ACCESS | 426 ARCHIVE_ENTRY_ACL_TYPE_DEFAULT, acltext[0]); 427 --- 24 unchanged lines hidden (view full) --- 452 compare_acl_text(ae, ARCHIVE_ENTRY_ACL_TYPE_DEFAULT | 453 ARCHIVE_ENTRY_ACL_STYLE_EXTRA_ID, acltext[7]); 454 455 /* POSIX.1e default acls prefixed with default: */ 456 compare_acl_text(ae, ARCHIVE_ENTRY_ACL_TYPE_DEFAULT | 457 ARCHIVE_ENTRY_ACL_STYLE_MARK_DEFAULT, acltext[8]); 458 459 /* Write NFSv4 ACLs */ |
460 archive_test_set_acls(ae, acls1, sizeof(acls1)/sizeof(acls1[0])); | 460 assertEntrySetAcls(ae, acls1, sizeof(acls1)/sizeof(acls1[0])); |
461 462 /* NFSv4 ACLs like getfacl(1) on FreeBSD */ 463 compare_acl_text(ae, 0, acltext[9]); 464 465 /* NFSv4 ACLs like "getfacl -i" on FreeBSD */ 466 compare_acl_text(ae, ARCHIVE_ENTRY_ACL_STYLE_EXTRA_ID, acltext[10]); 467 468 /* NFSv4 ACLs like "getfacl -i" on FreeBSD with stripped minus chars */ 469 compare_acl_text(ae, ARCHIVE_ENTRY_ACL_STYLE_EXTRA_ID | 470 ARCHIVE_ENTRY_ACL_STYLE_COMPACT, acltext[11]); 471 472 archive_entry_free(ae); 473} | 461 462 /* NFSv4 ACLs like getfacl(1) on FreeBSD */ 463 compare_acl_text(ae, 0, acltext[9]); 464 465 /* NFSv4 ACLs like "getfacl -i" on FreeBSD */ 466 compare_acl_text(ae, ARCHIVE_ENTRY_ACL_STYLE_EXTRA_ID, acltext[10]); 467 468 /* NFSv4 ACLs like "getfacl -i" on FreeBSD with stripped minus chars */ 469 compare_acl_text(ae, ARCHIVE_ENTRY_ACL_STYLE_EXTRA_ID | 470 ARCHIVE_ENTRY_ACL_STYLE_COMPACT, acltext[11]); 471 472 archive_entry_free(ae); 473} |