summaryrefslogtreecommitdiff
path: root/emu
diff options
context:
space:
mode:
authorforsyth <forsyth@vitanuova.com>2011-02-24 23:08:03 +0000
committerforsyth <forsyth@vitanuova.com>2011-02-24 23:08:03 +0000
commitcb6deecc455ddb2a6a83cedaafc576838587d217 (patch)
treeb1ef6ea611515c18da988ee2a368939d2eb8f1be /emu
parent39f1a17d6a1f530b723b42717a2c14db6a25cf16 (diff)
20110224-2305
Diffstat (limited to 'emu')
-rw-r--r--emu/port/dat.h3
-rw-r--r--emu/port/devprog.c8
-rw-r--r--emu/port/dis.c2
3 files changed, 7 insertions, 6 deletions
diff --git a/emu/port/dat.h b/emu/port/dat.h
index b245b61c..a0881050 100644
--- a/emu/port/dat.h
+++ b/emu/port/dat.h
@@ -37,6 +37,8 @@ typedef struct Walkqid Walkqid;
#undef NAMELEN
#undef ERRLEN
+#include "emu.h"
+
#pragma incomplete Queue
#pragma incomplete Mntrpc
@@ -269,7 +271,6 @@ struct Pgrp
QLock nsh;
Mhead* mnthash[MNTHASH];
int progmode;
- int privatemem; /* deny access to /prog by debuggers */
Chan* dot;
Chan* slash;
int nodevs;
diff --git a/emu/port/devprog.c b/emu/port/devprog.c
index 8ee6a75b..7eeb5d51 100644
--- a/emu/port/devprog.c
+++ b/emu/port/devprog.c
@@ -293,14 +293,14 @@ progopen(Chan *c, int omode)
error(Enomem);
break;
case Qheap:
- if(SECURE || o->pgrp->privatemem || omode != ORDWR)
+ if(SECURE || p->group->flags&Pprivatemem || omode != ORDWR)
error(Eperm);
c->aux = malloc(sizeof(Heapqry));
if(c->aux == nil)
error(Enomem);
break;
case Qdbgctl:
- if(SECURE || o->pgrp->privatemem || omode != ORDWR)
+ if(SECURE || p->group->flags&Pprivatemem || omode != ORDWR)
error(Eperm);
ctl = malloc(sizeof(Progctl));
if(ctl == nil)
@@ -1026,7 +1026,6 @@ progwrite(Chan *c, void *va, long n, vlong offset)
int i, pc;
Cmdbuf *cb;
Cmdtab *ct;
- Osenv *o;
USED(offset);
USED(va);
@@ -1072,8 +1071,7 @@ progwrite(Chan *c, void *va, long n, vlong offset)
error(Ebadctl);
break;
case CMprivate:
- o = p->osenv;
- o->pgrp->privatemem = 1;
+ p->group->flags |= Pprivatemem;
break;
}
poperror();
diff --git a/emu/port/dis.c b/emu/port/dis.c
index 881bd81f..8c474ff6 100644
--- a/emu/port/dis.c
+++ b/emu/port/dis.c
@@ -459,6 +459,8 @@ newgrp(Prog *p)
p->flags &= ~(Ppropagate|Pnotifyleader);
g->id = p->pid;
g->flags = 0;
+ if(p->group != nil)
+ g->flags |= p->group->flags&Pprivatemem;
g->child = nil;
pg = delgrp(p);
g->head = g->tail = p;