use flock so data base can be updated directly.
authorRalph Campbell <ralph@ucbvax.Berkeley.EDU>
Wed, 21 Dec 1983 03:31:34 +0000 (19:31 -0800)
committerRalph Campbell <ralph@ucbvax.Berkeley.EDU>
Wed, 21 Dec 1983 03:31:34 +0000 (19:31 -0800)
SCCS-vsn: lib/libc/gen/getpwnamuid.c 4.2

usr/src/lib/libc/gen/getpwnamuid.c

index dae0def..17f69dc 100644 (file)
@@ -1,4 +1,4 @@
-/*     getpwnamuid.c   4.1     83/12/02        */
+/*     getpwnamuid.c   4.2     83/12/20        */
 
 #include <stdio.h>
 #include <pwd.h>
 
 #include <stdio.h>
 #include <pwd.h>
@@ -49,6 +49,8 @@ getpwnam(nam)
 
         if ((db = ndbmopen(PASSWD, O_RDONLY)) == (DBM *)0)
                 return ((struct passwd *)NULL);
 
         if ((db = ndbmopen(PASSWD, O_RDONLY)) == (DBM *)0)
                 return ((struct passwd *)NULL);
+       if (flock(db->db_dirf, LOCK_SH) < 0)
+                return ((struct passwd *)NULL);
         key.dptr = nam;
         key.dsize = strlen(nam);
        pw = fetchpw(key);
         key.dptr = nam;
         key.dsize = strlen(nam);
        pw = fetchpw(key);
@@ -65,6 +67,8 @@ getpwuid(uid)
 
         if ((db = ndbmopen(PASSWD, O_RDONLY)) == (DBM *)0)
                 return ((struct passwd *)NULL);
 
         if ((db = ndbmopen(PASSWD, O_RDONLY)) == (DBM *)0)
                 return ((struct passwd *)NULL);
+       if (flock(db->db_dirf, LOCK_SH) < 0)
+                return ((struct passwd *)NULL);
         key.dptr = (char *) &uid;
         key.dsize = sizeof uid;
        pw = fetchpw(key);
         key.dptr = (char *) &uid;
         key.dsize = sizeof uid;
        pw = fetchpw(key);