diff options
-rwxr-xr-x | utils/new-publish/propagate.py | 7 | ||||
-rwxr-xr-x | utils/new-publish/publib.py | 16 | ||||
-rwxr-xr-x | utils/new-publish/publish | 3 | ||||
-rw-r--r-- | utils/new-publish/test/test_publish.py | 22 |
4 files changed, 42 insertions, 6 deletions
diff --git a/utils/new-publish/propagate.py b/utils/new-publish/propagate.py index fd514c1..f3e9c09 100755 --- a/utils/new-publish/propagate.py +++ b/utils/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/utils/new-publish/publib.py b/utils/new-publish/publib.py index cb724c4..e6b186d 100755 --- a/utils/new-publish/publib.py +++ b/utils/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/utils/new-publish/publish b/utils/new-publish/publish index 3f59e26..d9fb433 100755 --- a/utils/new-publish/publish +++ b/utils/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/utils/new-publish/test/test_publish.py b/utils/new-publish/test/test_publish.py index e8692ad..57d4c6c 100644 --- a/utils/new-publish/test/test_publish.py +++ b/utils/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 |