Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(8)

Side by Side Diff: src/tcs/ps/ps_utils.c

Issue 3581012: Upgrade from trousers 0.3.3 to 0.3.6 and from testsuite 0.2 to 0.3. (Closed) Base URL: ssh://git@gitrw.chromium.org:9222/trousers.git
Patch Set: git cl push Created 10 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « src/tcs/log.c ('k') | src/tcs/ps/tcsps.c » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1
2 /* 1 /*
3 * Licensed Materials - Property of IBM 2 * Licensed Materials - Property of IBM
4 * 3 *
5 * trousers - An open source TCG Software Stack 4 * trousers - An open source TCG Software Stack
6 * 5 *
7 * (C) Copyright International Business Machines Corp. 2004 6 * (C) Copyright International Business Machines Corp. 2004
8 * 7 *
9 */ 8 */
10 9
11 10
12 #include <stdlib.h> 11 #include <stdlib.h>
13 #include <stdio.h> 12 #include <stdio.h>
14 #include <unistd.h> 13 #include <unistd.h>
15 #include <sys/types.h> 14 #include <sys/types.h>
16 #include <sys/stat.h> 15 #include <sys/stat.h>
16 #if defined(HAVE_BYTEORDER_H)
17 #include <sys/byteorder.h>
18 #elif defined(HTOLE_DEFINED)
19 #include <endian.h>
20 #define LE_16 htole16
21 #define LE_32 htole32
22 #define LE_64 htole64
23 #else
24 #define LE_16(x) (x)
25 #define LE_32(x) (x)
26 #define LE_64(x) (x)
27 #endif
17 #include <fcntl.h> 28 #include <fcntl.h>
18 #include <string.h> 29 #include <string.h>
19 #include <limits.h> 30 #include <limits.h>
20 #include <assert.h> 31 #include <assert.h>
21 #include <errno.h> 32 #include <errno.h>
22 33
23 #include "trousers/tss.h" 34 #include "trousers/tss.h"
24 #include "trousers_types.h" 35 #include "trousers_types.h"
25 #include "tcs_int_literals.h" 36 #include "tcs_int_literals.h"
26 #include "tcsps.h" 37 #include "tcsps.h"
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after
126 137
127 /* go to NUM_KEYS */ 138 /* go to NUM_KEYS */
128 rc = lseek(fd, TSSPS_NUM_KEYS_OFFSET, SEEK_SET); 139 rc = lseek(fd, TSSPS_NUM_KEYS_OFFSET, SEEK_SET);
129 if (rc == ((off_t) - 1)) { 140 if (rc == ((off_t) - 1)) {
130 LogError("lseek: %s", strerror(errno)); 141 LogError("lseek: %s", strerror(errno));
131 return -1; 142 return -1;
132 } 143 }
133 144
134 /* read the number of keys */ 145 /* read the number of keys */
135 rc = read(fd, &num_keys, sizeof(UINT32)); 146 rc = read(fd, &num_keys, sizeof(UINT32));
147 num_keys = LE_32(num_keys);
136 if (rc == -1) { 148 if (rc == -1) {
137 LogError("read of %zd bytes: %s", sizeof(UINT32), strerror(errno )); 149 LogError("read of %zd bytes: %s", sizeof(UINT32), strerror(errno ));
138 return -1; 150 return -1;
139 } else if (rc == 0) { 151 } else if (rc == 0) {
140 /* This is the first key being written */ 152 /* This is the first key being written */
141 num_keys = 1; 153 num_keys = 1;
142 version = 1; 154 version = 1;
143 155
144 /* seek to the PS version */ 156 /* seek to the PS version */
145 rc = lseek(fd, TSSPS_VERSION_OFFSET, SEEK_SET); 157 rc = lseek(fd, TSSPS_VERSION_OFFSET, SEEK_SET);
146 if (rc == ((off_t) - 1)) { 158 if (rc == ((off_t) - 1)) {
147 LogError("lseek: %s", strerror(errno)); 159 LogError("lseek: %s", strerror(errno));
148 return -1; 160 return -1;
149 } 161 }
150 162
151 /* write out the version info byte */ 163 /* write out the version info byte */
152 if ((rc = write_data(fd, &version, sizeof(BYTE)))) { 164 if ((rc = write_data(fd, &version, sizeof(BYTE)))) {
153 LogError("%s", __FUNCTION__); 165 LogError("%s", __FUNCTION__);
154 return rc; 166 return rc;
155 } 167 }
156 168
157 rc = lseek(fd, TSSPS_NUM_KEYS_OFFSET, SEEK_SET); 169 rc = lseek(fd, TSSPS_NUM_KEYS_OFFSET, SEEK_SET);
158 if (rc == ((off_t) - 1)) { 170 if (rc == ((off_t) - 1)) {
159 LogError("lseek: %s", strerror(errno)); 171 LogError("lseek: %s", strerror(errno));
160 return -1; 172 return -1;
161 } 173 }
162 174
175 num_keys = LE_32(num_keys);
163 if ((rc = write_data(fd, &num_keys, sizeof(UINT32)))) { 176 if ((rc = write_data(fd, &num_keys, sizeof(UINT32)))) {
164 LogError("%s", __FUNCTION__); 177 LogError("%s", __FUNCTION__);
165 return rc; 178 return rc;
166 } 179 }
167 180
168 /* return the offset */ 181 /* return the offset */
169 return (TSSPS_NUM_KEYS_OFFSET + sizeof(UINT32)); 182 return (TSSPS_NUM_KEYS_OFFSET + sizeof(UINT32));
170 } 183 }
171 184
172 /* if there is a hole in the file we can write to, find it */ 185 /* if there is a hole in the file we can write to, find it */
173 offset = find_write_offset(pub_data_size, blob_size, vendor_data_size); 186 offset = find_write_offset(pub_data_size, blob_size, vendor_data_size);
174 187
175 if (offset != -1) { 188 if (offset != -1) {
176 /* we found a hole, seek to it and don't increment the # of keys on disk */ 189 /* we found a hole, seek to it and don't increment the # of keys on disk */
177 rc = lseek(fd, offset, SEEK_SET); 190 rc = lseek(fd, offset, SEEK_SET);
178 } else { 191 } else {
179 /* we didn't find a hole, increment the number of keys on disk a nd seek 192 /* we didn't find a hole, increment the number of keys on disk a nd seek
180 * to the end of the file 193 * to the end of the file
181 */ 194 */
182 num_keys++; 195 num_keys++;
183 196
184 /* go to the beginning */ 197 /* go to the beginning */
185 rc = lseek(fd, TSSPS_NUM_KEYS_OFFSET, SEEK_SET); 198 rc = lseek(fd, TSSPS_NUM_KEYS_OFFSET, SEEK_SET);
186 if (rc == ((off_t) - 1)) { 199 if (rc == ((off_t) - 1)) {
187 LogError("lseek: %s", strerror(errno)); 200 LogError("lseek: %s", strerror(errno));
188 return -1; 201 return -1;
189 } 202 }
190 203 num_keys = LE_32(num_keys);
191 if ((rc = write_data(fd, &num_keys, sizeof(UINT32)))) { 204 if ((rc = write_data(fd, &num_keys, sizeof(UINT32)))) {
192 LogError("%s", __FUNCTION__); 205 LogError("%s", __FUNCTION__);
193 return rc; 206 return rc;
194 } 207 }
195 208
196 rc = lseek(fd, 0, SEEK_END); 209 rc = lseek(fd, 0, SEEK_END);
197 } 210 }
198 if (rc == ((off_t) - 1)) { 211 if (rc == ((off_t) - 1)) {
199 LogError("lseek: %s", strerror(errno)); 212 LogError("lseek: %s", strerror(errno));
200 return -1; 213 return -1;
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
267 return 0; 280 return 0;
268 } 281 }
269 282
270 rc = read(fd, &num_keys, sizeof(UINT32)); 283 rc = read(fd, &num_keys, sizeof(UINT32));
271 if (rc < 0) { 284 if (rc < 0) {
272 LogError("read of %zd bytes: %s", sizeof(UINT32), strerror(errno )); 285 LogError("read of %zd bytes: %s", sizeof(UINT32), strerror(errno ));
273 return 0; 286 return 0;
274 } else if ((unsigned)rc < sizeof(UINT32)) { 287 } else if ((unsigned)rc < sizeof(UINT32)) {
275 num_keys = 0; 288 num_keys = 0;
276 } 289 }
290 num_keys = LE_32(num_keys);
277 291
278 return num_keys; 292 return num_keys;
279 } 293 }
280 294
281 /* 295 /*
282 * count the number of valid keys in the cache 296 * count the number of valid keys in the cache
283 */ 297 */
284 int 298 int
285 get_num_keys() 299 get_num_keys()
286 { 300 {
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after
396 if ((rc = read_data(fd, (void *)&tmp->parent_uuid, sizeof(TSS_UU ID)))) { 410 if ((rc = read_data(fd, (void *)&tmp->parent_uuid, sizeof(TSS_UU ID)))) {
397 LogError("%s", __FUNCTION__); 411 LogError("%s", __FUNCTION__);
398 goto err_exit; 412 goto err_exit;
399 } 413 }
400 414
401 /* pub data size */ 415 /* pub data size */
402 if ((rc = read_data(fd, &tmp->pub_data_size, sizeof(UINT16)))) { 416 if ((rc = read_data(fd, &tmp->pub_data_size, sizeof(UINT16)))) {
403 LogError("%s", __FUNCTION__); 417 LogError("%s", __FUNCTION__);
404 goto err_exit; 418 goto err_exit;
405 } 419 }
420 tmp->pub_data_size = LE_16(tmp->pub_data_size);
406 421
407 » » DBG_ASSERT(tmp->pub_data_size <= 2048 && tmp->pub_data_size > 0) ; 422 » » //DBG_ASSERT(tmp->pub_data_size <= 2048 && tmp->pub_data_size > 0);
408 423
409 /* blob size */ 424 /* blob size */
410 if ((rc = read_data(fd, &tmp->blob_size, sizeof(UINT16)))) { 425 if ((rc = read_data(fd, &tmp->blob_size, sizeof(UINT16)))) {
411 LogError("%s", __FUNCTION__); 426 LogError("%s", __FUNCTION__);
412 goto err_exit; 427 goto err_exit;
413 } 428 }
414 429 tmp->blob_size = LE_16(tmp->blob_size);
415 DBG_ASSERT(tmp->blob_size <= 4096 && tmp->blob_size > 0); 430 DBG_ASSERT(tmp->blob_size <= 4096 && tmp->blob_size > 0);
416 431
417 /* vendor data size */ 432 /* vendor data size */
418 if ((rc = read_data(fd, &tmp->vendor_data_size, sizeof(UINT32))) ) { 433 if ((rc = read_data(fd, &tmp->vendor_data_size, sizeof(UINT32))) ) {
419 LogError("%s", __FUNCTION__); 434 LogError("%s", __FUNCTION__);
420 goto err_exit; 435 goto err_exit;
421 } 436 }
437 tmp->vendor_data_size = LE_32(tmp->vendor_data_size);
422 438
423 /* cache flags */ 439 /* cache flags */
424 if ((rc = read_data(fd, &tmp->flags, sizeof(UINT16)))) { 440 if ((rc = read_data(fd, &tmp->flags, sizeof(UINT16)))) {
425 LogError("%s", __FUNCTION__); 441 LogError("%s", __FUNCTION__);
426 goto err_exit; 442 goto err_exit;
427 } 443 }
444 tmp->flags = LE_16(tmp->flags);
428 445
429 #ifdef TSS_DEBUG 446 #ifdef TSS_DEBUG
430 if (tmp->flags & CACHE_FLAG_VALID) 447 if (tmp->flags & CACHE_FLAG_VALID)
431 valid_keys++; 448 valid_keys++;
432 #endif 449 #endif
433 /* fast forward over the pub key */ 450 /* fast forward over the pub key */
434 offset = lseek(fd, tmp->pub_data_size, SEEK_CUR); 451 offset = lseek(fd, tmp->pub_data_size, SEEK_CUR);
435 if (offset == ((off_t) - 1)) { 452 if (offset == ((off_t) - 1)) {
436 LogError("lseek: %s", strerror(errno)); 453 LogError("lseek: %s", strerror(errno));
437 rc = -1; 454 rc = -1;
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
512 do { 529 do {
513 tmp_next = tmp->next; 530 tmp_next = tmp->next;
514 free(tmp); 531 free(tmp);
515 tmp = tmp_next; 532 tmp = tmp_next;
516 } while (tmp); 533 } while (tmp);
517 534
518 MUTEX_UNLOCK(disk_cache_lock); 535 MUTEX_UNLOCK(disk_cache_lock);
519 536
520 return 0; 537 return 0;
521 } 538 }
OLDNEW
« no previous file with comments | « src/tcs/log.c ('k') | src/tcs/ps/tcsps.c » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698