X-Git-Url: https://diplodocus.org/git/nmh/blobdiff_plain/b02a191a4c725fb987c56dc41b2a81fbd6bff44c..e8fe77294085e66b09cbb8043458f22b5b2ef1e6:/sbr/ruserpass.c diff --git a/sbr/ruserpass.c b/sbr/ruserpass.c index a55f6803..de0f951b 100644 --- a/sbr/ruserpass.c +++ b/sbr/ruserpass.c @@ -95,14 +95,13 @@ ruserpass(char *host, char **aname, char **apass) while ((t = token(tokval)) && t != MACH && t != DEFAULT) { switch(t) { case LOGIN: - if (token(tokval) && *aname == 0) { - *aname = mh_xmalloc((size_t) strlen(tokval) + 1); - strcpy(*aname, tokval); - } + if (token(tokval) && *aname == 0) + *aname = mh_xstrdup(tokval); break; case PASSWD: - if (fstat(fileno(cfile), &stb) >= 0 && + if (!credentials_no_perm_check && + fstat(fileno(cfile), &stb) >= 0 && (stb.st_mode & 077) != 0) { /* We make this a fatal error to force the user to correct it. */ @@ -111,10 +110,8 @@ ruserpass(char *host, char **aname, char **apass) adios(NULL, "Remove password or correct file " "permissions."); } - if (token(tokval) && *apass == 0) { - *apass = mh_xmalloc((size_t) strlen(tokval) + 1); - strcpy(*apass, tokval); - } + if (token(tokval) && *apass == 0) + *apass = mh_xstrdup(tokval); break; case ACCOUNT: @@ -151,13 +148,12 @@ ruserpass(char *host, char **aname, char **apass) if (fgets(tmp, sizeof(tmp) - 1, stdin) == NULL) { advise ("tmp", "fgets"); } - tmp[strlen(tmp) - 1] = '\0'; - if (*tmp != '\0') { + TrimSuffixC(tmp, '\n'); + if (*tmp != '\0' || myname == NULL) { myname = tmp; } - *aname = mh_xmalloc((size_t) strlen(myname) + 1); - strcpy (*aname, myname); + *aname = mh_xstrdup(myname); } if (!*apass) { @@ -171,8 +167,7 @@ ruserpass(char *host, char **aname, char **apass) mypass = *aname; } - *apass = mh_xmalloc((size_t) strlen(mypass) + 1); - strcpy (*apass, mypass); + *aname = mh_xstrdup(mypass); } }