diff options
author | Paul Sokolovsky <paul.sokolovsky@linaro.org> | 2013-04-18 07:01:55 +0300 |
---|---|---|
committer | Paul Sokolovsky <paul.sokolovsky@linaro.org> | 2013-12-10 18:36:35 +0200 |
commit | aea17dbb8a0090d054e93c2399d654b3ccb1d10e (patch) | |
tree | 13b509367baedea29a6f971817dda311a73ed5ef /new-publish | |
parent | 0b3652cbb97816b8402de826e9c739dfacbdf4cb (diff) |
Elaborate build ID validation.
Diffstat (limited to 'new-publish')
-rwxr-xr-x | new-publish/propagate.py | 7 | ||||
-rwxr-xr-x | new-publish/publib.py | 16 | ||||
-rwxr-xr-x | new-publish/publish | 3 | ||||
-rw-r--r-- | new-publish/test/test_publish.py | 22 |
4 files changed, 42 insertions, 6 deletions
diff --git a/new-publish/propagate.py b/new-publish/propagate.py index fd514c1..f3e9c09 100755 --- a/new-publish/propagate.py +++ b/new-publish/propagate.py @@ -19,11 +19,6 @@ LOCAL_UPLOAD_DIR = "/mnt/publish/uploads" REMOTE_UPLOAD_DIR = "/uploads/android" -def validate_build_id(id): - if "." in id or id[0] == "/" or len(id.split("/")) != 2: - print "Invalid build ID" - sys.exit(1) - if __name__ == "__main__": optparser = optparse.OptionParser(usage="%prog") optparser.add_option("--identity-publish", metavar="KEY", default=PUBLISH_KEY_FILE, help="Publish SSH key file") @@ -34,7 +29,7 @@ if __name__ == "__main__": if len(args) != 1: optparser.error("Wrong number of arguments") - validate_build_id(args[0]) + publib.validate_build_id(args[0]) if options.stage in ("all", "1"): file_list = [] diff --git a/new-publish/publib.py b/new-publish/publib.py index cb724c4..e6b186d 100755 --- a/new-publish/publib.py +++ b/new-publish/publib.py @@ -12,6 +12,22 @@ USER_NAME = "publish-copy" UPLOAD_DIR = "/uploads" KEY_FILE = "/var/run/lava/publish-copy" +def validate_build_id(id): + if "\\" in id: + pass + elif ".." in id: + pass + elif id[0] == "/": + pass + elif len(id.split("/")) != 2: + pass + else: + return True + + print "Invalid build ID" + sys.exit(1) + + def get_file_list(patterns): expanded = [] for p in patterns: diff --git a/new-publish/publish b/new-publish/publish index 3f59e26..d9fb433 100755 --- a/new-publish/publish +++ b/new-publish/publish @@ -28,6 +28,9 @@ if __name__ == "__main__": build_id = args[0] patterns = args[1:] + + publib.validate_build_id(build_id) + # Support Jenkins syntax, with comma as separator if len(patterns) == 1 and "," in patterns[0]: patterns = patterns[0].split(",") diff --git a/new-publish/test/test_publish.py b/new-publish/test/test_publish.py index e8692ad..57d4c6c 100644 --- a/new-publish/test/test_publish.py +++ b/new-publish/test/test_publish.py @@ -49,3 +49,25 @@ def test_ftp_script_trivial(): l = publib.make_upload_script(["dir/file1"], "/uploads") assert l == ['cd /uploads/dir', 'put dir/file1'], l + +def test_validate_build_id(): + assert publib.validate_build_id("foo/bar") + assert publib.validate_build_id("foo/bar-2.5") + + try: + publib.validate_build_id("foo/bar/baz") + assert False + except SystemExit: + pass + + try: + publib.validate_build_id("foo/bar\\baz") + assert False + except SystemExit: + pass + + try: + publib.validate_build_id("../passwd") + assert False + except SystemExit: + pass |