snmp_mib2_system_patch.diff 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. diff --git a/thirdparty/lwip/src/apps/snmp/snmp_mib2_system.c b/thirdparty/lwip/src/apps/snmp/snmp_mib2_system.c
  2. index 4aa2926..f725139 100755
  3. --- a/thirdparty/lwip/src/apps/snmp/snmp_mib2_system.c
  4. +++ b/thirdparty/lwip/src/apps/snmp/snmp_mib2_system.c
  5. @@ -43,6 +43,10 @@
  6. #include <string.h>
  7. +#ifdef SNMP_SYS_PARAM_FILENAME
  8. +#include SNMP_SYS_PARAM_FILENAME
  9. +#endif
  10. +
  11. #if LWIP_SNMP && SNMP_LWIP_MIB2
  12. #if SNMP_USE_NETCONN
  13. @@ -240,7 +244,11 @@ system_get_value(const struct snmp_scalar_array_node_def *node, void *value)
  14. break;
  15. case 2: /* sysObjectID */
  16. {
  17. +#ifdef SNMP_GET_SYSOBJECTID_MTS
  18. + const struct snmp_obj_id* dev_enterprise_oid = SNMP_GET_SYSOBJECTID_MTS();
  19. +#else
  20. const struct snmp_obj_id* dev_enterprise_oid = snmp_get_device_enterprise_oid();
  21. +#endif
  22. MEMCPY(value, dev_enterprise_oid->id, dev_enterprise_oid->len * sizeof(u32_t));
  23. return dev_enterprise_oid->len * sizeof(u32_t);
  24. }
  25. @@ -284,6 +292,9 @@ system_set_test(const struct snmp_scalar_array_node_def *node, u16_t len, void *
  26. snmp_err_t ret = SNMP_ERR_WRONGVALUE;
  27. const u16_t* var_bufsize = NULL;
  28. const u16_t* var_wr_len;
  29. +#ifdef SNMP_SYS_PARAM_FILENAME
  30. + bool check_flag = true;
  31. +#endif
  32. LWIP_UNUSED_ARG(value);
  33. @@ -307,13 +318,24 @@ system_set_test(const struct snmp_scalar_array_node_def *node, u16_t len, void *
  34. /* check if value is writable at all */
  35. if (*var_bufsize > 0) {
  36. +#ifdef SNMP_SYS_PARAM_CHECK
  37. + check_flag = SNMP_SYS_PARAM_CHECK(value, len);
  38. +#endif
  39. if (var_wr_len == NULL) {
  40. /* we have to take the terminating 0 into account */
  41. - if (len < *var_bufsize) {
  42. +#ifdef SNMP_SYS_PARAM_CHECK
  43. + if (len <= *var_bufsize && check_flag) {
  44. +#else
  45. + if (len <= *var_bufsize) {
  46. +#endif
  47. ret = SNMP_ERR_NOERROR;
  48. }
  49. } else {
  50. +#ifdef SNMP_SYS_PARAM_CHECK
  51. + if (len <= *var_bufsize && check_flag) {
  52. +#else
  53. if (len <= *var_bufsize) {
  54. +#endif
  55. ret = SNMP_ERR_NOERROR;
  56. }
  57. }
  58. @@ -358,6 +380,9 @@ system_set_value(const struct snmp_scalar_array_node_def *node, u16_t len, void
  59. } else {
  60. *var_wr_len = len;
  61. }
  62. +#ifdef SNMP_SYS_PARAM_SAVE
  63. + SNMP_SYS_PARAM_SAVE();
  64. +#endif
  65. return SNMP_ERR_NOERROR;
  66. }