1
0
mirror of https://git.libssh.org/projects/libssh.git synced 2025-12-02 01:17:52 +03:00

Fixed ssh_get_user_home_dir() to be thread safe.

This commit is contained in:
Andreas Schneider
2009-12-21 12:32:58 +01:00
parent 91f7d127ea
commit 23dcc2c7f3

View File

@@ -112,16 +112,23 @@ int gettimeofday(struct timeval *__p, void *__t) {
return (0); return (0);
} }
#else /* _WIN32 */ #else /* _WIN32 */
#ifndef NSS_BUFLEN_PASSWD
#define NSS_BUFLEN_PASSWD 4096
#endif
char *ssh_get_user_home_dir(void) { char *ssh_get_user_home_dir(void) {
char *szPath = NULL; char *szPath = NULL;
struct passwd *pwd = NULL; struct passwd pwd;
struct passwd *pwdbuf;
char buf[NSS_BUFLEN_PASSWD];
int rc;
pwd = getpwuid(getuid()); rc = getpwuid_r(getuid(), &pwd, buf, NSS_BUFLEN_PASSWD, &pwdbuf);
if (pwd == NULL) { if (rc != 0) {
return NULL; return NULL;
} }
szPath = strdup(pwd->pw_dir); szPath = strdup(pwd.pw_dir);
return szPath; return szPath;
} }