diff options
author | Alessandro Ghedini <alessandro@ghedini.me> | 2015-03-01 12:07:45 +0100 |
---|---|---|
committer | Alessandro Ghedini <alessandro@ghedini.me> | 2015-03-04 18:44:03 +0100 |
commit | 59357157706d47c365b2227739e17daba3607526 (patch) | |
tree | e0cd9555ae8549b31d64c81f45f9381f550376b1 /cpio | |
parent | fc04ba0941fed6b55fa5b90858e1104c8c937d72 (diff) | |
download | libarchive-59357157706d47c365b2227739e17daba3607526.tar.gz |
Add ARCHIVE_EXTRACT_SECURE_NOABSOLUTEPATHS option
This fixes a directory traversal in the cpio tool.
Diffstat (limited to 'cpio')
-rw-r--r-- | cpio/bsdcpio.1 | 3 | ||||
-rw-r--r-- | cpio/cpio.c | 2 |
2 files changed, 4 insertions, 1 deletions
diff --git a/cpio/bsdcpio.1 b/cpio/bsdcpio.1 index f966aa06..e52546e6 100644 --- a/cpio/bsdcpio.1 +++ b/cpio/bsdcpio.1 @@ -156,7 +156,8 @@ See above for description. .It Fl Fl insecure (i and p mode only) Disable security checks during extraction or copying. -This allows extraction via symbolic links and path names containing +This allows extraction via symbolic links, absolute paths, +and path names containing .Sq .. in the name. .It Fl J , Fl Fl xz diff --git a/cpio/cpio.c b/cpio/cpio.c index 0acde119..b267e9b8 100644 --- a/cpio/cpio.c +++ b/cpio/cpio.c @@ -171,6 +171,7 @@ main(int argc, char *argv[]) cpio->extract_flags |= ARCHIVE_EXTRACT_NO_OVERWRITE_NEWER; cpio->extract_flags |= ARCHIVE_EXTRACT_SECURE_SYMLINKS; cpio->extract_flags |= ARCHIVE_EXTRACT_SECURE_NODOTDOT; + cpio->extract_flags |= ARCHIVE_EXTRACT_SECURE_NOABSOLUTEPATHS; cpio->extract_flags |= ARCHIVE_EXTRACT_PERM; cpio->extract_flags |= ARCHIVE_EXTRACT_FFLAGS; cpio->extract_flags |= ARCHIVE_EXTRACT_ACL; @@ -256,6 +257,7 @@ main(int argc, char *argv[]) case OPTION_INSECURE: cpio->extract_flags &= ~ARCHIVE_EXTRACT_SECURE_SYMLINKS; cpio->extract_flags &= ~ARCHIVE_EXTRACT_SECURE_NODOTDOT; + cpio->extract_flags &= ~ARCHIVE_EXTRACT_SECURE_NOABSOLUTEPATHS; break; case 'L': /* GNU cpio */ cpio->option_follow_links = 1; |