[aur-dev] [PATCH] pkgsubmit: count actual subdirectories
Dave Reisner
d at falconindy.com
Sat Mar 17 22:35:49 EDT 2012
Rather than relying on a regex, detect directories in the uploaded
tarball and count the slashes. This avoids problems with bsdtar
inserting PaxHeader attributes into the archive which look something
like the following to Archive_Tar:
PaxHeader/xcursor-protozoa
xcursor-protozoa/
xcursor-protozoa/PaxHeader/PKGBUILD
xcursor-protozoa/PKGBUILD
This only occurs on certain filesystems (e.g. jfs), but the tarball is
by no means invalid. When extracted, it will only contain the PKGBUILD
within a single subdirectory.
Signed-off-by: Dave Reisner <dreisner at archlinux.org>
---
web/html/pkgsubmit.php | 9 +++------
1 file changed, 3 insertions(+), 6 deletions(-)
diff --git a/web/html/pkgsubmit.php b/web/html/pkgsubmit.php
index 75a4b69..5f5ba30 100644
--- a/web/html/pkgsubmit.php
+++ b/web/html/pkgsubmit.php
@@ -63,16 +63,13 @@ if ($uid):
# Extract PKGBUILD into a string
$pkgbuild_raw = '';
- $dircount = 0;
foreach ($tar->listContent() as $tar_file) {
if (preg_match('/^[^\/]+\/PKGBUILD$/', $tar_file['filename'])) {
$pkgbuild_raw = $tar->extractInString($tar_file['filename']);
}
- elseif (preg_match('/^[^\/]+\/$/', $tar_file['filename'])) {
- if (++$dircount > 1) {
- $error = __("Error - source tarball may not contain more than one directory.");
- break;
- }
+ elseif ($tar_file['filetype'] == 5 && count(explode(',', $tar_file['filename'])) > 1) {
+ $error = __("Error - source tarball may not contain more than one directory.");
+ break;
}
elseif (preg_match('/^[^\/]+$/', $tar_file['filename'])) {
$error = __("Error - source tarball may not contain files outside a directory.");
--
1.7.9.4
More information about the aur-dev
mailing list