snmp_mib2_system_patch.diff 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  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..89f5d92 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. @@ -284,6 +288,9 @@ system_set_test(const struct snmp_scalar_array_node_def *node, u16_t len, void *
  14. snmp_err_t ret = SNMP_ERR_WRONGVALUE;
  15. const u16_t* var_bufsize = NULL;
  16. const u16_t* var_wr_len;
  17. +#ifdef SNMP_SYS_PARAM_FILENAME
  18. + bool check_flag = true;
  19. +#endif
  20. LWIP_UNUSED_ARG(value);
  21. @@ -307,13 +314,24 @@ system_set_test(const struct snmp_scalar_array_node_def *node, u16_t len, void *
  22. /* check if value is writable at all */
  23. if (*var_bufsize > 0) {
  24. +#ifdef SNMP_SYS_PARAM_CHECK
  25. + check_flag = SNMP_SYS_PARAM_CHECK(value, len);
  26. +#endif
  27. if (var_wr_len == NULL) {
  28. /* we have to take the terminating 0 into account */
  29. - if (len < *var_bufsize) {
  30. +#ifdef SNMP_SYS_PARAM_CHECK
  31. + if (len <= *var_bufsize && check_flag) {
  32. +#else
  33. + if (len <= *var_bufsize) {
  34. +#endif
  35. ret = SNMP_ERR_NOERROR;
  36. }
  37. } else {
  38. +#ifdef SNMP_SYS_PARAM_CHECK
  39. + if (len <= *var_bufsize && check_flag) {
  40. +#else
  41. if (len <= *var_bufsize) {
  42. +#endif
  43. ret = SNMP_ERR_NOERROR;
  44. }
  45. }
  46. @@ -358,6 +376,9 @@ system_set_value(const struct snmp_scalar_array_node_def *node, u16_t len, void
  47. } else {
  48. *var_wr_len = len;
  49. }
  50. +#ifdef SNMP_SYS_PARAM_SAVE
  51. + SNMP_SYS_PARAM_SAVE();
  52. +#endif
  53. return SNMP_ERR_NOERROR;
  54. }