components/trousers/patches/tddl_tddl.c.patch
author Vladimir Marek <Vladimir.Marek@oracle.com>
Tue, 19 Jul 2016 15:22:15 +0200
changeset 6442 f900f128dbb9
parent 6268 447a28fa6a83
permissions -rw-r--r--
23856628 problem in UTILITY/PERL
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
5941
db8aa9865e9f 15776792 Upgrade TrouSerS TPM library to 0.3.13
Dan Anderson <dan.anderson@oracle.com>
parents: 777
diff changeset
     1
# Define Solaris-specific device paths.
db8aa9865e9f 15776792 Upgrade TrouSerS TPM library to 0.3.13
Dan Anderson <dan.anderson@oracle.com>
parents: 777
diff changeset
     2
# Add error message if path can't be opened.
db8aa9865e9f 15776792 Upgrade TrouSerS TPM library to 0.3.13
Dan Anderson <dan.anderson@oracle.com>
parents: 777
diff changeset
     3
# This change was implemented in-house.
db8aa9865e9f 15776792 Upgrade TrouSerS TPM library to 0.3.13
Dan Anderson <dan.anderson@oracle.com>
parents: 777
diff changeset
     4
# Except for the open() error message, it is not suitable for upstream use.
db8aa9865e9f 15776792 Upgrade TrouSerS TPM library to 0.3.13
Dan Anderson <dan.anderson@oracle.com>
parents: 777
diff changeset
     5
#
db8aa9865e9f 15776792 Upgrade TrouSerS TPM library to 0.3.13
Dan Anderson <dan.anderson@oracle.com>
parents: 777
diff changeset
     6
--- src/tddl/tddl.c	2014-04-24 11:05:44.000000000 -0700
6268
447a28fa6a83 23618255 tcsd is coredumping on TPM enabled x86 systems
Dan Anderson <dan.anderson@oracle.com>
parents: 5941
diff changeset
     7
+++ src/tddl/tddl.c	2016-06-20 11:45:31.929095585 -0700
259
520697a05dde 7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff changeset
     8
@@ -18,13 +18,17 @@
520697a05dde 7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff changeset
     9
 
520697a05dde 7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff changeset
    10
 #include "trousers/tss.h"
520697a05dde 7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff changeset
    11
 #include "trousers_types.h"
520697a05dde 7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff changeset
    12
+#ifndef SOLARIS
520697a05dde 7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff changeset
    13
 #include "linux/tpm.h"
520697a05dde 7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff changeset
    14
+#endif
520697a05dde 7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff changeset
    15
 #include "tcslog.h"
520697a05dde 7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff changeset
    16
 #include "tddl.h"
520697a05dde 7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff changeset
    17
 
520697a05dde 7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff changeset
    18
 struct tpm_device_node tpm_device_nodes[] = {
520697a05dde 7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff changeset
    19
+#ifndef SOLARIS
520697a05dde 7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff changeset
    20
 	{"/dev/tpm0", TDDL_UNDEF, TDDL_UNDEF},
520697a05dde 7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff changeset
    21
 	{"/udev/tpm0", TDDL_UNDEF, TDDL_UNDEF},
520697a05dde 7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff changeset
    22
+#endif
520697a05dde 7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff changeset
    23
 	{"/dev/tpm", TDDL_UNDEF, TDDL_UNDEF},
520697a05dde 7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff changeset
    24
 	{NULL, 0, 0}
520697a05dde 7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff changeset
    25
 };
6268
447a28fa6a83 23618255 tcsd is coredumping on TPM enabled x86 systems
Dan Anderson <dan.anderson@oracle.com>
parents: 5941
diff changeset
    26
@@ -42,6 +46,18 @@
622
fd8f0e501744 7023102 TCSD should store the TPM Event Log
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents: 399
diff changeset
    27
 #include <netdb.h>
