From 3319d8731340f2ea4358d1297f423ef22856a1a1 Mon Sep 17 00:00:00 2001 From: Joshua Rogers Date: Tue, 21 Oct 2025 14:52:18 +0000 Subject: [PATCH] SNMP: Remove extraneous va_start() from snmpAddNode() (#2228) Also polished snmpAddNode() implementation, including adding `mib_tree_head->parent` initialization. --- src/snmp_core.cc | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/src/snmp_core.cc b/src/snmp_core.cc index 0af67f3d15..ffd93c2063 100644 --- a/src/snmp_core.cc +++ b/src/snmp_core.cc @@ -990,34 +990,31 @@ snmpAddNodeStr(const char *base_str, int o, oid_ParseFn * parsefunction, instanc static mib_tree_entry * snmpAddNode(oid * name, int len, oid_ParseFn * parsefunction, instance_Fn * instancefunction, AggrType aggrType, int children,...) { - va_list args; - int loop; - mib_tree_entry *entry = nullptr; - va_start(args, children); - MemBuf tmp; debugs(49, 6, "snmpAddNode: Children : " << children << ", Oid : " << snmpDebugOid(name, len, tmp)); - va_start(args, children); - entry = (mib_tree_entry *)xmalloc(sizeof(mib_tree_entry)); + const auto entry = static_cast(xmalloc(sizeof(mib_tree_entry))); entry->name = name; entry->len = len; entry->parsefunction = parsefunction; entry->instancefunction = instancefunction; entry->children = children; entry->leaves = nullptr; + entry->parent = nullptr; entry->aggrType = aggrType; if (children > 0) { - entry->leaves = (mib_tree_entry **)xmalloc(sizeof(mib_tree_entry *) * children); + entry->leaves = static_cast(xmalloc(sizeof(mib_tree_entry *) * children)); - for (loop = 0; loop < children; ++loop) { + va_list args; + va_start(args, children); + for (int loop = 0; loop < children; ++loop) { entry->leaves[loop] = va_arg(args, mib_tree_entry *); entry->leaves[loop]->parent = entry; } + va_end(args); } - va_end(args); return (entry); } /* End of tree utility functions */ -- 2.47.3