50 lines
1.5 KiB
Diff
50 lines
1.5 KiB
Diff
trousers: fix compiling with musl
|
|
|
|
use POSIX getpwent instead of getpwent_r
|
|
|
|
Upstream-Status: Submitted
|
|
|
|
Signed-off-by: Armin Kuster <akuster@mvista.com>
|
|
|
|
Index: git/src/tspi/ps/tspps.c
|
|
===================================================================
|
|
--- git.orig/src/tspi/ps/tspps.c
|
|
+++ git/src/tspi/ps/tspps.c
|
|
@@ -66,9 +66,6 @@ get_user_ps_path(char **file)
|
|
TSS_RESULT result;
|
|
char *file_name = NULL, *home_dir = NULL;
|
|
struct passwd *pwp;
|
|
-#if (defined (__linux) || defined (linux) || defined(__GLIBC__))
|
|
- struct passwd pw;
|
|
-#endif
|
|
struct stat stat_buf;
|
|
char buf[PASSWD_BUFSIZE];
|
|
uid_t euid;
|
|
@@ -96,24 +93,15 @@ get_user_ps_path(char **file)
|
|
#else
|
|
setpwent();
|
|
while (1) {
|
|
-#if (defined (__linux) || defined (linux) || defined(__GLIBC__))
|
|
- rc = getpwent_r(&pw, buf, PASSWD_BUFSIZE, &pwp);
|
|
- if (rc) {
|
|
- LogDebugFn("USER PS: Error getting path to home directory: getpwent_r: %s",
|
|
- strerror(rc));
|
|
- endpwent();
|
|
- return TSPERR(TSS_E_INTERNAL_ERROR);
|
|
- }
|
|
-
|
|
-#elif (defined (__FreeBSD__) || defined (__OpenBSD__))
|
|
if ((pwp = getpwent()) == NULL) {
|
|
LogDebugFn("USER PS: Error getting path to home directory: getpwent: %s",
|
|
strerror(rc));
|
|
endpwent();
|
|
+#if (defined (__FreeBSD__) || defined (__OpenBSD__))
|
|
MUTEX_UNLOCK(user_ps_path);
|
|
+#endif
|
|
return TSPERR(TSS_E_INTERNAL_ERROR);
|
|
}
|
|
-#endif
|
|
if (euid == pwp->pw_uid) {
|
|
home_dir = strdup(pwp->pw_dir);
|
|
break;
|