mirror of
https://github.com/f-droid/fdroidserver.git
synced 2025-09-13 14:32:28 +03:00
update: never execute VCS e.g. git
Package repos come from untrusted sources, in terms of the buildserver. They should be handled in VMs and containers as much as possible to avoid vulnerabilities. As far as I could tell, `fdroid update` only has a single place where it executes any VCS system: if there is .fdroid.yml present in a package repo, then it will fetch the commit ID using git. For better security properties, this implements a simple function to just read the files to get that commit ID. The function that executes git to do the same thing is relabeled "unsafe". That is used for status JSON everywhere, but that runs on fdroiddata.git and fdroidserver.git, which are trusted repos. The unsafe version is also used in places where git.Repo() is needed for other things.
This commit is contained in:
parent
2a9c8e9644
commit
4e7bda736c
5 changed files with 77 additions and 14 deletions
|
@ -721,8 +721,7 @@ def build_local(app, build, vcs, build_dir, output_dir, log_dir, srclib_dir, ext
|
|||
bindir = os.path.join(root_dir, 'bin')
|
||||
|
||||
if os.path.isdir(os.path.join(build_dir, '.git')):
|
||||
import git
|
||||
commit_id = common.get_head_commit_id(git.repo.Repo(build_dir))
|
||||
commit_id = str(common.get_head_commit_id(build_dir))
|
||||
else:
|
||||
commit_id = build.commit
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue