From a18d473c98d965c7249c75363e2998117761fdb6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pavel=20K=C3=A1cha?= <ph@cesnet.cz> Date: Tue, 13 Sep 2016 19:46:34 +0200 Subject: [PATCH] Bugfix: arguments checking haven't survived json_wrapper decorator --- warden3/warden_server/warden_server.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/warden3/warden_server/warden_server.py b/warden3/warden_server/warden_server.py index e02535e..654d4fb 100755 --- a/warden3/warden_server/warden_server.py +++ b/warden3/warden_server/warden_server.py @@ -829,6 +829,8 @@ def expose(read=1, write=0, debug=0): meth.read = read meth.write = write meth.debug = debug + if not hasattr(meth, "arguments"): + meth.arguments = meth.func_code.co_varnames[:meth.func_code.co_argcount] return meth return expose_deco @@ -846,7 +848,7 @@ class Server(ObjectBase): return "%s(req=%s, auth=%s, handler=%s)" % (type(self).__name__, type(self.req).__name__, type(self.auth).__name__, type(self.handler).__name__) - def sanitize_args(self, path, func, args, exclude=["self"]): + def sanitize_args(self, path, func, args, exclude=["self", "post"]): # silently remove internal args, these should never be used # but if somebody does, we do not expose them by error message intargs = set(args).intersection(exclude) @@ -857,7 +859,7 @@ class Server(ObjectBase): # silently remove surplus arguments - potential forward # compatibility (unknown args will get ignored) - badargs = set(args) - set(func.func_code.co_varnames[0:func.func_code.co_argcount]) + badargs = set(args) - set(func.arguments) for a in badargs: del args[a] if badargs: @@ -953,6 +955,10 @@ def json_wrapper(method): return [('Content-type', 'application/json')], output + try: + meth_deco.arguments = method.arguments + except AttributeError: + meth_deco.arguments = method.func_code.co_varnames[:method.func_code.co_argcount] return meth_deco -- GitLab