SNMP: Avoid NULL pointer dereference in snmp_scalar.c

This commit is contained in:
Dirk Ziegelmeier 2018-10-23 14:26:29 +02:00
parent ff8d1a384f
commit 2e7b4573a5

View File

@ -193,28 +193,43 @@ snmp_scalar_array_get_next_instance(const u32_t *root_oid, u8_t root_oid_len, st
static s16_t
snmp_scalar_array_get_value(struct snmp_node_instance *instance, void *value)
{
snmp_err_t result = SNMP_ERR_NOSUCHINSTANCE;
const struct snmp_scalar_array_node *array_node = (const struct snmp_scalar_array_node *)(const void *)instance->node;
const struct snmp_scalar_array_node_def *array_node_def = (const struct snmp_scalar_array_node_def *)instance->reference.const_ptr;
return array_node->get_value(array_node_def, value);
if (array_node->get_value != NULL)
{
result = array_node->get_value(array_node_def, value);
}
return result;
}
static snmp_err_t
snmp_scalar_array_set_test(struct snmp_node_instance *instance, u16_t value_len, void *value)
{
snmp_err_t result = SNMP_ERR_NOSUCHINSTANCE;
const struct snmp_scalar_array_node *array_node = (const struct snmp_scalar_array_node *)(const void *)instance->node;
const struct snmp_scalar_array_node_def *array_node_def = (const struct snmp_scalar_array_node_def *)instance->reference.const_ptr;
return array_node->set_test(array_node_def, value_len, value);
if (array_node->set_test != NULL)
{
result = array_node->set_test(array_node_def, value_len, value);
}
return result;
}
static snmp_err_t
snmp_scalar_array_set_value(struct snmp_node_instance *instance, u16_t value_len, void *value)
{
snmp_err_t result = SNMP_ERR_NOSUCHINSTANCE;
const struct snmp_scalar_array_node *array_node = (const struct snmp_scalar_array_node *)(const void *)instance->node;
const struct snmp_scalar_array_node_def *array_node_def = (const struct snmp_scalar_array_node_def *)instance->reference.const_ptr;
return array_node->set_value(array_node_def, value_len, value);
if (array_node->set_value != NULL)
{
result = array_node->set_value(array_node_def, value_len, value);
}
return result;
}
#endif /* LWIP_SNMP */