aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJocelyn Bohr <bohr@chromium.org>2015-08-11 13:42:27 -0700
committerChromeOS Commit Bot <chromeos-commit-bot@chromium.org>2015-08-11 21:58:56 +0000
commit8931d21cdb99bc3a6ce4833bf384a94349470a4d (patch)
tree8025c8341fdf9cd4b9de27948900328d6513dc13
parent5aef9c6461983184408bb4ca0747c7c124b38903 (diff)
downloadtpm2-8931d21cdb99bc3a6ce4833bf384a94349470a4d.tar.gz
Source code changes to correctly account for empty union case.
This change adds cases for valid selector values indicating that no marshaling/unmarshaling should occur. Without these cases, union marshaling functions erroneously return TPM_RC_SELECTOR for some valid selector values (e.g. TPM_ALG_NULL in TPMU_HA). TEST=$ sudo emerge tpm2 builds libtpm2.a $ gcc marshal_test.c -ltpm2 -lssl -lcrypto -o marshal-test $ ./marshal-test passes all test cases BUG=none Change-Id: Ie9f1efda68cdedbe0c09d60728d39d7f34f77d80 Reviewed-on: https://chromium-review.googlesource.com/292880 Reviewed-by: Darren Krahn <dkrahn@chromium.org> Commit-Queue: Jocelyn Bohr <bohr@chromium.org> Tested-by: Jocelyn Bohr <bohr@chromium.org>
-rw-r--r--tpm_generated.c80
1 files changed, 80 insertions, 0 deletions
diff --git a/tpm_generated.c b/tpm_generated.c
index ead8c5d..beb2d0b 100644
--- a/tpm_generated.c
+++ b/tpm_generated.c
@@ -4215,6 +4215,10 @@ UINT16 TPMU_HA_Marshal(TPMU_HA* source,
}
return total_size;
#endif
+#ifdef TPM_ALG_NULL
+ case TPM_ALG_NULL:
+ return 0;
+#endif
#ifdef TPM_ALG_SHA256
case TPM_ALG_SHA256:
for (i = 0; i < SHA256_DIGEST_SIZE; ++i) {
@@ -4270,6 +4274,10 @@ TPM_RC TPMU_HA_Unmarshal(TPMU_HA* target,
}
return TPM_RC_SUCCESS;
#endif
+#ifdef TPM_ALG_NULL
+ case TPM_ALG_NULL:
+ return TPM_RC_SUCCESS;
+#endif
#ifdef TPM_ALG_SHA256
case TPM_ALG_SHA256:
for (i = 0; i < SHA256_DIGEST_SIZE; ++i) {
@@ -5787,6 +5795,10 @@ UINT16 TPMU_SYM_KEY_BITS_Marshal(TPMU_SYM_KEY_BITS* source,
INT32* size,
UINT32 selector) {
switch (selector) {
+#ifdef TPM_ALG_NULL
+ case TPM_ALG_NULL:
+ return 0;
+#endif
#ifdef TPM_ALG_SM4
case TPM_ALG_SM4:
return TPMI_SM4_KEY_BITS_Marshal((TPMI_SM4_KEY_BITS*)&source->SM4, buffer,
@@ -5810,6 +5822,10 @@ TPM_RC TPMU_SYM_KEY_BITS_Unmarshal(TPMU_SYM_KEY_BITS* target,
INT32* size,
UINT32 selector) {
switch (selector) {
+#ifdef TPM_ALG_NULL
+ case TPM_ALG_NULL:
+ return TPM_RC_SUCCESS;
+#endif
#ifdef TPM_ALG_SM4
case TPM_ALG_SM4:
return TPMI_SM4_KEY_BITS_Unmarshal((TPMI_SM4_KEY_BITS*)&target->SM4,
@@ -5833,6 +5849,10 @@ UINT16 TPMU_SYM_MODE_Marshal(TPMU_SYM_MODE* source,
INT32* size,
UINT32 selector) {
switch (selector) {
+#ifdef TPM_ALG_NULL
+ case TPM_ALG_NULL:
+ return 0;
+#endif
#ifdef TPM_ALG_SM4
case TPM_ALG_SM4:
return TPMI_ALG_SYM_MODE_Marshal((TPMI_ALG_SYM_MODE*)&source->SM4, buffer,
@@ -5843,6 +5863,10 @@ UINT16 TPMU_SYM_MODE_Marshal(TPMU_SYM_MODE* source,
return TPMI_ALG_SYM_MODE_Marshal((TPMI_ALG_SYM_MODE*)&source->aes, buffer,
size);
#endif
+#ifdef TPM_ALG_XOR
+ case TPM_ALG_XOR:
+ return 0;
+#endif
}
return 0;
}
@@ -5852,6 +5876,10 @@ TPM_RC TPMU_SYM_MODE_Unmarshal(TPMU_SYM_MODE* target,
INT32* size,
UINT32 selector) {
switch (selector) {
+#ifdef TPM_ALG_NULL
+ case TPM_ALG_NULL:
+ return TPM_RC_SUCCESS;
+#endif
#ifdef TPM_ALG_SM4
case TPM_ALG_SM4:
return TPMI_ALG_SYM_MODE_Unmarshal(&target->SM4, buffer, size, FALSE);
@@ -5860,6 +5888,10 @@ TPM_RC TPMU_SYM_MODE_Unmarshal(TPMU_SYM_MODE* target,
case TPM_ALG_AES:
return TPMI_ALG_SYM_MODE_Unmarshal(&target->aes, buffer, size, FALSE);
#endif
+#ifdef TPM_ALG_XOR
+ case TPM_ALG_XOR:
+ return TPM_RC_SUCCESS;
+#endif
}
return TPM_RC_SELECTOR;
}
@@ -6107,6 +6139,10 @@ UINT16 TPMU_SCHEME_KEYEDHASH_Marshal(TPMU_SCHEME_KEYEDHASH* source,
INT32* size,
UINT32 selector) {
switch (selector) {
+#ifdef TPM_ALG_NULL
+ case TPM_ALG_NULL:
+ return 0;
+#endif
#ifdef TPM_ALG_HMAC
case TPM_ALG_HMAC:
return TPMS_SCHEME_HMAC_Marshal((TPMS_SCHEME_HMAC*)&source->hmac, buffer,
@@ -6126,6 +6162,10 @@ TPM_RC TPMU_SCHEME_KEYEDHASH_Unmarshal(TPMU_SCHEME_KEYEDHASH* target,
INT32* size,
UINT32 selector) {
switch (selector) {
+#ifdef TPM_ALG_NULL
+ case TPM_ALG_NULL:
+ return TPM_RC_SUCCESS;
+#endif
#ifdef TPM_ALG_HMAC
case TPM_ALG_HMAC:
return TPMS_SCHEME_HMAC_Unmarshal((TPMS_SCHEME_HMAC*)&target->hmac,
@@ -6232,6 +6272,10 @@ UINT16 TPMU_SIG_SCHEME_Marshal(TPMU_SIG_SCHEME* source,
return TPMS_SCHEME_ECDSA_Marshal((TPMS_SCHEME_ECDSA*)&source->ecdsa,
buffer, size);
#endif
+#ifdef TPM_ALG_NULL
+ case TPM_ALG_NULL:
+ return 0;
+#endif
}
return 0;
}
@@ -6276,6 +6320,10 @@ TPM_RC TPMU_SIG_SCHEME_Unmarshal(TPMU_SIG_SCHEME* target,
return TPMS_SCHEME_ECDSA_Unmarshal((TPMS_SCHEME_ECDSA*)&target->ecdsa,
buffer, size);
#endif
+#ifdef TPM_ALG_NULL
+ case TPM_ALG_NULL:
+ return TPM_RC_SUCCESS;
+#endif
}
return TPM_RC_SELECTOR;
}
@@ -6445,6 +6493,10 @@ UINT16 TPMU_KDF_SCHEME_Marshal(TPMU_KDF_SCHEME* source,
return TPMS_SCHEME_KDF2_Marshal((TPMS_SCHEME_KDF2*)&source->kdf2, buffer,
size);
#endif
+#ifdef TPM_ALG_NULL
+ case TPM_ALG_NULL:
+ return 0;
+#endif
}
return 0;
}
@@ -6474,6 +6526,10 @@ TPM_RC TPMU_KDF_SCHEME_Unmarshal(TPMU_KDF_SCHEME* target,
return TPMS_SCHEME_KDF2_Unmarshal((TPMS_SCHEME_KDF2*)&target->kdf2,
buffer, size);
#endif
+#ifdef TPM_ALG_NULL
+ case TPM_ALG_NULL:
+ return TPM_RC_SUCCESS;
+#endif
}
return TPM_RC_SELECTOR;
}
@@ -6509,11 +6565,19 @@ UINT16 TPMU_ASYM_SCHEME_Marshal(TPMU_ASYM_SCHEME* source,
INT32* size,
UINT32 selector) {
switch (selector) {
+#ifdef TPM_ALG_RSAES
+ case TPM_ALG_RSAES:
+ return 0;
+#endif
#ifdef TPM_ALG_ECSCHNORR
case TPM_ALG_ECSCHNORR:
return TPMS_SCHEME_ECSCHNORR_Marshal(
(TPMS_SCHEME_ECSCHNORR*)&source->ecSchnorr, buffer, size);
#endif
+#ifdef TPM_ALG_NULL
+ case TPM_ALG_NULL:
+ return 0;
+#endif
#ifdef TPM_ALG_ECDH
case TPM_ALG_ECDH:
return TPMS_SCHEME_ECDH_Marshal((TPMS_SCHEME_ECDH*)&source->ecdh, buffer,
@@ -6558,11 +6622,19 @@ TPM_RC TPMU_ASYM_SCHEME_Unmarshal(TPMU_ASYM_SCHEME* target,
INT32* size,
UINT32 selector) {
switch (selector) {
+#ifdef TPM_ALG_RSAES
+ case TPM_ALG_RSAES:
+ return TPM_RC_SUCCESS;
+#endif
#ifdef TPM_ALG_ECSCHNORR
case TPM_ALG_ECSCHNORR:
return TPMS_SCHEME_ECSCHNORR_Unmarshal(
(TPMS_SCHEME_ECSCHNORR*)&target->ecSchnorr, buffer, size);
#endif
+#ifdef TPM_ALG_NULL
+ case TPM_ALG_NULL:
+ return TPM_RC_SUCCESS;
+#endif
#ifdef TPM_ALG_ECDH
case TPM_ALG_ECDH:
return TPMS_SCHEME_ECDH_Unmarshal((TPMS_SCHEME_ECDH*)&target->ecdh,
@@ -7056,6 +7128,10 @@ UINT16 TPMU_SIGNATURE_Marshal(TPMU_SIGNATURE* source,
return TPMS_SIGNATURE_ECDSA_Marshal((TPMS_SIGNATURE_ECDSA*)&source->ecdsa,
buffer, size);
#endif
+#ifdef TPM_ALG_NULL
+ case TPM_ALG_NULL:
+ return 0;
+#endif
}
return 0;
}
@@ -7099,6 +7175,10 @@ TPM_RC TPMU_SIGNATURE_Unmarshal(TPMU_SIGNATURE* target,
return TPMS_SIGNATURE_ECDSA_Unmarshal(
(TPMS_SIGNATURE_ECDSA*)&target->ecdsa, buffer, size);
#endif
+#ifdef TPM_ALG_NULL
+ case TPM_ALG_NULL:
+ return TPM_RC_SUCCESS;
+#endif
}
return TPM_RC_SELECTOR;
}