mirror of
https://github.com/lwip-tcpip/lwip.git
synced 2024-10-05 22:29:49 +00:00
SNMP: Avoid NULL pointer dereference in snmp_scalar.c
This commit is contained in:
parent
ff8d1a384f
commit
2e7b4573a5
@ -193,28 +193,43 @@ snmp_scalar_array_get_next_instance(const u32_t *root_oid, u8_t root_oid_len, st
|
|||||||
static s16_t
|
static s16_t
|
||||||
snmp_scalar_array_get_value(struct snmp_node_instance *instance, void *value)
|
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 *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;
|
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
|
static snmp_err_t
|
||||||
snmp_scalar_array_set_test(struct snmp_node_instance *instance, u16_t value_len, void *value)
|
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 *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;
|
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
|
static snmp_err_t
|
||||||
snmp_scalar_array_set_value(struct snmp_node_instance *instance, u16_t value_len, void *value)
|
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 *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;
|
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 */
|
#endif /* LWIP_SNMP */
|
||||||
|
Loading…
Reference in New Issue
Block a user