From 1bbb6cd2fb8b3b5f188695da25539d2ca326c8d9 Mon Sep 17 00:00:00 2001 From: Nikolai Kristiansen Date: Tue, 8 Nov 2011 00:19:22 +0100 Subject: [PATCH] Input checking, fixes dead shells. --- ping.py | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/ping.py b/ping.py index 2323df7..cdd41a0 100644 --- a/ping.py +++ b/ping.py @@ -35,10 +35,14 @@ class ping: def POST(self): post_data = web.input() + data = post_data.get('payload') + if not data: + error = "Error: No payload in POST." + return json.dumps({'result': error}) try: - data = json.loads(post_data['payload']) - except ValueError: - error = "Got ping with non-JSON POST-data: \'" + str(post_data) + "\'" + data = json.loads(data) + except (ValueError, TypeError): + error = "Error: Got ping with non-JSON POST-data: \'" + str(post_data) + "\'" self.log(error) return json.dumps({'result': error}) @@ -62,8 +66,7 @@ class ping: return # run the deployscript # TODO: send clone url instead to support remote repos - args = ['/bin/sh', settings.DEPLOY_SCRIPT_PATH, - settings.REPOS[url], name] + args = [settings.DEPLOY_SCRIPT_PATH, settings.REPOS[url], name] self.log("Updating repo: \'" + " ".join(args) + "\'") p = Popen(args)