summaryrefslogtreecommitdiffstats
path: root/libssh/misc.c
diff options
context:
space:
mode:
authorAndreas Schneider <mail@cynapses.org>2009-10-15 14:53:11 +0200
committerAndreas Schneider <mail@cynapses.org>2009-10-15 14:53:11 +0200
commitcbf012c33722737c255d08c7f81a3ee5c6c19052 (patch)
treeff94b8a3aaa3c239dcfe85715b4eba5034a5b9d6 /libssh/misc.c
parentc360ed1d9ad4ee0a65dd80494605c55802c30ba3 (diff)
downloadlibssh-cbf012c33722737c255d08c7f81a3ee5c6c19052.tar.gz
libssh-cbf012c33722737c255d08c7f81a3ee5c6c19052.tar.xz
libssh-cbf012c33722737c255d08c7f81a3ee5c6c19052.zip
Fixed ssh_get_home_dir and ssh dir to be more portable on UNIX systems.
Thanks to Pino Toscano.
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;
}