components/trousers/patches/tspi_rpc_tcstp_rpc.c.patch
author Melynda Hunter <melynda.hunter@oracle.com>
Wed, 06 Feb 2013 15:03:05 -0800
branchs11u1-sru
changeset 2485 9c1e9850ee41
parent 777 e2e604cdbd6a
child 5941 db8aa9865e9f
permissions -rw-r--r--
Added tag 0.175.1.5.0.1.0 for changeset c53d740a9580
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
777
e2e604cdbd6a 7123028 Problem with crypto/tss
Dan Anderson <dan.anderson@oracle.com>
parents:
diff changeset
     1
--- src/tspi/rpc/tcstp/rpc.c	2010-03-11 12:26:51.000000000 -0800
e2e604cdbd6a 7123028 Problem with crypto/tss
Dan Anderson <dan.anderson@oracle.com>
parents:
diff changeset
     2
+++ src/tspi/rpc/tcstp/rpc.c	2012-04-11 14:28:08.181630000 -0700
e2e604cdbd6a 7123028 Problem with crypto/tss
Dan Anderson <dan.anderson@oracle.com>
parents:
diff changeset
     3
@@ -345,41 +345,67 @@
e2e604cdbd6a 7123028 Problem with crypto/tss
Dan Anderson <dan.anderson@oracle.com>
parents:
diff changeset
     4
 	BYTE *buffer;
e2e604cdbd6a 7123028 Problem with crypto/tss
Dan Anderson <dan.anderson@oracle.com>
parents:
diff changeset
     5
 	TSS_RESULT result;
e2e604cdbd6a 7123028 Problem with crypto/tss
Dan Anderson <dan.anderson@oracle.com>
parents:
diff changeset
     6
 
e2e604cdbd6a 7123028 Problem with crypto/tss
Dan Anderson <dan.anderson@oracle.com>
parents:
diff changeset
     7
-	struct sockaddr_in addr;
e2e604cdbd6a 7123028 Problem with crypto/tss
Dan Anderson <dan.anderson@oracle.com>
parents:
diff changeset
     8
-	struct hostent *hEnt = NULL;
e2e604cdbd6a 7123028 Problem with crypto/tss
Dan Anderson <dan.anderson@oracle.com>
parents:
diff changeset
     9
