--- cvs-1.11.23/src/login.c +++ cvs-1.11.23/src/login.c @@ -325,10 +325,14 @@ internal error: can only call password_entry_operation with pserver method"); fp = CVS_FOPEN (passfile, "r"); if (fp == NULL) { + if (operation != password_entry_add || ENOENT != errno) error (0, errno, "warning: failed to open %s for reading", passfile); goto process; } + /* Utter, total, raving paranoia, I know. */ + fchmod (fileno (fp), 0600); + /* Check each line to see if we have this entry already. */ line = 0; while ((line_length = getline (&linebuf, &linebuf_len, fp)) >= 0) @@ -350,9 +354,6 @@ internal error: can only call password_entry_operation with pserver method"); error (0, errno, "cannot close %s", passfile); fp = NULL; - /* Utter, total, raving paranoia, I know. */ - chmod (passfile, 0600); - /* a copy to return or keep around so we can reuse linebuf */ if (password != NULL) {