OLD | NEW |
1 | 1 |
2 /* | 2 /* |
3 * Licensed Materials - Property of IBM | 3 * Licensed Materials - Property of IBM |
4 * | 4 * |
5 * trousers - An open source TCG Software Stack | 5 * trousers - An open source TCG Software Stack |
6 * | 6 * |
7 * (C) Copyright International Business Machines Corp. 2004-2007 | 7 * (C) Copyright International Business Machines Corp. 2004-2007 |
8 * | 8 * |
9 */ | 9 */ |
10 | 10 |
(...skipping 450 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
461 UnloadBlob_UINT32(&offset1, len1, b); | 461 UnloadBlob_UINT32(&offset1, len1, b); |
462 if ((*blob1 = malloc(*len1)) == NULL) { | 462 if ((*blob1 = malloc(*len1)) == NULL) { |
463 LogError("malloc of %u bytes failed", *len1); | 463 LogError("malloc of %u bytes failed", *len1); |
464 return TCSERR(TSS_E_OUTOFMEMORY); | 464 return TCSERR(TSS_E_OUTOFMEMORY); |
465 } | 465 } |
466 | 466 |
467 UnloadBlob(&offset1, *len1, b, *blob1); | 467 UnloadBlob(&offset1, *len1, b, *blob1); |
468 | 468 |
469 UnloadBlob_UINT32(&offset1, len2, b); | 469 UnloadBlob_UINT32(&offset1, len2, b); |
470 if ((*blob2 = malloc(*len2)) == NULL) { | 470 if ((*blob2 = malloc(*len2)) == NULL) { |
| 471 free(*blob1); |
471 LogError("malloc of %u bytes failed", *len2); | 472 LogError("malloc of %u bytes failed", *len2); |
472 return TCSERR(TSS_E_OUTOFMEMORY); | 473 return TCSERR(TSS_E_OUTOFMEMORY); |
473 } | 474 } |
474 | 475 |
475 UnloadBlob(&offset1, *len2, b, *blob2); | 476 UnloadBlob(&offset1, *len2, b, *blob2); |
476 | 477 |
477 break; | 478 break; |
478 } | 479 } |
479 /* TPM BLOB: BLOB, optional AUTH, AUTH | 480 /* TPM BLOB: BLOB, optional AUTH, AUTH |
480 * return: UINT32 *, BYTE **, optional AUTH, AUTH */ | 481 * return: UINT32 *, BYTE **, optional AUTH, AUTH */ |
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
542 return TCSERR(TSS_E_OUTOFMEMORY); | 543 return TCSERR(TSS_E_OUTOFMEMORY); |
543 } | 544 } |
544 *len1 = offset1; | 545 *len1 = offset1; |
545 | 546 |
546 UnloadBlob(&offset2, offset1, b, *blob1); | 547 UnloadBlob(&offset2, offset1, b, *blob1); |
547 | 548 |
548 /* offset2 points to the stuff after the key */ | 549 /* offset2 points to the stuff after the key */ |
549 UnloadBlob_UINT32(&offset2, len2, b); | 550 UnloadBlob_UINT32(&offset2, len2, b); |
550 | 551 |
551 if ((*blob2 = malloc(*len2)) == NULL) { | 552 if ((*blob2 = malloc(*len2)) == NULL) { |
| 553 free(*blob1); |
552 LogError("malloc of %u bytes failed", *len2); | 554 LogError("malloc of %u bytes failed", *len2); |
553 return TCSERR(TSS_E_OUTOFMEMORY); | 555 return TCSERR(TSS_E_OUTOFMEMORY); |
554 } | 556 } |
555 | 557 |
556 UnloadBlob(&offset2, *len2, b, *blob2); | 558 UnloadBlob(&offset2, *len2, b, *blob2); |
557 | 559 |
558 if (auth1) | 560 if (auth1) |
559 UnloadBlob_Auth(&offset2, b, auth1); | 561 UnloadBlob_Auth(&offset2, b, auth1); |
560 UnloadBlob_Auth(&offset2, b, auth2); | 562 UnloadBlob_Auth(&offset2, b, auth2); |
561 | 563 |
(...skipping 1611 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2173 break; | 2175 break; |
2174 } | 2176 } |
2175 #endif | 2177 #endif |
2176 default: | 2178 default: |
2177 LogError("Unknown ordinal: 0x%x", ordinal); | 2179 LogError("Unknown ordinal: 0x%x", ordinal); |
2178 break; | 2180 break; |
2179 } | 2181 } |
2180 | 2182 |
2181 return result; | 2183 return result; |
2182 } | 2184 } |
OLD | NEW |