X-Git-Url: https://diplodocus.org/git/nmh/blobdiff_plain/6911ccf8fcd1ad179801d517f48817ea8c22b4a3..bfc6b93af:/sbr/ruserpass.c?ds=sidebyside diff --git a/sbr/ruserpass.c b/sbr/ruserpass.c index 5b650389..1d946fa2 100644 --- a/sbr/ruserpass.c +++ b/sbr/ruserpass.c @@ -107,8 +107,8 @@ ruserpass(const char *host, char **aname, char **apass, int flags) (stb.st_mode & 077) != 0) { /* We make this a fatal error to force the user to correct it. */ - advise(NULL, "Error - file %s must not be world or " - "group readable.", credentials_file); + advise(NULL, "group or other permissions, %#o, " + "forbidden: %s", stb.st_mode, credentials_file); adios(NULL, "Remove password or correct file " "permissions."); } @@ -147,7 +147,7 @@ ruserpass(const char *host, char **aname, char **apass, int flags) } printf("Name (%s:%s): ", host, myname); - if (fgets(tmp, sizeof(tmp) - 1, stdin) == NULL) { + if (fgets(tmp, sizeof tmp, stdin) == NULL) { advise ("tmp", "fgets"); } TrimSuffixC(tmp, '\n'); @@ -204,8 +204,9 @@ token(char *tokval) return TOK_EOF; while ((c = getc(cfile)) != EOF && c && !strchr(stop, c)) { - if (c == '\\') - c = getc(cfile); /* BUG: What if this is EOF. */ + if (c == '\\' && (c = getc(cfile)) == EOF) + return TOK_EOF; /* Discard whole token. */ + *cp++ = c; if (cp - tokval > MAX_TOKVAL_SIZE-1) { adios(NULL, "credential tokens restricted to length %d",