Annotation of coherent/b/kernel/io.386/ipc.c, revision 1.1.1.1

1.1       root        1: /*
                      2:  * Inter-Process Communication common access routine.
                      3:  *
                      4:  * $Log:       ipc.c,v $
                      5:  * Revision 1.3  93/04/14  10:11:48  root
                      6:  * r75
                      7:  * 
                      8:  * Revision 1.1        88/03/24  17:05:02      src
                      9:  * Initial revision
                     10:  * 
                     11:  */
                     12: #include <sys/coherent.h>
                     13: #include <sys/ipc.h>
                     14: 
                     15: /*
                     16:  * Determine Inter-Process Communication Access Permissions.
                     17:  *
                     18:  *     Input:  p = pointer to inter-process communication permission struct.
                     19:  *
                     20:  *     Action: If super user, permissions are 0600.
                     21:  *             If uid is that of the creator or owner of the message id,
                     22:  *                     use user permissions.
                     23:  *             If gid is that of the creator or owner of the message id,
                     24:  *                     use group permissions.
                     25:  *             Otherwise, use others permissions.
                     26:  *
                     27:  *     Output: 0600 = Read/Alter permission.
                     28:  *             0400 = Read permission.
                     29:  *             0200 = Alter permission.
                     30:  *                0 = No permission.
                     31:  */
                     32: int
                     33: ipcaccess(p)
                     34: register struct ipc_perm * p;
                     35: {
                     36:        if (u.u_uid == 0)
                     37:                return 0600;
                     38: 
                     39:        if ((u.u_uid == p->uid) || (u.u_uid == p->cuid))
                     40:                return p->mode & 0600;
                     41: 
                     42:        if ((u.u_gid == p->gid) || (u.u_gid == p->cgid))
                     43:                return (p->mode << 3) & 0600;
                     44: 
                     45:        return (p->mode << 6) & 0600;
                     46: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.