summaryrefslogtreecommitdiff
path: root/new-publish
diff options
context:
space:
mode:
authorPaul Sokolovsky <paul.sokolovsky@linaro.org>2013-04-18 07:01:55 +0300
committerPaul Sokolovsky <paul.sokolovsky@linaro.org>2013-12-10 18:36:35 +0200
commitaea17dbb8a0090d054e93c2399d654b3ccb1d10e (patch)
tree13b509367baedea29a6f971817dda311a73ed5ef /new-publish
parent0b3652cbb97816b8402de826e9c739dfacbdf4cb (diff)
Elaborate build ID validation.
Diffstat (limited to 'new-publish')
-rwxr-xr-xnew-publish/propagate.py7
-rwxr-xr-xnew-publish/publib.py16
-rwxr-xr-xnew-publish/publish3
-rw-r--r--new-publish/test/test_publish.py22
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