Hello community,

here is the log from the commit of package net-snmp for openSUSE:Factory 
checked in at 2012-04-17 22:00:04
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/net-snmp (Old)
 and      /work/SRC/openSUSE:Factory/.net-snmp.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "net-snmp", Maintainer is "lchiqui...@suse.com"

Changes:
--------
--- /work/SRC/openSUSE:Factory/net-snmp/net-snmp.changes        2012-03-26 
11:03:37.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.net-snmp.new/net-snmp.changes   2012-04-17 
22:00:16.000000000 +0200
@@ -1,0 +2,11 @@
+Thu Mar 29 22:14:55 UTC 2012 - lchiqui...@suse.com
+
+- fix agent crash when reloading a subagent (AgentX) during a query
+  (bnc#670789)
+
+-------------------------------------------------------------------
+Thu Mar 29 22:14:04 UTC 2012 - lchiqui...@suse.com
+
+- add OCFS2 to the list of known file systems
+
+-------------------------------------------------------------------

Old:
----
  net-snmp-5.7.1-agentx-crash.patch

New:
----
  net-snmp-5.7.1-fix-snmpd-crashing-when-an-agentx-disconnects.patch
  net-snmp-5.7.1-log-agentx-disconnections.patch
  net-snmp-5.7.1-more-robust-handling-of-agentx-errors.patch
  net-snmp-5.7.1-properly-clean-up-old-requests-in-subagents.patch
  net-snmp-5.7.1-recognize-ocfs2.patch
  net-snmp-5.7.1-reduce-code-duplication-in-agentx.patch
  net-snmp-5.7.1-report-problems-with-setundo-processing.patch

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ net-snmp.spec ++++++
--- /var/tmp/diff_new_pack.MOCSRr/_old  2012-04-17 22:00:19.000000000 +0200
+++ /var/tmp/diff_new_pack.MOCSRr/_new  2012-04-17 22:00:19.000000000 +0200
@@ -62,7 +62,6 @@
 Patch6:         net-snmp-5.5.0-perl-tk-warning.patch
 Patch7:         net-snmp-5.7.0-velocity-mib.patch
 Patch8:         net-snmp-5.7.0-recognize-reiserfs.patch
-Patch9:         net-snmp-5.7.1-agentx-crash.patch
 Patch10:        net-snmp-5.7.1-snmplib-zero-timeout.patch
 Patch11:        net-snmp-5.7.1-old-api-double-free.patch
 Patch12:        net-snmp-5.7.1-use-pclose-to-close-pipes.patch
@@ -70,6 +69,13 @@
 Patch14:        net-snmp-5.7.1-snmplib-default-retries.patch
 Patch15:        net-snmp-5.7.1-fsys-memory-leak.patch
 Patch16:        net-snmp-5.7.1-adjust-copyright-in-agent-txt-file.patch
+Patch17:        net-snmp-5.7.1-recognize-ocfs2.patch
+Patch18:        
net-snmp-5.7.1-properly-clean-up-old-requests-in-subagents.patch
+Patch19:        net-snmp-5.7.1-reduce-code-duplication-in-agentx.patch
+Patch20:        net-snmp-5.7.1-log-agentx-disconnections.patch
+Patch21:        net-snmp-5.7.1-more-robust-handling-of-agentx-errors.patch
+Patch22:        net-snmp-5.7.1-report-problems-with-setundo-processing.patch
+Patch23:        
net-snmp-5.7.1-fix-snmpd-crashing-when-an-agentx-disconnects.patch
 #
 Summary:        SNMP Daemon
 License:        BSD-3-Clause ; MIT
@@ -217,7 +223,6 @@
 %patch6 -p1
 %patch7 -p1
 %patch8 -p1
-%patch9 -p1
 %patch10 -p1
 %patch11 -p1
 %patch12 -p1
@@ -225,6 +230,13 @@
 %patch14 -p1
 %patch15 -p1
 %patch16 -p1
+%patch17 -p1
+%patch18 -p1
+%patch19 -p1
+%patch20 -p1
+%patch21 -p1
+%patch22 -p1
+%patch23 -p1
 
 %build
 MIBS="misc/ipfwacc ucd-snmp/diskio etherlike-mib rmon-mib velocity smux \

++++++ net-snmp-5.7.1-fix-snmpd-crashing-when-an-agentx-disconnects.patch ++++++
commit f9304c83f76202db0e684269ca1af32e43cd9db4
Author: Jan Safranek <jsafra...@users.sourceforge.net>
Date:   Tue Feb 7 14:53:44 2012 +0100

    CHANGES: PATCH 1633670: fixed snmpd crashing when an AgentX subagent 
disconnect in the middle of processing of a request.
    
    I fixed also the memory leak reported in the tracker comments.

Index: net-snmp-5.7.1/agent/mibgroup/agentx/master.c
===================================================================
--- net-snmp-5.7.1.orig/agent/mibgroup/agentx/master.c
+++ net-snmp-5.7.1/agent/mibgroup/agentx/master.c
@@ -219,6 +219,9 @@ agentx_got_response(int operation,
     if (!cache) {
         DEBUGMSGTL(("agentx/master", "response too late on session %8p\n",
                     session));
+        /* response is too late, free the cache */
+        if (magic)
+            netsnmp_free_delegated_cache((netsnmp_delegated_cache*) magic);
         return 0;
     }
     requests = cache->requests;
@@ -606,6 +609,8 @@ agentx_master_handler(netsnmp_mib_handle
     result = snmp_async_send(ax_session, pdu, agentx_got_response, cb_data);
     if (result == 0) {
         snmp_free_pdu(pdu);
+        if (cb_data)
+            netsnmp_free_delegated_cache((netsnmp_delegated_cache*) cb_data);
     }
 
     return SNMP_ERR_NOERROR;
Index: net-snmp-5.7.1/agent/mibgroup/agentx/master_admin.c
===================================================================
--- net-snmp-5.7.1.orig/agent/mibgroup/agentx/master_admin.c
+++ net-snmp-5.7.1/agent/mibgroup/agentx/master_admin.c
@@ -135,11 +135,16 @@ close_agentx_session(netsnmp_session * s
          * requests, so that the delegated request will be completed and
          * further requests can be processed
          */
-        netsnmp_remove_delegated_requests_for_session(session);
+       while (netsnmp_remove_delegated_requests_for_session(session)) {
+               DEBUGMSGTL(("agentx/master", "Continue removing delegated 
reqests\n"));
+       }
+
         if (session->subsession != NULL) {
             netsnmp_session *subsession = session->subsession;
             for(; subsession; subsession = subsession->next) {
-                netsnmp_remove_delegated_requests_for_session(subsession);
+                while 
(netsnmp_remove_delegated_requests_for_session(subsession)) {
+                       DEBUGMSGTL(("agentx/master", "Continue removing 
delegated subsession reqests\n"));
+               }
             }
         }
                 
++++++ net-snmp-5.7.1-log-agentx-disconnections.patch ++++++
commit 1be8cf08a67a91855fee1ec4a2d8e087c7812456
Author: Dave Shield <d.t.shi...@liverpool.ac.uk>
Date:   Tue Dec 27 18:04:10 2011 +0000

    CHANGES: agentx: PATCHES: 3445437: Log AgentX disconnections
    (in line with connections) Patch provided by Bill Fenner

Index: net-snmp-5.7.1/agent/mibgroup/agentx/subagent.c
===================================================================
--- net-snmp-5.7.1.orig/agent/mibgroup/agentx/subagent.c
+++ net-snmp-5.7.1/agent/mibgroup/agentx/subagent.c
@@ -298,8 +298,10 @@ handle_agentx_packet(int operation, nets
              * agentx_reopen_session unregisters itself if it succeeds in 
talking 
              * to the master agent.  
              */
-            snmp_alarm_register(period, SA_REPEAT, agentx_reopen_session,
-                                NULL);
+            snmp_alarm_register(period, SA_REPEAT, agentx_reopen_session, 
NULL);
+            snmp_log(LOG_INFO, "AgentX master disconnected us, reconnecting in 
%d\n", period);
+        } else {
+            snmp_log(LOG_INFO, "AgentX master disconnected us, not 
reconnecting\n");
         }
         return 0;
     } else if (operation != NETSNMP_CALLBACK_OP_RECEIVED_MESSAGE) {
++++++ net-snmp-5.7.1-more-robust-handling-of-agentx-errors.patch ++++++
commit 2a17b37430c1852998c3588e547d7eb61c06da71
Author: Dave Shield <d.t.shi...@liverpool.ac.uk>
Date:   Tue Dec 27 21:45:38 2011 +0000

    CHANGES: agentx: PATCHES: 3445440: More robust handling of AgentX errors
    Patch provided by Bill Fenner

Index: net-snmp-5.7.1/agent/mibgroup/agentx/subagent.c
===================================================================
--- net-snmp-5.7.1.orig/agent/mibgroup/agentx/subagent.c
+++ net-snmp-5.7.1/agent/mibgroup/agentx/subagent.c
@@ -243,6 +243,24 @@ free_set_vars(netsnmp_session * ss, nets
 }
 #endif /* !NETSNMP_NO_WRITE_SUPPORT */
 
+static void
+send_agentx_error(netsnmp_session *session, netsnmp_pdu *pdu, int errstat, int 
errindex)
+{
+    pdu = snmp_clone_pdu(pdu);
+    pdu->command   = AGENTX_MSG_RESPONSE;
+    pdu->version   = session->version;
+    pdu->errstat   = errstat;
+    pdu->errindex  = errindex;
+    snmp_free_varbind(pdu->variables);
+    pdu->variables = NULL;
+
+    DEBUGMSGTL(("agentx/subagent", "Sending AgentX response error stat %d idx 
%d\n",
+             errstat, errindex));
+    if (!snmp_send(session, pdu)) {
+        snmp_free_pdu(pdu);
+    }
+}
+
 int
 handle_agentx_packet(int operation, netsnmp_session * session, int reqid,
                      netsnmp_pdu *pdu, void *magic)
@@ -327,6 +345,7 @@ handle_agentx_packet(int operation, nets
             (ns_subagent_magic *) calloc(1, sizeof(ns_subagent_magic));
         if (smagic == NULL) {
             DEBUGMSGTL(("agentx/subagent", "couldn't malloc() smagic\n"));
+            /* would like to send_agentx_error(), but it needs memory too */
             return 1;
         }
         smagic->original_command = pdu->command;
@@ -391,6 +410,7 @@ handle_agentx_packet(int operation, nets
         if (asi == NULL) {
             SNMP_FREE(smagic);
             snmp_log(LOG_WARNING, "save_set_vars() failed\n");
+            send_agentx_error(session, pdu, AGENTX_ERR_PARSE_FAILED, 0);
             return 1;
         }
         asi->mode = pdu->command = SNMP_MSG_INTERNAL_SET_RESERVE1;
@@ -404,6 +424,7 @@ handle_agentx_packet(int operation, nets
         if (asi == NULL) {
             SNMP_FREE(smagic);
             snmp_log(LOG_WARNING, "restore_set_vars() failed\n");
+            send_agentx_error(session, pdu, AGENTX_ERR_PROCESSING_ERROR, 0);
             return 1;
         }
         if (asi->mode != SNMP_MSG_INTERNAL_SET_RESERVE2) {
@@ -411,6 +432,7 @@ handle_agentx_packet(int operation, nets
             snmp_log(LOG_WARNING,
                      "dropping bad AgentX request (wrong mode %d)\n",
                      asi->mode);
+            send_agentx_error(session, pdu, AGENTX_ERR_PROCESSING_ERROR, 0);
             return 1;
         }
         asi->mode = pdu->command = SNMP_MSG_INTERNAL_SET_ACTION;
@@ -424,6 +446,7 @@ handle_agentx_packet(int operation, nets
         if (asi == NULL) {
             SNMP_FREE(smagic);
             snmp_log(LOG_WARNING, "restore_set_vars() failed\n");
+            send_agentx_error(session, pdu, AGENTX_ERR_PROCESSING_ERROR, 0);
             return 1;
         }
         if (asi->mode == SNMP_MSG_INTERNAL_SET_RESERVE1 ||
++++++ net-snmp-5.7.1-properly-clean-up-old-requests-in-subagents.patch ++++++
commit 13952f6bee9f408867ab6d2fdfdde4f284074957
Author: Jan Safranek <jsafra...@users.sourceforge.net>
Date:   Wed Oct 26 14:05:16 2011 +0200

    CHANGES: snmplib: from Siddhesh Poyarekar: properly clean up old requests 
in a subagent when we reconnect to master.
    
    An snmp subagent linked against net-snmp-libs may crash if it handles a
    response which has magic referring to an older disconnected main session. 
This
    may happen when the subagent
    attempts to clean up old requests on reconnection of the disconnected master
    session.

Index: net-snmp-5.7.1/agent/mibgroup/agentx/subagent.c
===================================================================
--- net-snmp-5.7.1.orig/agent/mibgroup/agentx/subagent.c
+++ net-snmp-5.7.1/agent/mibgroup/agentx/subagent.c
@@ -484,6 +484,26 @@ handle_agentx_packet(int operation, nets
     return 1;
 }
 
+static int
+_invalid_op_and_magic(int op, ns_subagent_magic *smagic)
+{
+    int invalid = 0;
+
+    if (smagic && (snmp_sess_pointer(smagic->session) == NULL ||
+        op == NETSNMP_CALLBACK_OP_TIMED_OUT)) {
+        if (smagic->ovars != NULL) {
+            snmp_free_varbind(smagic->ovars);
+        }
+        free(smagic);
+        invalid = 1;
+    }
+
+    if (op != NETSNMP_CALLBACK_OP_RECEIVED_MESSAGE || smagic == NULL)
+        invalid = 1;
+
+    return invalid;
+}
+
 int
 handle_subagent_response(int op, netsnmp_session * session, int reqid,
                          netsnmp_pdu *pdu, void *magic)
@@ -492,13 +512,7 @@ handle_subagent_response(int op, netsnmp
     netsnmp_variable_list *u = NULL, *v = NULL;
     int             rc = 0;
 
-    if (op != NETSNMP_CALLBACK_OP_RECEIVED_MESSAGE || magic == NULL) {
-        if (op == NETSNMP_CALLBACK_OP_TIMED_OUT && magic != NULL) {
-            if (smagic->ovars != NULL) {
-                snmp_free_varbind(smagic->ovars);
-            }
-            free(smagic);
-        }
+    if (_invalid_op_and_magic(op, magic)) {
         return 1;
     }
 
++++++ net-snmp-5.7.1-recognize-ocfs2.patch ++++++
commit debac498fe8410110107a2fe64f8afb748edaa07
Author: Jan Safranek <jsafra...@users.sourceforge.net>
Date:   Mon Feb 6 16:48:09 2012 +0100

    CHANGES: added OCFS2 (Oracle Cluster FS) to hrStorageTable and hrFSTable

Index: net-snmp-5.7.1/agent/mibgroup/hardware/fsys/fsys_mntent.c
===================================================================
--- net-snmp-5.7.1.orig/agent/mibgroup/hardware/fsys/fsys_mntent.c
+++ net-snmp-5.7.1/agent/mibgroup/hardware/fsys/fsys_mntent.c
@@ -136,6 +136,7 @@ _fsys_type( char *typename )
               !strcmp(typename, MNTTYPE_XFS) ||
               !strcmp(typename, MNTTYPE_JFS) ||
               !strcmp(typename, MNTTYPE_REISERFS) ||
+              !strcmp(typename, MNTTYPE_OCFS2) ||
               !strcmp(typename, MNTTYPE_LOFS))
        return NETSNMP_FS_TYPE_OTHER;
 
Index: net-snmp-5.7.1/agent/mibgroup/hardware/fsys/mnttypes.h
===================================================================
--- net-snmp-5.7.1.orig/agent/mibgroup/hardware/fsys/mnttypes.h
+++ net-snmp-5.7.1/agent/mibgroup/hardware/fsys/mnttypes.h
@@ -133,6 +133,9 @@
 #ifndef MNTTYPE_MVFS
 #define MNTTYPE_MVFS     "mvfs"
 #endif
+#ifndef MNTTYPE_OCFS2
+#define MNTTYPE_OCFS2    "ocfs2"
+#endif
 
 /*
  *  File systems to skip
++++++ net-snmp-5.7.1-reduce-code-duplication-in-agentx.patch ++++++
commit 7bead9ca917c67566d5ed98ab507bbc02816217d
Author: Bart Van Assche <bvanass...@acm.org>
Date:   Wed Nov 30 14:08:08 2011 +0100

    AgentX subagent: Reduce code duplication

Index: net-snmp-5.7.1/agent/mibgroup/agentx/subagent.c
===================================================================
--- net-snmp-5.7.1.orig/agent/mibgroup/agentx/subagent.c
+++ net-snmp-5.7.1/agent/mibgroup/agentx/subagent.c
@@ -792,6 +792,7 @@ subagent_open_master_session(void)
 {
     netsnmp_transport *t;
     netsnmp_session sess;
+    const char *agentx_socket;
 
     DEBUGMSGTL(("agentx/subagent", "opening session...\n"));
 
@@ -809,9 +810,9 @@ subagent_open_master_session(void)
     sess.callback = handle_agentx_packet;
     sess.authenticator = NULL;
 
-    t = netsnmp_transport_open_client(
-            "agentx", netsnmp_ds_get_string(NETSNMP_DS_APPLICATION_ID,
-                                            NETSNMP_DS_AGENT_X_SOCKET));
+    agentx_socket = netsnmp_ds_get_string(NETSNMP_DS_APPLICATION_ID,
+                                          NETSNMP_DS_AGENT_X_SOCKET);
+    t = netsnmp_transport_open_client("agentx", agentx_socket);
     if (t == NULL) {
         /*
          * Diagnose snmp_open errors with the input
@@ -820,12 +821,9 @@ subagent_open_master_session(void)
         if (!netsnmp_ds_get_boolean(NETSNMP_DS_APPLICATION_ID,
                                     NETSNMP_DS_AGENT_NO_CONNECTION_WARNINGS)) {
             char buf[1024];
-            const char *socket =
-                netsnmp_ds_get_string(NETSNMP_DS_APPLICATION_ID,
-                                      NETSNMP_DS_AGENT_X_SOCKET);
             snprintf(buf, sizeof(buf), "Warning: "
                      "Failed to connect to the agentx master agent (%s)",
-                     socket ? socket : "[NIL]");
+                     agentx_socket ? agentx_socket : "[NIL]");
             if (!netsnmp_ds_get_boolean(NETSNMP_DS_APPLICATION_ID,
                                         NETSNMP_DS_AGENT_NO_ROOT_ACCESS)) {
                 netsnmp_sess_log_error(LOG_WARNING, buf, &sess);
@@ -846,8 +844,7 @@ subagent_open_master_session(void)
             char buf[1024];
             snprintf(buf, sizeof(buf), "Error: "
                      "Failed to create the agentx master agent session (%s)",
-                     netsnmp_ds_get_string(NETSNMP_DS_APPLICATION_ID,
-                                           NETSNMP_DS_AGENT_X_SOCKET));
+                     agentx_socket);
             snmp_sess_perror(buf, &sess);
         }
         netsnmp_transport_free(t);
++++++ net-snmp-5.7.1-report-problems-with-setundo-processing.patch ++++++
commit 0815a7536c76f7e4842638683f674894a1a8ce14
Author: Dave Shield <d.t.shi...@liverpool.ac.uk>
Date:   Thu Dec 29 14:42:54 2011 +0000

    Report problems with SetUndo processing
    Missed when applying patch #3445440

Index: net-snmp-5.7.1/agent/mibgroup/agentx/subagent.c
===================================================================
--- net-snmp-5.7.1.orig/agent/mibgroup/agentx/subagent.c
+++ net-snmp-5.7.1/agent/mibgroup/agentx/subagent.c
@@ -471,6 +471,7 @@ handle_agentx_packet(int operation, nets
         if (asi == NULL) {
             SNMP_FREE(smagic);
             snmp_log(LOG_WARNING, "restore_set_vars() failed\n");
+            send_agentx_error(session, pdu, AGENTX_ERR_PROCESSING_ERROR, 0);
             return 1;
         }
         asi->mode = pdu->command = SNMP_MSG_INTERNAL_SET_UNDO;
-- 
To unsubscribe, e-mail: opensuse-commit+unsubscr...@opensuse.org
For additional commands, e-mail: opensuse-commit+h...@opensuse.org

Reply via email to