]> git.lizzy.rs Git - plan9front.git/blobdiff - sys/src/cmd/ndb/cs.c
ndb/cs, ndb/dns: ignore special commands from users different from the one we run...
[plan9front.git] / sys / src / cmd / ndb / cs.c
index 8e27f73752c754daeaf3118e6a86efca63d57b6d..f760c8f394fb17ff43b870e39aa7f5c40b5b472f 100644 (file)
@@ -87,6 +87,7 @@ int   *isslave;       /* *isslave non-zero means this is a slave process */
 long   active;         /* number of active slaves */
 char   *dbfile;
 Ndb    *db, *netdb;
+char   *csuser;
 
 void   rversion(Job*);
 void   rflush(Job*);
@@ -266,6 +267,7 @@ main(int argc, char *argv[])
        netinit(0);
 
        if(!justsetname){
+               csuser = estrdup(getuser());
                mountinit(servefile, mntpt);
                io();
        }
@@ -779,6 +781,9 @@ rwrite(Job *job, Mfile *mf)
        }
        job->request.data[cnt] = 0;
 
+       if(strcmp(mf->user, "none") == 0 || strcmp(mf->user, csuser) != 0)
+               goto query;     /* skip special commands if not owner */
+
        /*
         *  toggle debugging
         */
@@ -825,6 +830,7 @@ rwrite(Job *job, Mfile *mf)
                goto send;
        }
 
+query:
        if(mf->ref){
                err = "query already in progress";
                goto send;
@@ -1933,10 +1939,11 @@ estrdup(char *s)
        int size;
        char *p;
 
-       size = strlen(s)+1;
-       p = malloc(size);
+       size = strlen(s);
+       p = malloc(size+1);
        if(p == nil)
                error("out of memory");
        memmove(p, s, size);
+       p[size] = 0;
        return p;
 }