diff mercurial/wireprotoserver.py @ 36808:0b18604db95e

wireproto: declare permissions requirements in @wireprotocommand (API) With the security patches from 4.5.2 merged into default, we now have a per-command attribute defining what permissions are needed to run that command. We now have a richer @wireprotocommand that can be extended to record additional command metadata. So we port the permissions mechanism to be based on @wireprotocommand. .. api:: hgweb_mod.perms and wireproto.permissions have been removed. Wire protocol commands should declare their required permissions in the @wireprotocommand decorator. Differential Revision: https://phab.mercurial-scm.org/D2718
author Gregory Szorc <gregory.szorc@gmail.com>
date Wed, 07 Mar 2018 16:02:24 -0800
parents c638a13093cf
children 66de4555cefd
line wrap: on
line diff
--- a/mercurial/wireprotoserver.py	Tue Mar 06 15:08:33 2018 -0800
+++ b/mercurial/wireprotoserver.py	Wed Mar 07 16:02:24 2018 -0800
@@ -242,11 +242,7 @@
                            'over HTTP'))
         return []
 
-    # Assume commands with no defined permissions are writes /
-    # for pushes. This is the safest from a security perspective
-    # because it doesn't allow commands with undefined semantics
-    # from bypassing permissions checks.
-    checkperm(wireproto.permissions.get(cmd, 'push'))
+    checkperm(wireproto.commands[cmd].permission)
 
     rsp = wireproto.dispatch(repo, proto, cmd)