Lines 178-183
Link Here
|
178 |
assert(S_ISDIR(st.st_mode)); |
178 |
assert(S_ISDIR(st.st_mode)); |
179 |
archive_entry_free(ae); |
179 |
archive_entry_free(ae); |
180 |
|
180 |
|
|
|
181 |
/* |
182 |
* Without security checks, we should be able to |
183 |
* extract an absolute path. |
184 |
*/ |
185 |
assert((ae = archive_entry_new()) != NULL); |
186 |
archive_entry_copy_pathname(ae, "/tmp/libarchive_test-test_write_disk_secure-absolute_path.tmp"); |
187 |
archive_entry_set_mode(ae, S_IFREG | 0777); |
188 |
assert(0 == archive_write_header(a, ae)); |
189 |
assert(0 == archive_write_finish_entry(a)); |
190 |
assertFileExists("/tmp/libarchive_test-test_write_disk_secure-absolute_path.tmp"); |
191 |
assert(0 == unlink("/tmp/libarchive_test-test_write_disk_secure-absolute_path.tmp")); |
192 |
|
193 |
/* But with security checks enabled, this should fail. */ |
194 |
assert(archive_entry_clear(ae) != NULL); |
195 |
archive_entry_copy_pathname(ae, "/tmp/libarchive_test-test_write_disk_secure-absolute_path.tmp"); |
196 |
archive_entry_set_mode(ae, S_IFREG | 0777); |
197 |
archive_write_disk_set_options(a, ARCHIVE_EXTRACT_SECURE_NOABSOLUTEPATHS); |
198 |
failure("Extracting an absolute path should fail here."); |
199 |
assertEqualInt(ARCHIVE_FAILED, archive_write_header(a, ae)); |
200 |
archive_entry_free(ae); |
201 |
assert(0 == archive_write_finish_entry(a)); |
202 |
assertFileNotExists("/tmp/libarchive_test-test_write_disk_secure-absolute_path.tmp"); |
203 |
|
181 |
assertEqualInt(ARCHIVE_OK, archive_write_free(a)); |
204 |
assertEqualInt(ARCHIVE_OK, archive_write_free(a)); |
182 |
|
205 |
|
183 |
/* Test the entries on disk. */ |
206 |
/* Test the entries on disk. */ |