From 177bd49069d5cd45a6a7b61269f6001b82ff8acc Mon Sep 17 00:00:00 2001 From: Pavel Rochnyack Date: Wed, 12 Jul 2017 21:26:13 +0700 Subject: [PATCH] snmp_agent: Added a check for llist_create() result Also appropriate `llist_destroy()` calls added. --- src/snmp_agent.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/snmp_agent.c b/src/snmp_agent.c index 1ea5cc97..fe1ecd56 100644 --- a/src/snmp_agent.c +++ b/src/snmp_agent.c @@ -1364,12 +1364,21 @@ static int snmp_agent_preinit(void) { g_agent->tables = llist_create(); g_agent->scalars = llist_create(); + if (g_agent->tables == NULL || g_agent->scalars == NULL) { + ERROR(PLUGIN_NAME ": llist_create() failed"); + llist_destroy(g_agent->scalars); + llist_destroy(g_agent->tables); + return -ENOMEM; + } + int err; /* make us a agentx client. */ err = netsnmp_ds_set_boolean(NETSNMP_DS_APPLICATION_ID, NETSNMP_DS_AGENT_ROLE, 1); if (err != 0) { ERROR(PLUGIN_NAME ": Failed to set agent role (%d)", err); + llist_destroy(g_agent->scalars); + llist_destroy(g_agent->tables); return -1; } @@ -1381,6 +1390,8 @@ static int snmp_agent_preinit(void) { err = init_agent(PLUGIN_NAME); if (err != 0) { ERROR(PLUGIN_NAME ": Failed to initialize the agent library (%d)", err); + llist_destroy(g_agent->scalars); + llist_destroy(g_agent->tables); return -1; } -- 2.11.0