9#define strdup_check(dest, str, r, label) \
13 r = TSS2_FAPI_RC_MEMORY; \
14 LOG_ERROR("Out of memory."); \
21#define calloc_check(dest, size, r, label) \
23 dest = callock(size,1); \
25 r = TSS2_FAPI_RC_MEMORY; \
26 LOG_ERROR("Out of memory."); \
31#define goto_if_null2(p,msg, r, ec, label, ...) \
33 LOG_ERROR(TPM2_ERROR_FORMAT " " msg, TPM2_ERROR_TEXT(ec), ## __VA_ARGS__); \
38#define goto_if_error2(r,msg,label, ...) \
39 if (r != TSS2_RC_SUCCESS) { \
40 LOG_ERROR(TPM2_ERROR_FORMAT " " msg, TPM2_ERROR_TEXT(r), ## __VA_ARGS__); \
44#define return_if_error2(r,msg, ...) \
45 if (r != TSS2_RC_SUCCESS) { \
46 LOG_ERROR(TPM2_ERROR_FORMAT " " msg, TPM2_ERROR_TEXT(r), ## __VA_ARGS__); \
50#define try_again_or_error(r,msg, ...) \
51 if (base_rc(r) == TSS2_BASE_RC_TRY_AGAIN) \
52 return TSS2_FAPI_RC_TRY_AGAIN; \
53 if (r != TSS2_RC_SUCCESS) { \
54 LOG_ERROR(TPM2_ERROR_FORMAT " " msg, TPM2_ERROR_TEXT(r), ## __VA_ARGS__); \
58#define try_again_or_error_goto(r,msg, label, ...) \
59 if (base_rc(r) == TSS2_BASE_RC_TRY_AGAIN) \
60 return TSS2_FAPI_RC_TRY_AGAIN; \
61 if (r != TSS2_RC_SUCCESS) { \
62 LOG_ERROR(TPM2_ERROR_FORMAT " " msg, TPM2_ERROR_TEXT(r), ## __VA_ARGS__); \
66#define return_error2(r,msg, ...) { \
67 LOG_ERROR(TPM2_ERROR_FORMAT " " msg, TPM2_ERROR_TEXT(r), ## __VA_ARGS__); \
71#define return_if_error_reset_state(r,msg, ...) \
72 if (r != TSS2_RC_SUCCESS) { \
73 LOG_ERROR(TPM2_ERROR_FORMAT " " msg, TPM2_ERROR_TEXT(r), ## __VA_ARGS__); \
74 context->state = _FAPI_STATE_INIT; \
78#define goto_if_error_reset_state(r,msg,label, ...) \
79 if (r != TSS2_RC_SUCCESS) { \
80 LOG_ERROR(TPM2_ERROR_FORMAT " " msg, TPM2_ERROR_TEXT(r), ## __VA_ARGS__); \
81 context->state = _FAPI_STATE_INIT; \
85#define goto_error_reset_state(r,v,msg,label) { \
87 LOG_ERROR("%s " TPM2_ERROR_FORMAT, msg, TPM2_ERROR_TEXT(r)); \
88 context->state = _FAPI_STATE_INIT; \
91#define goto_if_null_reset_state(p,msg,r,ec,label) \
93 LOG_ERROR("%s ", (msg)); \
94 context->state = _FAPI_STATE_INIT; \
99#define return_try_again(r) \
100 if (base_rc(r) == TSS2_BASE_RC_TRY_AGAIN) { \
101 LOG_TRACE("Received TRY_AGAIN; returning TRY_AGAIN"); \
102 return TSS2_FAPI_RC_TRY_AGAIN; \
105#define check_not_null(X) \
107 LOG_ERROR(str(X) " is NULL: BAD_REFERENCE"); \
108 return TSS2_FAPI_RC_BAD_REFERENCE; \
111#define check_oom(X) \
113 LOG_ERROR("Out of memory"); \
114 return TSS2_FAPI_RC_MEMORY; \
117#if defined __GNUC__ && __GNUC__ < 7
118#define fallthrough { }
120#define fallthrough __attribute__((fallthrough))
123#define statecase(VAR, STATE) \
125 LOG_TRACE("State " str(VAR) " reached " str(STATE)); \
128#define general_failure(VAR) \
130 LOG_ERROR("Bad state for " str(VAR)); \
131 return TSS2_FAPI_RC_GENERAL_FAILURE;
133#define statecasedefault(VAR) \
135 LOG_ERROR("Bad state for " str(VAR)); \
136 return TSS2_FAPI_RC_BAD_SEQUENCE;
138#define statecasedefault_error(VAR, r, label) \
140 LOG_ERROR("Bad state for " str(VAR)); \
141 r = TSS2_FAPI_RC_BAD_SEQUENCE; \