Hi,

In the internal conversion of _TM_* to TAME_*, some bits were lost for
"dns" and "cmsg" in the `tamereq' array.

The initial version of tamereq array (in 1.39) was (for interesting
bits):

{ "malloc",             _TM_SELF | _TM_MALLOC },
{ "unix",               _TM_SELF | _TM_RW | _TM_UNIX },
{ "dns",                TAME_MALLOC | _TM_DNSPATH },
{ "cmsg",               TAME_UNIX | _TM_CMSG },

and was been converted to (1.40, and -current):
{ "malloc",             TAME_SELF | TAME_MALLOC },
{ "unix",               TAME_SELF | TAME_RW | TAME_UNIX },
{ "dns",                TAME_MALLOC | TAME_DNSPATH },
{ "cmsg",               TAME_UNIX | TAME_CMSG },


but TAME_MALLOC (1.39) don't mean the same thing than TAME_MALLOC (1.40).

in 1.39, expanded flags were:
 TAME_DNS  = _TM_SELF | _TM_MALLOC | _TM_DNSPATH
 TAME_CMSG = _TM_SELF | _TM_RW | _TM_UNIX | TAME_CMSG

The following patch restore the behaviour, and make the regress too work
again.

Comments ? OK ?

-- 
Sebastien Marie

Index: kern_tame.c
===================================================================
RCS file: /cvs/src/sys/kern/kern_tame.c,v
retrieving revision 1.41
diff -u -p -r1.41 kern_tame.c
--- kern_tame.c 13 Sep 2015 17:08:03 -0000      1.41
+++ kern_tame.c 18 Sep 2015 07:41:24 -0000
@@ -218,8 +218,8 @@ static const struct {
        { "tmppath",            TAME_SELF | TAME_RW | TAME_TMPPATH },
        { "inet",               TAME_SELF | TAME_RW | TAME_INET },
        { "unix",               TAME_SELF | TAME_RW | TAME_UNIX },
-       { "cmsg",               TAME_UNIX | TAME_CMSG },
-       { "dns",                TAME_MALLOC | TAME_DNSPATH },
+       { "cmsg",               TAME_SELF | TAME_RW | TAME_UNIX | TAME_CMSG },
+       { "dns",                TAME_SELF | TAME_MALLOC | TAME_DNSPATH },
        { "ioctl",              TAME_IOCTL },
        { "getpw",              TAME_SELF | TAME_MALLOC | TAME_RW | TAME_GETPW 
},
        { "proc",               TAME_PROC },

Reply via email to