components/trousers/patches/tspi_ps_tspps.c.patch
author Vladimir Marek <Vladimir.Marek@oracle.com>
Tue, 19 Jul 2016 15:22:15 +0200
changeset 6442 f900f128dbb9
parent 5941 db8aa9865e9f
permissions -rw-r--r--
23856628 problem in UTILITY/PERL
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1825
6864cd9b9a00 18552401 trousers doesn't build on 45
Dan Anderson <dan.anderson@oracle.com>
parents: 777
diff changeset
     1
# tspi_ps_tspps.c.patch
6864cd9b9a00 18552401 trousers doesn't build on 45
Dan Anderson <dan.anderson@oracle.com>
parents: 777
diff changeset
     2
# This change implements Solaris-specific locations for the
6864cd9b9a00 18552401 trousers doesn't build on 45
Dan Anderson <dan.anderson@oracle.com>
parents: 777
diff changeset
     3
# TSS PS (persistent storage), aka TPM keystore.
5941
db8aa9865e9f 15776792 Upgrade TrouSerS TPM library to 0.3.13
Dan Anderson <dan.anderson@oracle.com>
parents: 1825
diff changeset
     4
# It is not suitable for upstream use.
db8aa9865e9f 15776792 Upgrade TrouSerS TPM library to 0.3.13
Dan Anderson <dan.anderson@oracle.com>
parents: 1825
diff changeset
     5
#
db8aa9865e9f 15776792 Upgrade TrouSerS TPM library to 0.3.13
Dan Anderson <dan.anderson@oracle.com>
parents: 1825
diff changeset
     6
# The change to getpwuid_r() uses the "new" POSIX PTHREAD API (as opposed to
db8aa9865e9f 15776792 Upgrade TrouSerS TPM library to 0.3.13
Dan Anderson <dan.anderson@oracle.com>
parents: 1825
diff changeset
     7
# the old "Draft6" prototype).  It requires -D_POSIX_PTHREAD_SEMANTICS
db8aa9865e9f 15776792 Upgrade TrouSerS TPM library to 0.3.13
Dan Anderson <dan.anderson@oracle.com>
parents: 1825
diff changeset
     8
# on S11 and older in order to use (and is the default on S12+).
db8aa9865e9f 15776792 Upgrade TrouSerS TPM library to 0.3.13
Dan Anderson <dan.anderson@oracle.com>
parents: 1825
diff changeset
     9
# This change was implemented in-house.
1825
6864cd9b9a00 18552401 trousers doesn't build on 45
Dan Anderson <dan.anderson@oracle.com>
parents: 777
diff changeset
    10
#
5941
db8aa9865e9f 15776792 Upgrade TrouSerS TPM library to 0.3.13
Dan Anderson <dan.anderson@oracle.com>
parents: 1825
diff changeset
    11
--- src/tspi/ps/tspps.c	2014-04-24 11:05:44.000000000 -0700
db8aa9865e9f 15776792 Upgrade TrouSerS TPM library to 0.3.13
Dan Anderson <dan.anderson@oracle.com>
parents: 1825
diff changeset
    12
+++ src/tspi/ps/tspps.c	2016-04-18 13:55:57.975454990 -0700
db8aa9865e9f 15776792 Upgrade TrouSerS TPM library to 0.3.13
Dan Anderson <dan.anderson@oracle.com>
parents: 1825
diff changeset
    13
@@ -22,6 +22,9 @@
db8aa9865e9f 15776792 Upgrade TrouSerS TPM library to 0.3.13
Dan Anderson <dan.anderson@oracle.com>
parents: 1825
diff changeset
    14
 #include <fcntl.h>
db8aa9865e9f 15776792 Upgrade TrouSerS TPM library to 0.3.13
Dan Anderson <dan.anderson@oracle.com>
parents: 1825
diff changeset
    15
 #include <limits.h>
db8aa9865e9f 15776792 Upgrade TrouSerS TPM library to 0.3.13
Dan Anderson <dan.anderson@oracle.com>
parents: 1825
diff changeset
    16
 #include <netdb.h>
db8aa9865e9f 15776792 Upgrade TrouSerS TPM library to 0.3.13
Dan Anderson <dan.anderson@oracle.com>
parents: 1825
diff changeset
    17
+#ifdef SOLARIS
db8aa9865e9f 15776792 Upgrade TrouSerS TPM library to 0.3.13
Dan Anderson <dan.anderson@oracle.com>
parents: 1825
diff changeset
    18
+#include <libgen.h>	/* mkdirp() */
db8aa9865e9f 15776792 Upgrade TrouSerS TPM library to 0.3.13
Dan Anderson <dan.anderson@oracle.com>
parents: 1825
diff changeset
    19
+#endif
db8aa9865e9f 15776792 Upgrade TrouSerS TPM library to 0.3.13
Dan Anderson <dan.anderson@oracle.com>
parents: 1825
diff changeset
    20
 #if defined (HAVE_BYTEORDER_H)
db8aa9865e9f 15776792 Upgrade TrouSerS TPM library to 0.3.13
Dan Anderson <dan.anderson@oracle.com>
parents: 1825
diff changeset
    21
 #include <sys/byteorder.h>
db8aa9865e9f 15776792 Upgrade TrouSerS TPM library to 0.3.13
Dan Anderson <dan.anderson@oracle.com>
parents: 1825
diff changeset
    22
 #elif defined(HTOLE_DEFINED)
db8aa9865e9f 15776792 Upgrade TrouSerS TPM library to 0.3.13
Dan Anderson <dan.anderson@oracle.com>
parents: 1825
diff changeset
    23
@@ -60,9 +63,12 @@
259
520697a05dde 7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff changeset
    24
 	TSS_RESULT result;
520697a05dde 7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff changeset
    25
 	char *file_name = NULL, *home_dir = NULL;
