Fix bug #54381: SNMP RAW_DATA support is broken

This commit is contained in:
Dirk Ziegelmeier 2018-07-26 14:16:00 +02:00
parent 298951c738
commit aafc0adfe1
2 changed files with 2 additions and 2 deletions

View File

@ -451,10 +451,10 @@ snmp_process_varbind(struct snmp_request *request, struct snmp_varbind *vb, u8_t
} }
} else { } else {
s16_t len = node_instance.get_value(&node_instance, vb->value); s16_t len = node_instance.get_value(&node_instance, vb->value);
vb->type = node_instance.asn1_type;
if (len >= 0) { if (len >= 0) {
vb->value_len = (u16_t)len; /* cast is OK because we checked >= 0 above */ vb->value_len = (u16_t)len; /* cast is OK because we checked >= 0 above */
vb->type = node_instance.asn1_type;
LWIP_ASSERT("SNMP_MAX_VALUE_SIZE is configured too low", (vb->value_len & ~SNMP_GET_VALUE_RAW_DATA) <= SNMP_MAX_VALUE_SIZE); LWIP_ASSERT("SNMP_MAX_VALUE_SIZE is configured too low", (vb->value_len & ~SNMP_GET_VALUE_RAW_DATA) <= SNMP_MAX_VALUE_SIZE);
err = snmp_append_outbound_varbind(&request->outbound_pbuf_stream, vb); err = snmp_append_outbound_varbind(&request->outbound_pbuf_stream, vb);

View File

@ -191,7 +191,7 @@ typedef snmp_err_t (*node_instance_set_test_method)(struct snmp_node_instance*,
typedef snmp_err_t (*node_instance_set_value_method)(struct snmp_node_instance*, u16_t, void*); typedef snmp_err_t (*node_instance_set_value_method)(struct snmp_node_instance*, u16_t, void*);
typedef void (*node_instance_release_method)(struct snmp_node_instance*); typedef void (*node_instance_release_method)(struct snmp_node_instance*);
#define SNMP_GET_VALUE_RAW_DATA 0x8000 #define SNMP_GET_VALUE_RAW_DATA 0x4000 /* do not use 0x8000 because return value of node_instance_get_value_method is signed16 and 0x8000 would be the signed bit */
/** SNMP node instance */ /** SNMP node instance */
struct snmp_node_instance struct snmp_node_instance