vlc | branch: master | Rémi Denis-Courmont <[email protected]> | Mon Aug 13 22:17:32 2012 +0300| [a3d90e27fbb17f3f01389d481d3fa628787689fe] | committer: Rémi Denis-Courmont
Do not assume sysconf() returns a positive value > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=a3d90e27fbb17f3f01389d481d3fa628787689fe --- src/posix/dirs.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/posix/dirs.c b/src/posix/dirs.c index 7c67566..0fd5991 100644 --- a/src/posix/dirs.c +++ b/src/posix/dirs.c @@ -72,22 +72,22 @@ static char *config_GetHomeDir (void) { /* 1/ Try $HOME */ const char *home = getenv ("HOME"); + if (home != NULL) + return strdup (home); #if defined(HAVE_GETPWUID_R) /* 2/ Try /etc/passwd */ - char buf[sysconf (_SC_GETPW_R_SIZE_MAX)]; - if (home == NULL) + long max = sysconf (_SC_GETPW_R_SIZE_MAX); + if (max != -1) { - struct passwd pw, *res; + char buf[max]; + struct passwd pwbuf, *pw; - if (!getpwuid_r (getuid (), &pw, buf, sizeof (buf), &res) && res) - home = pw.pw_dir; + if (getpwuid_r (getuid (), &pwbuf, buf, sizeof (buf), &pw) == 0 + && pw != NULL) + return strdup (pw->pw_dir); } #endif - - if (!home) - return NULL; - - return strdup (home); + return NULL; } static char *config_GetAppDir (const char *xdg_name, const char *xdg_default) _______________________________________________ vlc-commits mailing list [email protected] http://mailman.videolan.org/listinfo/vlc-commits
