if lookup of group "write" fails, use user's /etc/passwd entry as before
authorKirk McKusick <mckusick@ucbvax.Berkeley.EDU>
Fri, 14 Mar 1986 13:16:02 +0000 (05:16 -0800)
committerKirk McKusick <mckusick@ucbvax.Berkeley.EDU>
Fri, 14 Mar 1986 13:16:02 +0000 (05:16 -0800)
SCCS-vsn: usr.bin/login/login.c 5.14
SCCS-vsn: usr.bin/login/login.c.1 5.14

usr/src/usr.bin/login/login.c
usr/src/usr.bin/login/login.c.1

index 2762be2..d8e5a44 100644 (file)
@@ -11,7 +11,7 @@ char copyright[] =
 #endif not lint
 
 #ifndef lint
 #endif not lint
 
 #ifndef lint
-static char sccsid[] = "@(#)login.c    5.13 (Berkeley) %G%";
+static char sccsid[] = "@(#)login.c    5.14 (Berkeley) %G%";
 #endif not lint
 
 /*
 #endif not lint
 
 /*
@@ -38,8 +38,8 @@ static char sccsid[] = "@(#)login.c   5.13 (Berkeley) %G%";
 #include <syslog.h>
 #include <grp.h>
 
 #include <syslog.h>
 #include <grp.h>
 
-#define WRITENAME       "write"         /* name of group to own ttys */
-#define WRITEGID        write_gid()     /* gid that owns all ttys */
+#define WRITENAME      "write"         /* name of group to own ttys */
+#define WRITEGID(gid)  write_gid(gid)  /* gid that owns all ttys */
 
 #define        SCMPN(a, b)     strncmp(a, b, sizeof(a))
 #define        SCPYN(a, b)     strncpy(a, b, sizeof(a))
 
 #define        SCMPN(a, b)     strncmp(a, b, sizeof(a))
 #define        SCPYN(a, b)     strncpy(a, b, sizeof(a))
@@ -328,7 +328,7 @@ main(argc, argv)
                write(f, (char *) &ll, sizeof ll);
                close(f);
        }
                write(f, (char *) &ll, sizeof ll);
                close(f);
        }
-       chown(ttyn, pwd->pw_uid, WRITEGID);
+       chown(ttyn, pwd->pw_uid, WRITEGID(pwd->pw_gid));
        if (!hflag && !rflag)                                   /* XXX */
                ioctl(0, TIOCSWINSZ, &win);
        chmod(ttyn, 0620);
        if (!hflag && !rflag)                                   /* XXX */
                ioctl(0, TIOCSWINSZ, &win);
        chmod(ttyn, 0620);
@@ -571,10 +571,11 @@ setenv(var, value, clobber)
        environ[++index] = NULL;
 }
 
        environ[++index] = NULL;
 }
 
-write_gid()
+write_gid(default_gid)
+       int default_gid;
 {
        struct group *getgrnam(), *gr;
 {
        struct group *getgrnam(), *gr;
-       int gid = 0;
+       int gid = default_gid;
 
        gr = getgrnam(WRITENAME);
        if (gr != (struct group *) 0)
 
        gr = getgrnam(WRITENAME);
        if (gr != (struct group *) 0)
@@ -582,5 +583,5 @@ write_gid()
 
        endgrent();
 
 
        endgrent();
 
-       return gid;
+       return (gid);
 }
 }
index 9d1f126..2f2ff6e 100644 (file)
@@ -11,7 +11,7 @@ char copyright[] =
 #endif not lint
 
 #ifndef lint
 #endif not lint
 
 #ifndef lint
-static char sccsid[] = "@(#)login.c.1  5.13 (Berkeley) %G%";
+static char sccsid[] = "@(#)login.c.1  5.14 (Berkeley) %G%";
 #endif not lint
 
 /*
 #endif not lint
 
 /*
@@ -38,8 +38,8 @@ static char sccsid[] = "@(#)login.c.1 5.13 (Berkeley) %G%";
 #include <syslog.h>
 #include <grp.h>
 
 #include <syslog.h>
 #include <grp.h>
 
-#define WRITENAME       "write"         /* name of group to own ttys */
-#define WRITEGID        write_gid()     /* gid that owns all ttys */
+#define WRITENAME      "write"         /* name of group to own ttys */
+#define WRITEGID(gid)  write_gid(gid)  /* gid that owns all ttys */
 
 #define        SCMPN(a, b)     strncmp(a, b, sizeof(a))
 #define        SCPYN(a, b)     strncpy(a, b, sizeof(a))
 
 #define        SCMPN(a, b)     strncmp(a, b, sizeof(a))
 #define        SCPYN(a, b)     strncpy(a, b, sizeof(a))
@@ -328,7 +328,7 @@ main(argc, argv)
                write(f, (char *) &ll, sizeof ll);
                close(f);
        }
                write(f, (char *) &ll, sizeof ll);
                close(f);
        }
-       chown(ttyn, pwd->pw_uid, WRITEGID);
+       chown(ttyn, pwd->pw_uid, WRITEGID(pwd->pw_gid));
        if (!hflag && !rflag)                                   /* XXX */
                ioctl(0, TIOCSWINSZ, &win);
        chmod(ttyn, 0620);
        if (!hflag && !rflag)                                   /* XXX */
                ioctl(0, TIOCSWINSZ, &win);
        chmod(ttyn, 0620);
@@ -571,10 +571,11 @@ setenv(var, value, clobber)
        environ[++index] = NULL;
 }
 
        environ[++index] = NULL;
 }
 
-write_gid()
+write_gid(default_gid)
+       int default_gid;
 {
        struct group *getgrnam(), *gr;
 {
        struct group *getgrnam(), *gr;
-       int gid = 0;
+       int gid = default_gid;
 
        gr = getgrnam(WRITENAME);
        if (gr != (struct group *) 0)
 
        gr = getgrnam(WRITENAME);
        if (gr != (struct group *) 0)
@@ -582,5 +583,5 @@ write_gid()
 
        endgrent();
 
 
        endgrent();
 
-       return gid;
+       return (gid);
 }
 }