fd8f0e501744 7023102 TCSD should store the TPM Event Log
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents: 399
diff changeset
    28
 #include <fcntl.h>
fd8f0e501744 7023102 TCSD should store the TPM Event Log
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents: 399
diff changeset
    29
 
fd8f0e501744 7023102 TCSD should store the TPM Event Log
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents: 399
diff changeset
    30
+#ifdef SOLARIS
fd8f0e501744 7023102 TCSD should store the TPM Event Log
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents: 399
diff changeset
    31
+int
6268
447a28fa6a83 23618255 tcsd is coredumping on TPM enabled x86 systems
Dan Anderson <dan.anderson@oracle.com>
parents: 5941
diff changeset
    32
+get_device_fd(void)
622
fd8f0e501744 7023102 TCSD should store the TPM Event Log
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents: 399
diff changeset
    33
+{
6268
447a28fa6a83 23618255 tcsd is coredumping on TPM enabled x86 systems
Dan Anderson <dan.anderson@oracle.com>
parents: 5941
diff changeset
    34
+	if (opened_device != NULL) {
447a28fa6a83 23618255 tcsd is coredumping on TPM enabled x86 systems
Dan Anderson <dan.anderson@oracle.com>
parents: 5941
diff changeset
    35
+		return (opened_device->fd);
447a28fa6a83 23618255 tcsd is coredumping on TPM enabled x86 systems
Dan Anderson <dan.anderson@oracle.com>
parents: 5941
diff changeset
    36
+	} else {
447a28fa6a83 23618255 tcsd is coredumping on TPM enabled x86 systems
Dan Anderson <dan.anderson@oracle.com>
parents: 5941
diff changeset
    37
+		LogDebug("No opened TPM device");
447a28fa6a83 23618255 tcsd is coredumping on TPM enabled x86 systems
Dan Anderson <dan.anderson@oracle.com>
parents: 5941
diff changeset
    38
+		return (-1);
447a28fa6a83 23618255 tcsd is coredumping on TPM enabled x86 systems
Dan Anderson <dan.anderson@oracle.com>
parents: 5941
diff changeset
    39
+	}
622
fd8f0e501744 7023102 TCSD should store the TPM Event Log
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents: 399
diff changeset
    40
+}
fd8f0e501744 7023102 TCSD should store the TPM Event Log
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents: 399
diff changeset
    41
+#endif
fd8f0e501744 7023102 TCSD should store the TPM Event Log
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents: 399
diff changeset
    42
 
fd8f0e501744 7023102 TCSD should store the TPM Event Log
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents: 399
diff changeset
    43
 int
fd8f0e501744 7023102 TCSD should store the TPM Event Log
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents: 399
diff changeset
    44
 open_device()
6268
447a28fa6a83 23618255 tcsd is coredumping on TPM enabled x86 systems
Dan Anderson <dan.anderson@oracle.com>
parents: 5941
diff changeset
    45
@@ -55,7 +71,7 @@
5941
db8aa9865e9f 15776792 Upgrade TrouSerS TPM library to 0.3.13
Dan Anderson <dan.anderson@oracle.com>
parents: 777
diff changeset
    46
 		if ((tcp_device_hostname = getenv("TCSD_TCP_DEVICE_HOSTNAME")) == NULL)
db8aa9865e9f 15776792 Upgrade TrouSerS TPM library to 0.3.13
Dan Anderson <dan.anderson@oracle.com>
parents: 777
diff changeset
    47
 			tcp_device_hostname = "localhost";
db8aa9865e9f 15776792 Upgrade TrouSerS TPM library to 0.3.13
Dan Anderson <dan.anderson@oracle.com>
parents: 777
diff changeset
    48
 		if ((un_socket_device_path = getenv("TCSD_UN_SOCKET_DEVICE_PATH")) == NULL)
db8aa9865e9f 15776792 Upgrade TrouSerS TPM library to 0.3.13
Dan Anderson <dan.anderson@oracle.com>
parents: 777
diff changeset
    49
