From cb6deecc455ddb2a6a83cedaafc576838587d217 Mon Sep 17 00:00:00 2001 From: forsyth Date: Thu, 24 Feb 2011 23:08:03 +0000 Subject: 20110224-2305 --- emu/port/dat.h | 3 ++- emu/port/devprog.c | 8 +++----- emu/port/dis.c | 2 ++ 3 files changed, 7 insertions(+), 6 deletions(-) (limited to 'emu') 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; -- cgit v1.2.3