From: Pavel Rochnyack Date: Wed, 12 Jul 2017 14:26:13 +0000 (+0700) Subject: snmp_agent: Added a check for llist_create() result X-Git-Tag: collectd-5.8.0~120^2~3 X-Git-Url: https://git.verplant.org/?a=commitdiff_plain;h=177bd49069d5cd45a6a7b61269f6001b82ff8acc;p=collectd.git snmp_agent: Added a check for llist_create() result Also appropriate `llist_destroy()` calls added. --- 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; }