mirror of
https://gitlab.archlinux.org/archlinux/aurweb.git
synced 2025-02-03 10:43:03 +01:00
git-update: Catch long source URLs
Bail out early if the source array contains an entry with more than 8000 characters. Signed-off-by: Lukas Fleischer <lfleischer@archlinux.org>
This commit is contained in:
parent
1492444ecb
commit
29a5f94dab
2 changed files with 19 additions and 0 deletions
|
@ -337,6 +337,9 @@ def main():
|
||||||
|
|
||||||
for field in extract_arch_fields(pkginfo, 'source'):
|
for field in extract_arch_fields(pkginfo, 'source'):
|
||||||
fname = field['value']
|
fname = field['value']
|
||||||
|
if len(fname) > 8000:
|
||||||
|
die_commit('source entry too long: {:s}'.format(fname),
|
||||||
|
str(commit.id))
|
||||||
if "://" in fname or "lp:" in fname:
|
if "://" in fname or "lp:" in fname:
|
||||||
continue
|
continue
|
||||||
if fname not in commit.tree:
|
if fname not in commit.tree:
|
||||||
|
|
|
@ -370,6 +370,22 @@ test_expect_success 'Missing source file.' '
|
||||||
grep -q "^error: missing source file: file$" actual
|
grep -q "^error: missing source file: file$" actual
|
||||||
'
|
'
|
||||||
|
|
||||||
|
test_expect_success 'Pushing .SRCINFO with too long source URL.' '
|
||||||
|
old=$(git -C aur.git rev-parse HEAD) &&
|
||||||
|
url="http://$(printf "%7993s" x | sed "s/ /x/g")/" &&
|
||||||
|
test_when_finished "git -C aur.git reset --hard $old" &&
|
||||||
|
(
|
||||||
|
cd aur.git &&
|
||||||
|
sed "s#.*depends.*#\\0\\nsource = $url#" .SRCINFO >.SRCINFO.new
|
||||||
|
mv .SRCINFO.new .SRCINFO
|
||||||
|
git commit -q -am "Add huge source URL"
|
||||||
|
) &&
|
||||||
|
new=$(git -C aur.git rev-parse HEAD) &&
|
||||||
|
AUR_USER=user AUR_PKGBASE=foobar AUR_PRIVILEGED=0 \
|
||||||
|
test_must_fail "$GIT_UPDATE" refs/heads/master "$old" "$new" >actual 2>&1 &&
|
||||||
|
grep -q "^error: source entry too long: $url\$" actual
|
||||||
|
'
|
||||||
|
|
||||||
test_expect_success 'Pushing a blacklisted package.' '
|
test_expect_success 'Pushing a blacklisted package.' '
|
||||||
old=$(git -C aur.git rev-parse HEAD) &&
|
old=$(git -C aur.git rev-parse HEAD) &&
|
||||||
test_when_finished "git -C aur.git reset --hard $old" &&
|
test_when_finished "git -C aur.git reset --hard $old" &&
|
||||||
|
|
Loading…
Add table
Reference in a new issue