buffer, size, "nullSeed");
}
- BLOCK_SKIP_READ(skip_future_versions, FALSE, buffer, size,
- "STATE_RESET_DATA", "version 4 or later");
+ if (rc == TPM_RC_SUCCESS) {
+ BLOCK_SKIP_READ(skip_future_versions, FALSE, buffer, size,
+ "STATE_RESET_DATA", "version 4 or later");
+ }
/* future versions nest-append here */
}
"OBJECT seedCompatLevel");
}
- BLOCK_SKIP_READ(skip_future_versions, FALSE, buffer, size,
- "OBJECT", "version 4 or later");
+ if (rc == TPM_RC_SUCCESS) {
+ BLOCK_SKIP_READ(skip_future_versions, FALSE, buffer, size,
+ "OBJECT", "version 4 or later");
+ }
/* future versions nest-append here */
}
if (rc == TPM_RC_SUCCESS && hdr.version >= 2) {
BLOCK_SKIP_READ(skip_future_versions, hdr.version >= 3, buffer, size,
"Volatile State", "version 3 or later");
- rc = VolatileState_TailV3_Unmarshal(buffer, size);
-
- BLOCK_SKIP_READ(skip_future_versions, hdr.version >= 4, buffer, size,
- "Volatile State", "version 4 or later");
+ if (rc == TPM_RC_SUCCESS) {
+ rc = VolatileState_TailV3_Unmarshal(buffer, size);
+ }
+ if (rc == TPM_RC_SUCCESS) {
+ BLOCK_SKIP_READ(skip_future_versions, hdr.version >= 4, buffer, size,
+ "Volatile State", "version 4 or later");
+ }
if (rc == TPM_RC_SUCCESS) {
rc = VolatileState_TailV4_Unmarshal(buffer, size);
}
-
- BLOCK_SKIP_READ(skip_future_versions, FALSE, buffer, size,
- "Volatile State", "version 5 or later");
+ if (rc == TPM_RC_SUCCESS) {
+ BLOCK_SKIP_READ(skip_future_versions, FALSE, buffer, size,
+ "Volatile State", "version 5 or later");
+ }
/* future versions append here */
}
if (rc == TPM_RC_SUCCESS && hdr.version >= 2) {
BLOCK_SKIP_READ(skip_future_versions, hdr.version >= 3, buffer, size,
"PERSISTENT_DATA", "version 3 or later");
- rc = TPML_PCR_SELECTION_Unmarshal(&shadow.pcrAllocated, buffer, size);
+ if (rc == TPM_RC_SUCCESS) {
+ rc = TPML_PCR_SELECTION_Unmarshal(&shadow.pcrAllocated, buffer, size);
+ }
- BLOCK_SKIP_READ(skip_future_versions, hdr.version >= 4, buffer, size,
- "PERSISTENT_DATA", "version 4 or later");
+ if (rc == TPM_RC_SUCCESS) {
+ BLOCK_SKIP_READ(skip_future_versions, hdr.version >= 4, buffer, size,
+ "PERSISTENT_DATA", "version 4 or later");
+ }
if (rc == TPM_RC_SUCCESS) {
rc = SEED_COMPAT_LEVEL_Unmarshal(&data->EPSeedCompatLevel,
buffer, size, "PPSeed");
}
- BLOCK_SKIP_READ(skip_future_versions, FALSE, buffer, size,
- "PERSISTENT_DATA", "version 5 or later");
+ if (rc == TPM_RC_SUCCESS) {
+ BLOCK_SKIP_READ(skip_future_versions, FALSE, buffer, size,
+ "PERSISTENT_DATA", "version 5 or later");
+ }
/* future versions nest-append here */
}