+	if (get_port() == 0) { /* use UNIX Domain socket */
e2e604cdbd6a 7123028 Problem with crypto/tss
Dan Anderson <dan.anderson@oracle.com>
parents:
diff changeset
    10
+		struct sockaddr_un addr;
e2e604cdbd6a 7123028 Problem with crypto/tss
Dan Anderson <dan.anderson@oracle.com>
parents:
diff changeset
    11
 
e2e604cdbd6a 7123028 Problem with crypto/tss
Dan Anderson <dan.anderson@oracle.com>
parents:
diff changeset
    12
-	sd = socket(PF_INET, SOCK_STREAM, 0);
e2e604cdbd6a 7123028 Problem with crypto/tss
Dan Anderson <dan.anderson@oracle.com>
parents:
diff changeset
    13
-	if (sd == -1) {
e2e604cdbd6a 7123028 Problem with crypto/tss
Dan Anderson <dan.anderson@oracle.com>
parents:
diff changeset
    14
-		LogError("socket: %s", strerror(errno));
e2e604cdbd6a 7123028 Problem with crypto/tss
Dan Anderson <dan.anderson@oracle.com>
parents:
diff changeset
    15
-		result = TSPERR(TSS_E_COMM_FAILURE);
e2e604cdbd6a 7123028 Problem with crypto/tss
Dan Anderson <dan.anderson@oracle.com>
parents:
diff changeset
    16
-		goto err_exit;
e2e604cdbd6a 7123028 Problem with crypto/tss
Dan Anderson <dan.anderson@oracle.com>
parents:
diff changeset
    17
-	}
e2e604cdbd6a 7123028 Problem with crypto/tss
Dan Anderson <dan.anderson@oracle.com>
parents:
diff changeset
    18
-
e2e604cdbd6a 7123028 Problem with crypto/tss
Dan Anderson <dan.anderson@oracle.com>
parents:
diff changeset
    19
-	memset(&addr, 0, sizeof(addr));
e2e604cdbd6a 7123028 Problem with crypto/tss
Dan Anderson <dan.anderson@oracle.com>
parents:
diff changeset
    20
-	addr.sin_family = AF_INET;
e2e604cdbd6a 7123028 Problem with crypto/tss
Dan Anderson <dan.anderson@oracle.com>
parents:
diff changeset
    21
-	addr.sin_port = htons(get_port());
e2e604cdbd6a 7123028 Problem with crypto/tss
Dan Anderson <dan.anderson@oracle.com>
parents:
diff changeset
    22
+		sd = socket(PF_UNIX, SOCK_STREAM, 0);
e2e604cdbd6a 7123028 Problem with crypto/tss
Dan Anderson <dan.anderson@oracle.com>
parents:
diff changeset
    23
+		if (sd == -1) {
e2e604cdbd6a 7123028 Problem with crypto/tss
Dan Anderson <dan.anderson@oracle.com>
parents:
diff changeset
    24
+			LogError("socket(PF_UNIX): %s", strerror(errno));
e2e604cdbd6a 7123028 Problem with crypto/tss
Dan Anderson <dan.anderson@oracle.com>
parents:
diff changeset
    25
+			result = TSPERR(TSS_E_COMM_FAILURE);
e2e604cdbd6a 7123028 Problem with crypto/tss
Dan Anderson <dan.anderson@oracle.com>
parents:
diff changeset
    26
+			goto err_exit;
e2e604cdbd6a 7123028 Problem with crypto/tss
Dan Anderson <dan.anderson@oracle.com>
parents:
diff changeset
    27
+		}
e2e604cdbd6a 7123028 Problem with crypto/tss
Dan Anderson <dan.anderson@oracle.com>
parents:
diff changeset
    28
 
e2e604cdbd6a 7123028 Problem with crypto/tss
Dan Anderson <dan.anderson@oracle.com>
parents:
diff changeset
    29
-	LogDebug("Sending TSP packet to host %s.", hte->hostname);
e2e604cdbd6a 7123028 Problem with crypto/tss
Dan Anderson <dan.anderson@oracle.com>
parents:
diff changeset
    30
+		memset(&addr, 0, sizeof(addr));
e2e604cdbd6a 7123028 Problem with crypto/tss
Dan Anderson <dan.anderson@oracle.com>
parents:
diff changeset
    31
+		addr.sun_family = AF_UNIX;
e2e604cdbd6a 7123028 Problem with crypto/tss
Dan Anderson <dan.anderson@oracle.com>
parents:
diff changeset
    32
+		strncpy(addr.sun_path, TCSD_DEFAULT_SOCKET,
e2e604cdbd6a 7123028 Problem with crypto/tss
Dan Anderson <dan.anderson@oracle.com>
parents:
diff changeset
    33
+			sizeof(addr.sun_path));
e2e604cdbd6a 7123028 Problem with crypto/tss
Dan Anderson <dan.anderson@oracle.com>
parents:
diff changeset
    34
+
e2e604cdbd6a 7123028 Problem with crypto/tss
Dan Anderson <dan.anderson@oracle.com>
parents:
diff changeset
    35
+		LogDebug("Connecting to UNIX Domain socket %s",
e2e604cdbd6a 7123028 Problem with crypto/tss
Dan Anderson <dan.anderson@oracle.com>
parents:
diff changeset
    36
+			TCSD_DEFAULT_SOCKET);
e2e604cdbd6a 7123028 Problem with crypto/tss
Dan Anderson <dan.anderson@oracle.com>
parents:
diff changeset
    37
+
e2e604cdbd6a 7123028 Problem with crypto/tss
Dan Anderson <dan.anderson@oracle.com>
parents:
diff changeset
    38
+		if (connect(sd, (struct sockaddr *) &addr, sizeof (addr))) {
e2e604cdbd6a 7123028 Problem with crypto/tss
Dan Anderson <dan.anderson@oracle.com>
parents:
diff changeset
    39
+			LogError("connect: %s", strerror(errno));
e2e604cdbd6a 7123028 Problem with crypto/tss
Dan Anderson <dan.anderson@oracle.com>
parents:
diff changeset
    40
+			result = TSPERR(TSS_E_COMM_FAILURE);
e2e604cdbd6a 7123028 Problem with crypto/tss
Dan Anderson <dan.anderson@oracle.com>
parents:
diff changeset
    41
+			goto err_exit;
e2e604cdbd6a 7123028 Problem with crypto/tss
Dan Anderson <dan.anderson@oracle.com>
parents:
diff changeset
    42
+		}
e2e604cdbd6a 7123028 Problem with crypto/tss
Dan Anderson <dan.anderson@oracle.com>
parents:
diff changeset
    43
 
e2e604cdbd6a 7123028 Problem with crypto/tss
Dan Anderson <dan.anderson@oracle.com>
parents:
diff changeset
    44
-	/* try to resolve by hostname first */
e2e604cdbd6a 7123028 Problem with crypto/tss
Dan Anderson <dan.anderson@oracle.com>
parents:
diff changeset
    45
-	hEnt = gethostbyname((char *)hte->hostname);
e2e604cdbd6a 7123028 Problem with crypto/tss
Dan Anderson <dan.anderson@oracle.com>
parents:
diff changeset
    46
-	if (hEnt == NULL) {
e2e604cdbd6a 7123028 Problem with crypto/tss
Dan Anderson <dan.anderson@oracle.com>
parents:
diff changeset
    47
-		/* if by hostname fails, try by dot notation */
e2e604cdbd6a 7123028 Problem with crypto/tss
Dan Anderson <dan.anderson@oracle.com>
parents:
diff changeset
    48
-		if (inet_aton((char *)hte->hostname, &addr.sin_addr) == 0) {
e2e604cdbd6a 7123028 Problem with crypto/tss
Dan Anderson <dan.anderson@oracle.com>
parents:
diff changeset
    49
-			LogError("hostname %s does not resolve to a valid address.", hte->hostname);
e2e604cdbd6a 7123028 Problem with crypto/tss
Dan Anderson <dan.anderson@oracle.com>
parents:
diff changeset
    50
-			result = TSPERR(TSS_E_CONNECTION_FAILED);
e2e604cdbd6a 7123028 Problem with crypto/tss
Dan Anderson <dan.anderson@oracle.com>
parents:
diff changeset
    51
+	} else { /* use TCP socket */
e2e604cdbd6a 7123028 Problem with crypto/tss
Dan Anderson <dan.anderson@oracle.com>
parents:
diff changeset
    52
+		struct sockaddr_in addr;
e2e604cdbd6a 7123028 Problem with crypto/tss
Dan Anderson <dan.anderson@oracle.com>
parents:
diff changeset
    53
+		struct hostent *hEnt = NULL;
e2e604cdbd6a 7123028 Problem with crypto/tss
Dan Anderson <dan.anderson@oracle.com>
parents:
diff changeset
    54
+
e2e604cdbd6a 7123028 Problem with crypto/tss
Dan Anderson <dan.anderson@oracle.com>
parents:
diff changeset
    55
+		sd = socket(PF_INET, SOCK_STREAM, 0);
e2e604cdbd6a 7123028 Problem with crypto/tss
Dan Anderson <dan.anderson@oracle.com>
parents:
diff changeset
    56
+		if (sd == -1) {
e2e604cdbd6a 7123028 Problem with crypto/tss
Dan Anderson <dan.anderson@oracle.com>
parents:
diff changeset
    57
+			LogError("socket: %s", strerror(errno));
e2e604cdbd6a 7123028 Problem with crypto/tss
Dan Anderson <dan.anderson@oracle.com>
parents:
diff changeset
    58
+			result = TSPERR(TSS_E_COMM_FAILURE);
e2e604cdbd6a 7123028 Problem with crypto/tss
Dan Anderson <dan.anderson@oracle.com>
parents:
diff changeset
    59
 			goto err_exit;
e2e604cdbd6a 7123028 Problem with crypto/tss
Dan Anderson <dan.anderson@oracle.com>
parents:
diff changeset
    60
 		}
e2e604cdbd6a 7123028 Problem with crypto/tss
Dan Anderson <dan.anderson@oracle.com>
parents:
diff changeset
    61
-	} else {
e2e604cdbd6a 7123028 Problem with crypto/tss
Dan Anderson <dan.anderson@oracle.com>
parents:
diff changeset
    62
-		memcpy(&addr.sin_addr, hEnt->h_addr_list[0], 4);
e2e604cdbd6a 7123028 Problem with crypto/tss
Dan Anderson <dan.anderson@oracle.com>
parents:
diff changeset
    63
-	}
e2e604cdbd6a 7123028 Problem with crypto/tss
Dan Anderson <dan.anderson@oracle.com>
parents:
diff changeset
    64
 
e2e604cdbd6a 7123028 Problem with crypto/tss
Dan Anderson <dan.anderson@oracle.com>
parents:
diff changeset
    65
-	LogDebug("Connecting to %s", inet_ntoa(addr.sin_addr));
e2e604cdbd6a 7123028 Problem with crypto/tss
Dan Anderson <dan.anderson@oracle.com>
parents:
diff changeset
    66
+		memset(&addr, 0, sizeof(addr));
e2e604cdbd6a 7123028 Problem with crypto/tss
Dan Anderson <dan.anderson@oracle.com>
parents:
diff changeset
    67
+		addr.sin_family = AF_INET;
e2e604cdbd6a 7123028 Problem with crypto/tss
Dan Anderson <dan.anderson@oracle.com>
parents:
diff changeset
    68
+		addr.sin_port = htons(get_port());
e2e604cdbd6a 7123028 Problem with crypto/tss
Dan Anderson <dan.anderson@oracle.com>
parents:
diff changeset
    69
+
e2e604cdbd6a 7123028 Problem with crypto/tss
Dan Anderson <dan.anderson@oracle.com>
parents:
diff changeset
    70
+		LogDebug("Sending TSP packet to host %s.", hte->hostname);
e2e604cdbd6a 7123028 Problem with crypto/tss
Dan Anderson <dan.anderson@oracle.com>
parents:
diff changeset
    71
+
e2e604cdbd6a 7123028 Problem with crypto/tss
Dan Anderson <dan.anderson@oracle.com>
parents:
diff changeset
    72
+		/* try to resolve by hostname first */
e2e604cdbd6a 7123028 Problem with crypto/tss
Dan Anderson <dan.anderson@oracle.com>
parents:
diff changeset
    73
+		hEnt = gethostbyname((char *)hte->hostname);
e2e604cdbd6a 7123028 Problem with crypto/tss
Dan Anderson <dan.anderson@oracle.com>
parents:
diff changeset
    74
+		if (hEnt == NULL) {
e2e604cdbd6a 7123028 Problem with crypto/tss
Dan Anderson <dan.anderson@oracle.com>
parents:
diff changeset
    75
+			/* if by hostname fails, try by dot notation */
e2e604cdbd6a 7123028 Problem with crypto/tss
Dan Anderson <dan.anderson@oracle.com>
parents:
diff changeset
    76
+			if (inet_aton((char *)hte->hostname, &addr.sin_addr) == 0) {
e2e604cdbd6a 7123028 Problem with crypto/tss
Dan Anderson <dan.anderson@oracle.com>
parents:
diff changeset
    77
+				LogError("hostname %s does not resolve to a valid address.", hte->hostname);
e2e604cdbd6a 7123028 Problem with crypto/tss
Dan Anderson <dan.anderson@oracle.com>
parents:
diff changeset
    78
+				result = TSPERR(TSS_E_CONNECTION_FAILED);
e2e604cdbd6a 7123028 Problem with crypto/tss
Dan Anderson <dan.anderson@oracle.com>
parents:
diff changeset
    79
+				goto err_exit;
e2e604cdbd6a 7123028 Problem with crypto/tss
Dan Anderson <dan.anderson@oracle.com>
parents:
diff changeset
    80
+			}
e2e604cdbd6a 7123028 Problem with crypto/tss
Dan Anderson <dan.anderson@oracle.com>
parents:
diff changeset
    81
+		} else {
e2e604cdbd6a 7123028 Problem with crypto/tss
Dan Anderson <dan.anderson@oracle.com>
parents:
diff changeset
    82
+			memcpy(&addr.sin_addr, hEnt->h_addr_list[0], 4);
e2e604cdbd6a 7123028 Problem with crypto/tss
Dan Anderson <dan.anderson@oracle.com>
parents:
diff changeset
    83
+		}
e2e604cdbd6a 7123028 Problem with crypto/tss
Dan Anderson <dan.anderson@oracle.com>
parents:
diff changeset
    84
 
e2e604cdbd6a 7123028 Problem with crypto/tss
Dan Anderson <dan.anderson@oracle.com>
parents:
diff changeset
    85
-	if (connect(sd, (struct sockaddr *) &addr, sizeof (addr))) {
e2e604cdbd6a 7123028 Problem with crypto/tss
Dan Anderson <dan.anderson@oracle.com>
parents:
diff changeset
    86
-		LogError("connect: %s", strerror(errno));
e2e604cdbd6a 7123028 Problem with crypto/tss
Dan Anderson <dan.anderson@oracle.com>
parents:
diff changeset
    87
-		result = TSPERR(TSS_E_COMM_FAILURE);
e2e604cdbd6a 7123028 Problem with crypto/tss
Dan Anderson <dan.anderson@oracle.com>
parents:
diff changeset
    88
-		goto err_exit;
e2e604cdbd6a 7123028 Problem with crypto/tss
Dan Anderson <dan.anderson@oracle.com>
parents:
diff changeset
    89
+		LogDebug("Connecting to %s", inet_ntoa(addr.sin_addr));
e2e604cdbd6a 7123028 Problem with crypto/tss
Dan Anderson <dan.anderson@oracle.com>
parents:
diff changeset
    90
+
e2e604cdbd6a 7123028 Problem with crypto/tss
Dan Anderson <dan.anderson@oracle.com>
parents:
diff changeset
    91
+		if (connect(sd, (struct sockaddr *) &addr, sizeof (addr))) {
e2e604cdbd6a 7123028 Problem with crypto/tss
Dan Anderson <dan.anderson@oracle.com>
parents:
diff changeset
    92
+			LogError("connect: %s", strerror(errno));
e2e604cdbd6a 7123028 Problem with crypto/tss
Dan Anderson <dan.anderson@oracle.com>
parents:
diff changeset
    93
+			result = TSPERR(TSS_E_COMM_FAILURE);
e2e604cdbd6a 7123028 Problem with crypto/tss
Dan Anderson <dan.anderson@oracle.com>
parents:
diff changeset
    94
+			goto err_exit;
e2e604cdbd6a 7123028 Problem with crypto/tss
Dan Anderson <dan.anderson@oracle.com>
parents:
diff changeset
    95
+		}
e2e604cdbd6a 7123028 Problem with crypto/tss
Dan Anderson <dan.anderson@oracle.com>
parents:
diff changeset
    96
 	}
e2e604cdbd6a 7123028 Problem with crypto/tss
Dan Anderson <dan.anderson@oracle.com>
parents:
diff changeset
    97
 
e2e604cdbd6a 7123028 Problem with crypto/tss
Dan Anderson <dan.anderson@oracle.com>
parents:
diff changeset
    98
 	if (send_to_socket(sd, hte->comm.buf, hte->comm.hdr.packet_size) < 0) {