-			un_socket_device_path = "/var/run/tpm/tpmd_socket:0";
db8aa9865e9f 15776792 Upgrade TrouSerS TPM library to 0.3.13
Dan Anderson <dan.anderson@oracle.com>
parents: 777
diff changeset
    50
+			un_socket_device_path = TCSD_DEFAULT_SOCKET;
db8aa9865e9f 15776792 Upgrade TrouSerS TPM library to 0.3.13
Dan Anderson <dan.anderson@oracle.com>
parents: 777
diff changeset
    51
 		if ((tcp_device_port_string = getenv("TCSD_TCP_DEVICE_PORT")) != NULL)
db8aa9865e9f 15776792 Upgrade TrouSerS TPM library to 0.3.13
Dan Anderson <dan.anderson@oracle.com>
parents: 777
diff changeset
    52
 			tcp_device_port = atoi(tcp_device_port_string);
db8aa9865e9f 15776792 Upgrade TrouSerS TPM library to 0.3.13
Dan Anderson <dan.anderson@oracle.com>
parents: 777
diff changeset
    53
 		else
6268
447a28fa6a83 23618255 tcsd is coredumping on TPM enabled x86 systems
Dan Anderson <dan.anderson@oracle.com>
parents: 5941
diff changeset
    54
@@ -63,7 +79,7 @@
399
d877cc559d95 7056071 enable tcsd failed in Solaris 11
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents: 259
diff changeset
    55
 	 
d877cc559d95 7056071 enable tcsd failed in Solaris 11
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents: 259
diff changeset
    56
 		
d877cc559d95 7056071 enable tcsd failed in Solaris 11
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents: 259
diff changeset
    57
 		fd = socket(AF_INET, SOCK_STREAM, 0);
d877cc559d95 7056071 enable tcsd failed in Solaris 11
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents: 259
diff changeset
    58
