From f67604e9737b2554ca99b00eaa25270c70b89f3b Mon Sep 17 00:00:00 2001 From: Steffen Moeller Date: Fri, 16 Jan 2026 00:01:20 +0000 Subject: [PATCH] libnml: Fixed memleak in configuration parsing Also suppressing false positive report on use of undefined variable. --- src/emc/usr_intf/axis/extensions/emcmodule.cc | 4 +++- src/libnml/cms/cms_cfg.cc | 3 +++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/emc/usr_intf/axis/extensions/emcmodule.cc b/src/emc/usr_intf/axis/extensions/emcmodule.cc index 8846327f28b..643d3cf79a0 100644 --- a/src/emc/usr_intf/axis/extensions/emcmodule.cc +++ b/src/emc/usr_intf/axis/extensions/emcmodule.cc @@ -2054,7 +2054,9 @@ static PyObject *pydraw_lines(PyObject * /*s*/, PyObject *o) { if(!first) glEnd(); return NULL; } - if(first || memcmp(p1, pl, sizeof(p1)) + + // cppcheck-suppress uninitvar + if(first || memcmp(p1, pl, sizeof(p1)) // <- since first==1 when pl undefined || (for_selection && n != nl)) { if(!first) glEnd(); if(for_selection && n != nl) { diff --git a/src/libnml/cms/cms_cfg.cc b/src/libnml/cms/cms_cfg.cc index 33e4afe74cf..598ff664459 100644 --- a/src/libnml/cms/cms_cfg.cc +++ b/src/libnml/cms/cms_cfg.cc @@ -114,6 +114,8 @@ int load_nml_config_file(const char *file) if (strlen(file) >= 80) { rcs_print_error("cms_config: file name too long\n"); loading_config_file = 0; + delete info->lines_list; // info is a struct + delete info; return -1; } rtapi_strlcpy(info->file_name, file, 80); @@ -122,6 +124,7 @@ int load_nml_config_file(const char *file) if (fp == NULL) { rcs_print_error("cms_config: can't open '%s'. Error = %d -- %s\n", file, errno, strerror(errno)); + delete info->lines_list; // info is a struct delete info; loading_config_file = 0; return -1;