summaryrefslogtreecommitdiffstats
path: root/libssh/misc.c
diff options
context:
space:
mode:
Diffstat (limited to 'libssh/misc.c')
-rw-r--r--libssh/misc.c15
1 files changed, 11 insertions, 4 deletions
diff --git a/libssh/misc.c b/libssh/misc.c
index 690de3a..bae780b 100644
--- a/libssh/misc.c
+++ b/libssh/misc.c
@@ -71,9 +71,16 @@
#ifdef _WIN32
char *ssh_get_user_home_dir(void) {
- static char szPath[MAX_PATH] = {0};
+ char tmp[MAX_PATH] = {0};
+ char szPath = NULL;
- if (SHGetSpecialFolderPathA(NULL, szPath, CSIDL_PROFILE, TRUE)) {
+ if (SHGetSpecialFolderPathA(NULL, tmp, CSIDL_PROFILE, TRUE)) {
+ szPath = malloc(strlen(szPath) + 1);
+ if (home == NULL) {
+ return NULL;
+ }
+
+ strcpy(szPath, tmp);
return szPath;
}
@@ -90,7 +97,7 @@ char *ssh_get_user_home_dir(void) {
}
#else /* _WIN32 */
char *ssh_get_user_home_dir(void) {
- static char szPath[PATH_MAX] = {0};
+ char *szPath = NULL;
struct passwd *pwd = NULL;
pwd = getpwuid(getuid());
@@ -98,7 +105,7 @@ char *ssh_get_user_home_dir(void) {
return NULL;
}
- snprintf(szPath, PATH_MAX - 1, "%s", pwd->pw_dir);
+ szPath = strdup(pwd->pw_dir);
return szPath;
}