-		if (fd > 0) {
d877cc559d95 7056071 enable tcsd failed in Solaris 11
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents: 259
diff changeset
    59
+		if (fd >= 0) {
d877cc559d95 7056071 enable tcsd failed in Solaris 11
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents: 259
diff changeset
    60
 			struct hostent *host = gethostbyname(tcp_device_hostname);
d877cc559d95 7056071 enable tcsd failed in Solaris 11
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents: 259
diff changeset
    61
 			if (host != NULL) {   
d877cc559d95 7056071 enable tcsd failed in Solaris 11
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents: 259
diff changeset
    62
 				struct sockaddr_in addr;
6268
447a28fa6a83 23618255 tcsd is coredumping on TPM enabled x86 systems
Dan Anderson <dan.anderson@oracle.com>
parents: 5941
diff changeset
    63
@@ -105,12 +121,16 @@
259
520697a05dde 7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff changeset
    64
 		/* tpm_device_paths is filled out in tddl.h */
520697a05dde 7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff changeset
    65
 		for (i = 0; tpm_device_nodes[i].path != NULL; i++) {
520697a05dde 7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff changeset
    66
 			errno = 0;
520697a05dde 7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff changeset
    67
-			if ((fd = open(tpm_device_nodes[i].path, O_RDWR)) >= 0)
520697a05dde 7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff changeset
    68
+			if ((fd = open(tpm_device_nodes[i].path, O_RDWR)) >= 0) {
399
d877cc559d95 7056071 enable tcsd failed in Solaris 11
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents: 259
diff changeset
    69
 				break;
d877cc559d95 7056071 enable tcsd failed in Solaris 11
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents: 259
diff changeset
    70
+			} else {
259
520697a05dde 7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff changeset
    71
+				fprintf(stderr, "Error opening %s: %s\n",
520697a05dde 7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff changeset
    72
+				    tpm_device_nodes[i].path, strerror(errno));
520697a05dde 7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff changeset
    73
+			}
520697a05dde 7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff changeset
    74
 		}
520697a05dde 7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff changeset
    75
 	}
399
d877cc559d95 7056071 enable tcsd failed in Solaris 11
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents: 259
diff changeset
    76
-	
d877cc559d95 7056071 enable tcsd failed in Solaris 11
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents: 259
diff changeset
    77
-	if (fd > 0) {
d877cc559d95 7056071 enable tcsd failed in Solaris 11
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents: 259
diff changeset
    78
+
d877cc559d95 7056071 enable tcsd failed in Solaris 11
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents: 259
diff changeset
    79
+	if (fd >= 0) {
d877cc559d95 7056071 enable tcsd failed in Solaris 11
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents: 259
diff changeset
    80
 		opened_device = &(tpm_device_nodes[i]);
d877cc559d95 7056071 enable tcsd failed in Solaris 11
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents: 259
diff changeset
    81
 		tpm_device_nodes[i].fd = fd;
d877cc559d95 7056071 enable tcsd failed in Solaris 11
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents: 259
diff changeset
    82
 	}
6268
447a28fa6a83 23618255 tcsd is coredumping on TPM enabled x86 systems
Dan Anderson <dan.anderson@oracle.com>
parents: 5941
diff changeset
    83
@@ -181,11 +201,13 @@
259
520697a05dde 7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff changeset
    84
 			/* fall through */
520697a05dde 7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff changeset
    85
 		case TDDL_TRANSMIT_IOCTL:
520697a05dde 7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff changeset
    86
 			errno = 0;
520697a05dde 7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff changeset
    87
+#ifndef SOLARIS
520697a05dde 7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff changeset
    88
 			if ((sizeResult = ioctl(opened_device->fd, TPMIOC_TRANSMIT, txBuffer)) != -1) {
520697a05dde 7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff changeset
    89
 				opened_device->transmit = TDDL_TRANSMIT_IOCTL;
520697a05dde 7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff changeset
    90
 				break;
520697a05dde 7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff changeset
    91
 			}
520697a05dde 7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff changeset
    92
 			LogWarn("ioctl: (%d) %s", errno, strerror(errno));
520697a05dde 7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff changeset
    93
+#endif
520697a05dde 7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff changeset
    94
 			LogInfo("Falling back to Read/Write device support.");
520697a05dde 7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff changeset
    95
 			/* fall through */
520697a05dde 7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff changeset
    96
 		case TDDL_TRANSMIT_RW:
6268
447a28fa6a83 23618255 tcsd is coredumping on TPM enabled x86 systems
Dan Anderson <dan.anderson@oracle.com>
parents: 5941
diff changeset
    97
@@ -255,6 +277,7 @@
259
520697a05dde 7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff changeset
    98
 
520697a05dde 7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff changeset
    99
 TSS_RESULT Tddli_Cancel(void)
520697a05dde 7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff changeset
   100
 {
520697a05dde 7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff changeset
   101
+#ifndef SOLARIS
520697a05dde 7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff changeset
   102
 	int rc;
520697a05dde 7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff changeset
   103
 
520697a05dde 7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff changeset
   104
 	if (opened_device->transmit == TDDL_TRANSMIT_IOCTL) {
6268
447a28fa6a83 23618255 tcsd is coredumping on TPM enabled x86 systems
Dan Anderson <dan.anderson@oracle.com>
parents: 5941
diff changeset
   105
@@ -270,4 +293,7 @@
259
520697a05dde 7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff changeset
   106
 	} else {
520697a05dde 7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff changeset
   107
 		return TDDLERR(TSS_E_NOTIMPL);
520697a05dde 7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff changeset
   108
 	}
520697a05dde 7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff changeset
   109
+#else
520697a05dde 7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff changeset
   110
+	return TDDLERR(TSS_E_NOTIMPL);
520697a05dde 7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff changeset
   111
+#endif /* SOLARIS */
520697a05dde 7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff changeset
   112
 }