520697a05dde 7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff changeset
    26
 	struct passwd *pwp;
520697a05dde 7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff changeset
    27
-#if (defined (__linux) || defined (linux) || defined(__GLIBC__))
520697a05dde 7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff changeset
    28
+#if (defined (__linux) || defined (linux) || defined(__GLIBC__) || defined(SOLARIS))
520697a05dde 7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff changeset
    29
 	struct passwd pw;
520697a05dde 7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff changeset
    30
 #endif
520697a05dde 7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff changeset
    31
+#ifdef SOLARIS
520697a05dde 7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff changeset
    32
+	char pwbuf[PASSWD_BUFSIZE];
520697a05dde 7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff changeset
    33
+#endif
520697a05dde 7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff changeset
    34
 	struct stat stat_buf;
520697a05dde 7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff changeset
    35
 	char buf[PASSWD_BUFSIZE];
520697a05dde 7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff changeset
    36
 	uid_t euid;
5941
db8aa9865e9f 15776792 Upgrade TrouSerS TPM library to 0.3.13
Dan Anderson <dan.anderson@oracle.com>
parents: 1825
diff changeset
    37
@@ -84,9 +90,15 @@
259
520697a05dde 7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff changeset
    38
          * in the user's home directory, which may be shared
520697a05dde 7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff changeset
    39
          * by multiple systems.
520697a05dde 7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff changeset
    40
          *
520697a05dde 7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff changeset
    41
-         * The directory path on Solaris is /var/tpm/userps/[EUID]/
1825
6864cd9b9a00 18552401 trousers doesn't build on 45
Dan Anderson <dan.anderson@oracle.com>
parents: 777
diff changeset
    42
+         * The directory path on Solaris is /var/user/[USERNAME]/tpm/userps
259
520697a05dde 7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff changeset
    43
          */
520697a05dde 7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff changeset
    44
-        rc = snprintf(buf, sizeof (buf), "%s/%d", TSS_USER_PS_DIR, euid);
1825
6864cd9b9a00 18552401 trousers doesn't build on 45
Dan Anderson <dan.anderson@oracle.com>
parents: 777
diff changeset
    45
+	rc = getpwuid_r(euid, &pw, pwbuf, sizeof (pwbuf), &pwp);
6864cd9b9a00 18552401 trousers doesn't build on 45
Dan Anderson <dan.anderson@oracle.com>
parents: 777
diff changeset
    46
+	if ((rc != 0) || (pwp == NULL)) {
259
520697a05dde 7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff changeset
    47
+		return TSPERR(TSS_E_INTERNAL_ERROR);
520697a05dde 7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff changeset
    48
+	}
1825
6864cd9b9a00 18552401 trousers doesn't build on 45
Dan Anderson <dan.anderson@oracle.com>
parents: 777
diff changeset
    49
+	rc = snprintf(buf, sizeof (buf), "/var/user/%s/tpm/userps",
6864cd9b9a00 18552401 trousers doesn't build on 45
Dan Anderson <dan.anderson@oracle.com>
parents: 777
diff changeset
    50
+	    pwp->pw_name);
6864cd9b9a00 18552401 trousers doesn't build on 45
Dan Anderson <dan.anderson@oracle.com>
parents: 777
diff changeset
    51
+
259
520697a05dde 7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff changeset
    52
 #else
520697a05dde 7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff changeset
    53
 	setpwent();
520697a05dde 7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff changeset
    54
 	while (1) {
5941
db8aa9865e9f 15776792 Upgrade TrouSerS TPM library to 0.3.13
Dan Anderson <dan.anderson@oracle.com>
parents: 1825
diff changeset
    55
@@ -132,7 +144,7 @@
259
520697a05dde 7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff changeset
    56
 		if (errno == ENOENT) {
520697a05dde 7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff changeset
    57
 			errno = 0;
520697a05dde 7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff changeset
    58
 			/* Create the user's ps directory if it is not there. */
520697a05dde 7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff changeset
    59
-			if ((rc = mkdir(buf, 0700)) == -1) {
520697a05dde 7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff changeset
    60
+			if ((rc = mkdirp(buf, 0700)) == -1) {
520697a05dde 7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff changeset
    61
 				LogDebugFn("USER PS: Error creating dir: %s: %s", buf,
520697a05dde 7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff changeset
    62
 					   strerror(errno));
520697a05dde 7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff changeset
    63
 				result = TSPERR(TSS_E_INTERNAL_ERROR);
5941
db8aa9865e9f 15776792 Upgrade TrouSerS TPM library to 0.3.13
Dan Anderson <dan.anderson@oracle.com>
parents: 1825
diff changeset
    64
@@ -147,8 +159,8 @@
259
520697a05dde 7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff changeset
    65
 
520697a05dde 7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff changeset
    66
 	/* Directory exists or has been created, return the path to the file */
520697a05dde 7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff changeset
    67
 #if defined (SOLARIS)
520697a05dde 7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff changeset
    68
-	rc = snprintf(buf, sizeof (buf), "%s/%d/%s", TSS_USER_PS_DIR, euid,
520697a05dde 7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff changeset
    69
-		      TSS_USER_PS_FILE);
520697a05dde 7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff changeset
    70
+	rc = snprintf(buf, sizeof (buf), "/var/user/%s/tpm/userps/%s",
520697a05dde 7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff changeset
    71
+	    pwp->pw_name, TSS_USER_PS_FILE);
520697a05dde 7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff changeset
    72
 #else
520697a05dde 7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff changeset
    73
 	rc = snprintf(buf, sizeof (buf), "%s/%s/%s", home_dir, TSS_USER_PS_DIR,
520697a05dde 7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff changeset
    74
 		      TSS_USER_PS_FILE);