diff --git a/net-snmp-5.7.2-fix-perl-trap-handler.patch b/net-snmp-5.7.2-fix-perl-trap-handler.patch new file mode 100644 index 0000000..526a212 --- /dev/null +++ b/net-snmp-5.7.2-fix-perl-trap-handler.patch @@ -0,0 +1,27 @@ +diff -Nur net-snmp-5.7.2.1-orig/perl/TrapReceiver/TrapReceiver.xs net-snmp-5.7.2.1/perl/TrapReceiver/TrapReceiver.xs +--- net-snmp-5.7.2.1-orig/perl/TrapReceiver/TrapReceiver.xs 2014-02-20 01:36:42.000000000 +0100 ++++ net-snmp-5.7.2.1/perl/TrapReceiver/TrapReceiver.xs 2014-09-02 12:06:50.070037000 +0200 +@@ -81,18 +81,18 @@ + STOREPDUi("securitymodel", pdu->securityModel); + STOREPDUi("securitylevel", pdu->securityLevel); + STOREPDU("contextName", +- newSVpv(pdu->contextName, pdu->contextNameLen)); ++ newSVpv(pdu->contextName ? pdu->contextName : "", pdu->contextNameLen)); + STOREPDU("contextEngineID", +- newSVpv((char *) pdu->contextEngineID, ++ newSVpv(pdu->contextEngineID ? (char *) pdu->contextEngineID : "", + pdu->contextEngineIDLen)); + STOREPDU("securityEngineID", +- newSVpv((char *) pdu->securityEngineID, ++ newSVpv(pdu->securityEngineID ? (char *) pdu->securityEngineID : "", + pdu->securityEngineIDLen)); + STOREPDU("securityName", +- newSVpv((char *) pdu->securityName, pdu->securityNameLen)); ++ newSVpv(pdu->securityName ? (char *) pdu->securityName : "", pdu->securityNameLen)); + } else { + STOREPDU("community", +- newSVpv((char *) pdu->community, pdu->community_len)); ++ newSVpv(pdu->community ? (char *) pdu->community : "", pdu->community_len)); + } + + if (transport && transport->f_fmtaddr) { diff --git a/net-snmp-5.7.2-fix-snmptrapd-remote-denial-of-service.patch b/net-snmp-5.7.2-fix-snmptrapd-remote-denial-of-service.patch new file mode 100644 index 0000000..6803f17 --- /dev/null +++ b/net-snmp-5.7.2-fix-snmptrapd-remote-denial-of-service.patch @@ -0,0 +1,429 @@ +--- net-snmp-5.7.2.1-orig/snmplib/mib.c 2014-02-20 01:36:42.000000000 +0100 ++++ net-snmp-5.7.2.1-patched/snmplib/mib.c 2014-09-02 15:07:17.902832000 +0200 +@@ -464,17 +464,16 @@ + u_char *cp; + int output_format, cnt; + +- if ((var->type != ASN_OCTET_STR) && +- (!netsnmp_ds_get_boolean(NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_QUICKE_PRINT))) { +- const char str[] = "Wrong Type (should be OCTET STRING): "; +- if (snmp_cstrcat +- (buf, buf_len, out_len, allow_realloc, str)) { +- return sprint_realloc_by_type(buf, buf_len, out_len, ++ if (var->type != ASN_OCTET_STR) { ++ if (!netsnmp_ds_get_boolean( ++ NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_QUICKE_PRINT)) { ++ const char str[] = "Wrong Type (should be OCTET STRING): "; ++ if (!snmp_cstrcat(buf, buf_len, out_len, allow_realloc, str)) ++ return 0; ++ } ++ return sprint_realloc_by_type(buf, buf_len, out_len, + allow_realloc, var, NULL, NULL, + NULL); +- } else { +- return 0; +- } + } + + +@@ -742,16 +741,16 @@ + const struct enum_list *enums, + const char *hint, const char *units) + { +- if ((var->type != ASN_OPAQUE_FLOAT) && +- (!netsnmp_ds_get_boolean(NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_QUICKE_PRINT))) { +- if (snmp_cstrcat(buf, buf_len, out_len, allow_realloc, +- "Wrong Type (should be Float): ")) { +- return sprint_realloc_by_type(buf, buf_len, out_len, ++ if (var->type != ASN_OPAQUE_FLOAT) { ++ if (!netsnmp_ds_get_boolean( ++ NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_QUICKE_PRINT)) { ++ u_char str[] = "Wrong Type (should be Float): "; ++ if (!snmp_strcat(buf, buf_len, out_len, allow_realloc, str)) ++ return 0; ++ } ++ return sprint_realloc_by_type(buf, buf_len, out_len, + allow_realloc, var, NULL, NULL, + NULL); +- } else { +- return 0; +- } + } + + if (!netsnmp_ds_get_boolean(NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_QUICK_PRINT)) { +@@ -812,17 +811,16 @@ + const struct enum_list *enums, + const char *hint, const char *units) + { +- if ((var->type != ASN_OPAQUE_DOUBLE) && +- (!netsnmp_ds_get_boolean(NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_QUICKE_PRINT))) { +- if (snmp_cstrcat +- (buf, buf_len, out_len, allow_realloc, +- "Wrong Type (should be Double): ")) { +- return sprint_realloc_by_type(buf, buf_len, out_len, ++ if (var->type != ASN_OPAQUE_DOUBLE) { ++ if (!netsnmp_ds_get_boolean( ++ NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_QUICKE_PRINT)) { ++ u_char str[] = "Wrong Type (should be Double): "; ++ if (!snmp_strcat(buf, buf_len, out_len, allow_realloc, str)) ++ return 0; ++ } ++ return sprint_realloc_by_type(buf, buf_len, out_len, + allow_realloc, var, NULL, NULL, + NULL); +- } else { +- return 0; +- } + } + + if (!netsnmp_ds_get_boolean(NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_QUICK_PRINT)) { +@@ -887,20 +885,21 @@ + { + char a64buf[I64CHARSZ + 1]; + +- if ((var->type != ASN_COUNTER64 ++ if (var->type != ASN_COUNTER64 + #ifdef NETSNMP_WITH_OPAQUE_SPECIAL_TYPES + && var->type != ASN_OPAQUE_COUNTER64 + && var->type != ASN_OPAQUE_I64 && var->type != ASN_OPAQUE_U64 + #endif +- ) && (!netsnmp_ds_get_boolean(NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_QUICKE_PRINT))) { +- if (snmp_cstrcat(buf, buf_len, out_len, allow_realloc, +- "Wrong Type (should be Counter64): ")) { +- return sprint_realloc_by_type(buf, buf_len, out_len, ++ ) { ++ if (!netsnmp_ds_get_boolean( ++ NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_QUICKE_PRINT)) { ++ u_char str[] = "Wrong Type (should be Counter64): "; ++ if (!snmp_strcat(buf, buf_len, out_len, allow_realloc, str)) ++ return 0; ++ } ++ return sprint_realloc_by_type(buf, buf_len, out_len, + allow_realloc, var, NULL, NULL, + NULL); +- } else { +- return 0; +- } + } + + if (!netsnmp_ds_get_boolean(NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_QUICK_PRINT)) { +@@ -988,23 +987,25 @@ + const struct enum_list *enums, + const char *hint, const char *units) + { +- if ((var->type != ASN_OPAQUE ++ if (var->type != ASN_OPAQUE + #ifdef NETSNMP_WITH_OPAQUE_SPECIAL_TYPES + && var->type != ASN_OPAQUE_COUNTER64 + && var->type != ASN_OPAQUE_U64 + && var->type != ASN_OPAQUE_I64 + && var->type != ASN_OPAQUE_FLOAT && var->type != ASN_OPAQUE_DOUBLE + #endif /* NETSNMP_WITH_OPAQUE_SPECIAL_TYPES */ +- ) && (!netsnmp_ds_get_boolean(NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_QUICKE_PRINT))) { +- if (snmp_cstrcat(buf, buf_len, out_len, allow_realloc, +- "Wrong Type (should be Opaque): ")) { +- return sprint_realloc_by_type(buf, buf_len, out_len, ++ ) { ++ if (!netsnmp_ds_get_boolean( ++ NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_QUICKE_PRINT)) { ++ u_char str[] = "Wrong Type (should be Opaque): "; ++ if (!snmp_strcat(buf, buf_len, out_len, allow_realloc, str)) ++ return 0; ++ } ++ return sprint_realloc_by_type(buf, buf_len, out_len, + allow_realloc, var, NULL, NULL, + NULL); +- } else { +- return 0; +- } + } ++ + #ifdef NETSNMP_WITH_OPAQUE_SPECIAL_TYPES + switch (var->type) { + case ASN_OPAQUE_COUNTER64: +@@ -1080,17 +1081,16 @@ + { + int buf_overflow = 0; + +- if ((var->type != ASN_OBJECT_ID) && +- (!netsnmp_ds_get_boolean(NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_QUICKE_PRINT))) { +- u_char str[] = +- "Wrong Type (should be OBJECT IDENTIFIER): "; +- if (snmp_strcat(buf, buf_len, out_len, allow_realloc, str)) { +- return sprint_realloc_by_type(buf, buf_len, out_len, ++ if (var->type != ASN_OBJECT_ID) { ++ if (!netsnmp_ds_get_boolean( ++ NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_QUICKE_PRINT)) { ++ u_char str[] = "Wrong Type (should be OBJECT IDENTIFIER): "; ++ if (!snmp_strcat(buf, buf_len, out_len, allow_realloc, str)) ++ return 0; ++ } ++ return sprint_realloc_by_type(buf, buf_len, out_len, + allow_realloc, var, NULL, NULL, + NULL); +- } else { +- return 0; +- } + } + + if (!netsnmp_ds_get_boolean(NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_QUICK_PRINT)) { +@@ -1150,16 +1150,16 @@ + { + char timebuf[40]; + +- if ((var->type != ASN_TIMETICKS) && +- (!netsnmp_ds_get_boolean(NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_QUICKE_PRINT))) { +- u_char str[] = "Wrong Type (should be Timeticks): "; +- if (snmp_strcat(buf, buf_len, out_len, allow_realloc, str)) { +- return sprint_realloc_by_type(buf, buf_len, out_len, ++ if (var->type != ASN_TIMETICKS) { ++ if (!netsnmp_ds_get_boolean( ++ NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_QUICKE_PRINT)) { ++ u_char str[] = "Wrong Type (should be Timeticks): "; ++ if (!snmp_strcat(buf, buf_len, out_len, allow_realloc, str)) ++ return 0; ++ } ++ return sprint_realloc_by_type(buf, buf_len, out_len, + allow_realloc, var, NULL, NULL, + NULL); +- } else { +- return 0; +- } + } + + if (netsnmp_ds_get_boolean(NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_NUMERIC_TIMETICKS)) { +@@ -1298,17 +1298,18 @@ + { + char *enum_string = NULL; + +- if ((var->type != ASN_INTEGER) && +- (!netsnmp_ds_get_boolean(NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_QUICKE_PRINT))) { +- u_char str[] = "Wrong Type (should be INTEGER): "; +- if (snmp_strcat(buf, buf_len, out_len, allow_realloc, str)) { +- return sprint_realloc_by_type(buf, buf_len, out_len, ++ if (var->type != ASN_INTEGER) { ++ if (!netsnmp_ds_get_boolean( ++ NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_QUICKE_PRINT)) { ++ u_char str[] = "Wrong Type (should be INTEGER): "; ++ if (!snmp_strcat(buf, buf_len, out_len, allow_realloc, str)) ++ return 0; ++ } ++ return sprint_realloc_by_type(buf, buf_len, out_len, + allow_realloc, var, NULL, NULL, + NULL); +- } else { +- return 0; +- } + } ++ + for (; enums; enums = enums->next) { + if (enums->value == *var->val.integer) { + enum_string = enums->label; +@@ -1401,16 +1402,16 @@ + { + char *enum_string = NULL; + +- if ((var->type != ASN_UINTEGER) && +- (!netsnmp_ds_get_boolean(NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_QUICKE_PRINT))) { +- u_char str[] = "Wrong Type (should be UInteger32): "; +- if (snmp_strcat(buf, buf_len, out_len, allow_realloc, str)) { +- return sprint_realloc_by_type(buf, buf_len, out_len, ++ if (var->type != ASN_UINTEGER) { ++ if (!netsnmp_ds_get_boolean( ++ NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_QUICKE_PRINT)) { ++ u_char str[] = "Wrong Type (should be UInteger32): "; ++ if (!snmp_strcat(buf, buf_len, out_len, allow_realloc, str)) ++ return 0; ++ } ++ return sprint_realloc_by_type(buf, buf_len, out_len, + allow_realloc, var, NULL, NULL, + NULL); +- } else { +- return 0; +- } + } + + for (; enums; enums = enums->next) { +@@ -1498,17 +1499,16 @@ + { + char tmp[32]; + +- if ((var->type != ASN_GAUGE) && +- (!netsnmp_ds_get_boolean(NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_QUICKE_PRINT))) { +- u_char str[] = +- "Wrong Type (should be Gauge32 or Unsigned32): "; +- if (snmp_strcat(buf, buf_len, out_len, allow_realloc, str)) { +- return sprint_realloc_by_type(buf, buf_len, out_len, ++ if (var->type != ASN_GAUGE) { ++ if (!netsnmp_ds_get_boolean( ++ NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_QUICKE_PRINT)) { ++ u_char str[] = "Wrong Type (should be Gauge32 or Unsigned32): "; ++ if (!snmp_strcat(buf, buf_len, out_len, allow_realloc, str)) ++ return 0; ++ } ++ return sprint_realloc_by_type(buf, buf_len, out_len, + allow_realloc, var, NULL, NULL, + NULL); +- } else { +- return 0; +- } + } + + if (!netsnmp_ds_get_boolean(NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_QUICK_PRINT)) { +@@ -1571,16 +1571,16 @@ + { + char tmp[32]; + +- if ((var->type != ASN_COUNTER) && +- (!netsnmp_ds_get_boolean(NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_QUICKE_PRINT))) { +- u_char str[] = "Wrong Type (should be Counter32): "; +- if (snmp_strcat(buf, buf_len, out_len, allow_realloc, str)) { +- return sprint_realloc_by_type(buf, buf_len, out_len, ++ if (var->type != ASN_COUNTER) { ++ if (!netsnmp_ds_get_boolean( ++ NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_QUICKE_PRINT)) { ++ u_char str[] = "Wrong Type (should be Counter32): "; ++ if (!snmp_strcat(buf, buf_len, out_len, allow_realloc, str)) ++ return 0; ++ } ++ return sprint_realloc_by_type(buf, buf_len, out_len, + allow_realloc, var, NULL, NULL, + NULL); +- } else { +- return 0; +- } + } + + if (!netsnmp_ds_get_boolean(NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_QUICK_PRINT)) { +@@ -1634,16 +1634,16 @@ + { + size_t i; + +- if ((var->type != ASN_IPADDRESS) && +- (!netsnmp_ds_get_boolean(NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_QUICKE_PRINT))) { +- u_char str[] = "Wrong Type (should be NetworkAddress): "; +- if (snmp_strcat(buf, buf_len, out_len, allow_realloc, str)) { +- return sprint_realloc_by_type(buf, buf_len, out_len, ++ if (var->type != ASN_IPADDRESS) { ++ if (!netsnmp_ds_get_boolean( ++ NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_QUICKE_PRINT)) { ++ u_char str[] = "Wrong Type (should be NetworkAddress): "; ++ if (!snmp_strcat(buf, buf_len, out_len, allow_realloc, str)) ++ return 0; ++ } ++ return sprint_realloc_by_type(buf, buf_len, out_len, + allow_realloc, var, NULL, NULL, + NULL); +- } else { +- return 0; +- } + } + + if (!netsnmp_ds_get_boolean(NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_QUICK_PRINT)) { +@@ -1700,16 +1700,16 @@ + { + u_char *ip = var->val.string; + +- if ((var->type != ASN_IPADDRESS) && +- (!netsnmp_ds_get_boolean(NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_QUICKE_PRINT))) { +- u_char str[] = "Wrong Type (should be IpAddress): "; +- if (snmp_strcat(buf, buf_len, out_len, allow_realloc, str)) { +- return sprint_realloc_by_type(buf, buf_len, out_len, ++ if (var->type != ASN_IPADDRESS) { ++ if (!netsnmp_ds_get_boolean( ++ NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_QUICKE_PRINT)) { ++ u_char str[] = "Wrong Type (should be IpAddress): "; ++ if (!snmp_strcat(buf, buf_len, out_len, allow_realloc, str)) ++ return 0; ++ } ++ return sprint_realloc_by_type(buf, buf_len, out_len, + allow_realloc, var, NULL, NULL, + NULL); +- } else { +- return 0; +- } + } + + if (!netsnmp_ds_get_boolean(NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_QUICK_PRINT)) { +@@ -1758,20 +1758,20 @@ + const struct enum_list *enums, + const char *hint, const char *units) + { +- if ((var->type != ASN_NULL) && +- (!netsnmp_ds_get_boolean(NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_QUICKE_PRINT))) { +- u_char str[] = "Wrong Type (should be NULL): "; +- if (snmp_strcat(buf, buf_len, out_len, allow_realloc, str)) { +- return sprint_realloc_by_type(buf, buf_len, out_len, ++ if (var->type != ASN_NULL) { ++ if (!netsnmp_ds_get_boolean( ++ NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_QUICKE_PRINT)) { ++ u_char str[] = "Wrong Type (should be NULL): "; ++ if (!snmp_strcat(buf, buf_len, out_len, allow_realloc, str)) ++ return 0; ++ } ++ return sprint_realloc_by_type(buf, buf_len, out_len, + allow_realloc, var, NULL, NULL, + NULL); +- } else { +- return 0; +- } +- } else { +- u_char str[] = "NULL"; +- return snmp_strcat(buf, buf_len, out_len, allow_realloc, str); + } ++ ++ u_char str[] = "NULL"; ++ return snmp_strcat(buf, buf_len, out_len, allow_realloc, str); + } + + +@@ -1806,16 +1806,16 @@ + u_char *cp; + char *enum_string; + +- if ((var->type != ASN_BIT_STR && var->type != ASN_OCTET_STR) && +- (!netsnmp_ds_get_boolean(NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_QUICKE_PRINT))) { +- u_char str[] = "Wrong Type (should be BITS): "; +- if (snmp_strcat(buf, buf_len, out_len, allow_realloc, str)) { +- return sprint_realloc_by_type(buf, buf_len, out_len, ++ if (var->type != ASN_BIT_STR && var->type != ASN_OCTET_STR) { ++ if (!netsnmp_ds_get_boolean( ++ NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_QUICKE_PRINT)) { ++ u_char str[] = "Wrong Type (should be BITS): "; ++ if (!snmp_strcat(buf, buf_len, out_len, allow_realloc, str)) ++ return 0; ++ } ++ return sprint_realloc_by_type(buf, buf_len, out_len, + allow_realloc, var, NULL, NULL, + NULL); +- } else { +- return 0; +- } + } + + if (netsnmp_ds_get_boolean(NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_QUICK_PRINT)) { +@@ -1890,16 +1890,16 @@ + const struct enum_list *enums, const char *hint, + const char *units) + { +- if ((var->type != ASN_NSAP) && +- (!netsnmp_ds_get_boolean(NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_QUICKE_PRINT))) { +- u_char str[] = "Wrong Type (should be NsapAddress): "; +- if (snmp_strcat(buf, buf_len, out_len, allow_realloc, str)) { +- return sprint_realloc_by_type(buf, buf_len, out_len, ++ if (var->type != ASN_NSAP) { ++ if (!netsnmp_ds_get_boolean( ++ NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_QUICKE_PRINT)) { ++ u_char str[] = "Wrong Type (should be NsapAddress): "; ++ if (!snmp_strcat(buf, buf_len, out_len, allow_realloc, str)) ++ return 0; ++ } ++ return sprint_realloc_by_type(buf, buf_len, out_len, + allow_realloc, var, NULL, NULL, + NULL); +- } else { +- return 0; +- } + } + + if (!netsnmp_ds_get_boolean(NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_QUICK_PRINT)) { diff --git a/net-snmp.changes b/net-snmp.changes index 24e176b..b510b0c 100644 --- a/net-snmp.changes +++ b/net-snmp.changes @@ -1,3 +1,13 @@ +------------------------------------------------------------------- +Wed Sep 3 19:35:54 UTC 2014 - abergmann@suse.com + +- added net-snmp-5.7.2-fix-snmptrapd-remote-denial-of-service.patch: + fix remote denial of service problem inside snmptrapd when started + with the "-OQ" option (CVE-2014-3565)(bnc#894361) +- added net-snmp-5.7.2-fix-perl-trap-handler.patch: fix potential + remote denial of service problem inside the snmptrapd Perl trap + handler (CVE-2014-2285)(bnc#866942) + ------------------------------------------------------------------- Mon Jun 16 13:58:17 CEST 2014 - lchiquitto@suse.com diff --git a/net-snmp.spec b/net-snmp.spec index 4e24d50..ad8eaa1 100644 --- a/net-snmp.spec +++ b/net-snmp.spec @@ -69,6 +69,8 @@ Patch7: net-snmp-5.7.2-velocity-mib.patch Patch8: net-snmp-5.7.2-build-fix-for-strlcat.patch Patch9: net-snmp-5.7.2-fix-snmpd-crashing-when-an-agentx-disconnects.patch Patch10: net-snmp-5.7.2-fix-mib-representation-of-timeout-values.patch +Patch11: net-snmp-5.7.2-fix-perl-trap-handler.patch +Patch12: net-snmp-5.7.2-fix-snmptrapd-remote-denial-of-service.patch # Summary: SNMP Daemon License: BSD-3-Clause and MIT @@ -203,6 +205,8 @@ Net-SNMP toolkit library. %patch8 -p1 %patch9 -p1 %patch10 -p1 +%patch11 -p1 +%patch12 -p1 %build MIBS="misc/ipfwacc ucd-snmp/diskio etherlike-mib rmon-mib velocity smux \