Commit Diff


commit - 63fcc2bc3c1b37227cc9f5b9b8ca45ce091a1477
commit + ca786c9f4ef7c059230fe5c56539726edc3808ed
blob - 29bc857c4601314b31ec167eddd28a7e551f0b0a
blob + 923efc7548edf89e3c65eacf805057167f40d3ae
--- src/lib9/getns.c
+++ src/lib9/getns.c
@@ -2,6 +2,17 @@
 #include <libc.h>
 #include <ctype.h>
 
+static int
+isme(char *uid)
+{
+	int n;
+	char *p;
+
+	n = strtol(uid, &p, 10);
+	if(*p == 0 && p > uid)
+		return n == getuid();
+	return strcmp(getuser(), uid) == 0;
+}
 /*
  * Absent other hints, it works reasonably well to use
  * the X11 display name as the name space identifier.
@@ -48,7 +59,7 @@ nsfromdisplay(void)
 		free(p);
 		return nil;
 	}
-	if((d->mode&0777) != 0700 || strcmp(d->uid, getuser()) != 0){
+	if((d->mode&0777) != 0700 || !isme(d->uid)){
 		werrstr("bad name space dir %s", p);
 		free(p);
 		free(d);