diff --git a/Makefile b/Makefile index b1c1adf..6eeda50 100644 --- a/Makefile +++ b/Makefile @@ -21,6 +21,6 @@ APPNAME = "StakeKit" # Application version APPVERSION_M = 1 APPVERSION_N = 2 -APPVERSION_P = 0 +APPVERSION_P = 1 include ethereum-plugin-sdk/standard_plugin.mk diff --git a/src/handle_finalize.c b/src/handle_finalize.c index cd02915..ce9b125 100644 --- a/src/handle_finalize.c +++ b/src/handle_finalize.c @@ -7,18 +7,20 @@ static bool set_ticker_deposit_for_mapped_token(plugin_parameters_t *context, ethPluginFinalize_t *msg) { for (size_t i = 0; i < NUM_SUPPORTED_SMART_CONTRACT; i++) { - if (!memcmp(msg->pluginSharedRO->txContent->destination, - STAKEKIT_SUPPORTED_YEARN_VAULT[i].smart_contract, - ADDRESS_LENGTH)) { - char ticker[TICKER_LEN]; - strlcpy(ticker, - (char *) STAKEKIT_SUPPORTED_YEARN_VAULT[i].token_symbol_deposit, - sizeof(ticker)); - strlcat(ticker, " ", sizeof(ticker)); - strlcpy(context->ticker_sent, (char *) ticker, sizeof(context->ticker_sent)); - context->decimals_sent = STAKEKIT_SUPPORTED_YEARN_VAULT[i].decimals_sent; - context->tokens_found |= TOKEN_SENT_FOUND; - return true; + if (msg != NULL && msg->pluginSharedRO != NULL && msg->pluginSharedRO->txContent != NULL) { + if (!memcmp(msg->pluginSharedRO->txContent->destination, + STAKEKIT_SUPPORTED_YEARN_VAULT[i].smart_contract, + ADDRESS_LENGTH)) { + char ticker[TICKER_LEN]; + strlcpy(ticker, + (char *) STAKEKIT_SUPPORTED_YEARN_VAULT[i].token_symbol_deposit, + sizeof(ticker)); + strlcat(ticker, " ", sizeof(ticker)); + strlcpy(context->ticker_sent, (char *) ticker, sizeof(context->ticker_sent)); + context->decimals_sent = STAKEKIT_SUPPORTED_YEARN_VAULT[i].decimals_sent; + context->tokens_found |= TOKEN_SENT_FOUND; + return true; + } } } return false; @@ -30,18 +32,20 @@ static bool set_ticker_deposit_for_mapped_token(plugin_parameters_t *context, static bool set_ticker_withdraw_for_mapped_token(plugin_parameters_t *context, ethPluginFinalize_t *msg) { for (size_t i = 0; i < NUM_SUPPORTED_SMART_CONTRACT; i++) { - if (!memcmp(msg->pluginSharedRO->txContent->destination, - STAKEKIT_SUPPORTED_YEARN_VAULT[i].smart_contract, - ADDRESS_LENGTH)) { - char ticker[TICKER_LEN]; - strlcpy(ticker, - (char *) STAKEKIT_SUPPORTED_YEARN_VAULT[i].token_symbol_withdraw, - sizeof(ticker)); - strlcat(ticker, " ", sizeof(ticker)); - strlcpy(context->ticker_sent, (char *) ticker, sizeof(context->ticker_sent)); - context->decimals_sent = STAKEKIT_SUPPORTED_YEARN_VAULT[i].decimals_sent; - context->tokens_found |= TOKEN_SENT_FOUND; - return true; + if (msg != NULL && msg->pluginSharedRO != NULL && msg->pluginSharedRO->txContent != NULL) { + if (!memcmp(msg->pluginSharedRO->txContent->destination, + STAKEKIT_SUPPORTED_YEARN_VAULT[i].smart_contract, + ADDRESS_LENGTH)) { + char ticker[TICKER_LEN]; + strlcpy(ticker, + (char *) STAKEKIT_SUPPORTED_YEARN_VAULT[i].token_symbol_withdraw, + sizeof(ticker)); + strlcat(ticker, " ", sizeof(ticker)); + strlcpy(context->ticker_sent, (char *) ticker, sizeof(context->ticker_sent)); + context->decimals_sent = STAKEKIT_SUPPORTED_YEARN_VAULT[i].decimals_sent; + context->tokens_found |= TOKEN_SENT_FOUND; + return true; + } } } return false; diff --git a/src/handle_query_contract_ui.c b/src/handle_query_contract_ui.c index 949a0ab..a1ab1e0 100644 --- a/src/handle_query_contract_ui.c +++ b/src/handle_query_contract_ui.c @@ -177,6 +177,9 @@ static void set_receive_2_ui(ethQueryContractUI_t *msg, plugin_parameters_t *con // Utility function to print an address to the UI. static void print_address(ethQueryContractUI_t *msg, uint8_t *address) { + if (msg == NULL || msg->msgLength <= MIN_MSG_LENGTH) { + return; + } // Prefix the address with `0x`. msg->msg[0] = '0'; msg->msg[1] = 'x'; diff --git a/src/stakekit_plugin.h b/src/stakekit_plugin.h index da3d9ab..0d6073f 100644 --- a/src/stakekit_plugin.h +++ b/src/stakekit_plugin.h @@ -25,6 +25,8 @@ extern const tokenSymbolAndDecimals_t STAKEKIT_SUPPORTED_YEARN_VAULT[NUM_SUPPORT #define CHAIN_ID_LENGTH 1 +#define MIN_MSG_LENGTH 42 + extern const uint8_t NULL_ETH_ADDRESS[ADDRESS_LENGTH]; // Returns 1 if corresponding address is the address for the chain token (ETH, BNB, MATIC,...)