components/trousers/patches/tspps.c.patch
changeset 777 e2e604cdbd6a
parent 776 e524216b0586
child 778 9d5e4d6466cd
--- a/components/trousers/patches/tspps.c.patch	Tue Apr 17 13:35:22 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,55 +0,0 @@
---- src/tspi/ps/tspps.c.orig	2011-03-24 13:06:14.607907754 -0700
-+++ src/tspi/ps/tspps.c	2011-03-24 13:07:30.668528209 -0700
-@@ -70,9 +70,12 @@
- 	TSS_RESULT result;
- 	char *file_name = NULL, *home_dir = NULL;
- 	struct passwd *pwp;
--#if (defined (__linux) || defined (linux) || defined(__GLIBC__))
-+#if (defined (__linux) || defined (linux) || defined(__GLIBC__) || defined(SOLARIS))
- 	struct passwd pw;
- #endif
-+#ifdef SOLARIS
-+	char pwbuf[PASSWD_BUFSIZE];
-+#endif
- 	struct stat stat_buf;
- 	char buf[PASSWD_BUFSIZE];
- 	uid_t euid;
-@@ -94,9 +97,16 @@
-          * in the user's home directory, which may be shared
-          * by multiple systems.
-          *
--         * The directory path on Solaris is /var/tpm/userps/[EUID]/
-+         * The directory path on Solaris is /var/user[USERNAME]/tpm/userps
-          */
--        rc = snprintf(buf, sizeof (buf), "%s/%d", TSS_USER_PS_DIR, euid);
-+
-+	pwp = getpwuid_r(euid, &pw, pwbuf, sizeof (pwbuf));
-+	if (pwp != NULL) {
-+		rc = snprintf(buf, sizeof (buf), "/var/user/%s/tpm/userps",
-+		    pwp->pw_name);
-+	} else {
-+		return TSPERR(TSS_E_INTERNAL_ERROR);
-+	}
- #else
- 	setpwent();
- 	while (1) {
-@@ -142,7 +152,7 @@
- 		if (errno == ENOENT) {
- 			errno = 0;
- 			/* Create the user's ps directory if it is not there. */
--			if ((rc = mkdir(buf, 0700)) == -1) {
-+			if ((rc = mkdirp(buf, 0700)) == -1) {
- 				LogDebugFn("USER PS: Error creating dir: %s: %s", buf,
- 					   strerror(errno));
- 				result = TSPERR(TSS_E_INTERNAL_ERROR);
-@@ -157,8 +167,8 @@
- 
- 	/* Directory exists or has been created, return the path to the file */
- #if defined (SOLARIS)
--	rc = snprintf(buf, sizeof (buf), "%s/%d/%s", TSS_USER_PS_DIR, euid,
--		      TSS_USER_PS_FILE);
-+	rc = snprintf(buf, sizeof (buf), "/var/user/%s/tpm/userps/%s",
-+	    pwp->pw_name, TSS_USER_PS_FILE);
- #else
- 	rc = snprintf(buf, sizeof (buf), "%s/%s/%s", home_dir, TSS_USER_PS_DIR,
- 		      TSS_USER_PS_FILE);