# HG changeset patch
# User Jun Wu <qu...@fb.com>
# Date 1483719292 0
#      Fri Jan 06 16:14:52 2017 +0000
# Node ID 779b9e867ff7f6e0c0b12e700195dff97408a16d
# Parent  703fee4099efac592f6ae1c48bfebf806dfd95bf
# Available At https://bitbucket.org/quark-zju/hg-draft
#              hg pull https://bitbucket.org/quark-zju/hg-draft -r 779b9e867ff7
chg: check type read from S channel

The previous patch added the check server-side. This patch added it
client-side.

diff --git a/contrib/chg/hgclient.c b/contrib/chg/hgclient.c
--- a/contrib/chg/hgclient.c
+++ b/contrib/chg/hgclient.c
@@ -240,12 +240,16 @@ static void handlesystemrequest(hgclient
        if (!args[0] || !args[1] || !args[2])
                abortmsg("missing type or command or cwd in system request");
-       debugmsg("run '%s' at '%s'", args[1], args[2]);
-       int32_t r = runshellcmd(args[1], args + 3, args[2]);
-       free(args);
+       if (strcmp(args[0], "system") == 0) {
+               debugmsg("run '%s' at '%s'", args[1], args[2]);
+               int32_t r = runshellcmd(args[1], args + 3, args[2]);
+               free(args);
 
-       uint32_t r_n = htonl(r);
-       memcpy(ctx->data, &r_n, sizeof(r_n));
-       ctx->datasize = sizeof(r_n);
-       writeblock(hgc);
+               uint32_t r_n = htonl(r);
+               memcpy(ctx->data, &r_n, sizeof(r_n));
+               ctx->datasize = sizeof(r_n);
+               writeblock(hgc);
+       } else {
+               abortmsg("unknown type in system request: %s", args[0]);
+       }
 }
 
_______________________________________________
Mercurial-devel mailing list
Mercurial-devel@mercurial-scm.org
https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel

Reply via email to