]> git.cameronkatri.com Git - pw-darwin.git/blobdiff - libutil/gr_util.c
Avoid overflowing the file buffer
[pw-darwin.git] / libutil / gr_util.c
index 323d3ff8ee3e0f853750271843db330779e5f001..be343954f403d5e1c6af17ed5b6decc94f309162 100644 (file)
@@ -63,7 +63,6 @@ static const char group_line_format[] = "%s:%s:%ju:";
 int
 gr_init(const char *dir, const char *group)
 {
-       struct stat st;
 
        if (dir == NULL) {
                strcpy(group_dir, _PATH_ETC);
@@ -91,14 +90,6 @@ gr_init(const char *dir, const char *group)
                strcpy(group_file, group);
        }
 
-       if (stat(group_file, &st) == -1)
-               return (-1);
-
-       if (S_ISDIR(st.st_mode)) {
-               errno = EISDIR;
-               return (-1);
-       }
-
        initialized = 1;
        return (0);
 }
@@ -327,6 +318,9 @@ gr_copy(int ffd, int tfd, const struct group *gr, struct group *old_gr)
 int
 gr_mkdb(void)
 {
+       if (chmod(tempname, 0644) != 0)
+               return (-1);
+
        return (rename(tempname, group_file));
 }