summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorQuentin Young <qlyoung@nvidia.com>2021-02-17 17:01:06 -0500
committerQuentin Young <qlyoung@nvidia.com>2021-02-17 17:01:06 -0500
commit4da4b9d4f1e1a820909ec502e79b6c9ef2ed8dec (patch)
tree3af9aa7511a439a0c0dc9ba38a5b04ec97e46f67
parent95e336226e64aee0db909ce6d1ae2db9cbcb0901 (diff)
lib: fix some misc SA warnings
- clippy.c: fix valid memleak - defun_lex.l: suppress warnings in generated code - northbound_cli.c: suppress warning in eldritch libyang macro Signed-off-by: Quentin Young <qlyoung@nvidia.com>
-rw-r--r--lib/clippy.c4
-rw-r--r--lib/defun_lex.l4
-rw-r--r--lib/northbound_cli.c12
3 files changed, 19 insertions, 1 deletions
diff --git a/lib/clippy.c b/lib/clippy.c
index 15cd9d7a4b..c655619b71 100644
--- a/lib/clippy.c
+++ b/lib/clippy.c
@@ -51,7 +51,8 @@ int main(int argc, char **argv)
#if PY_VERSION_HEX >= 0x03040000 /* 3.4 */
Py_SetStandardStreamEncoding("UTF-8", NULL);
#endif
- Py_SetProgramName(wconv(argv[0]));
+ char *name = wconv(argv[0]);
+ Py_SetProgramName(name);
PyImport_AppendInittab("_clippy", command_py_init);
Py_Initialize();
@@ -93,6 +94,7 @@ int main(int argc, char **argv)
for (int i = 1; i < argc; i++)
free(wargv[i - 1]);
#endif
+ free(name);
free(wargv);
return 0;
}
diff --git a/lib/defun_lex.l b/lib/defun_lex.l
index bc5fbd24d9..af506f13d6 100644
--- a/lib/defun_lex.l
+++ b/lib/defun_lex.l
@@ -80,6 +80,8 @@ static void extendbuf(char **what, const char *arg)
}
#define extend(x) extendbuf(&value, x)
+#ifndef __clang_analyzer__
+
%}
ID [A-Za-z0-9_]+
@@ -157,6 +159,8 @@ SPECIAL [(),]
%%
+#endif /* __clang_analyzer__ */
+
static int yylex_clr(char **retbuf)
{
int rv = def_yylex();
diff --git a/lib/northbound_cli.c b/lib/northbound_cli.c
index ad7dad5cb2..1416b758d8 100644
--- a/lib/northbound_cli.c
+++ b/lib/northbound_cli.c
@@ -600,7 +600,19 @@ void nb_cli_show_dnode_cmds(struct vty *vty, struct lyd_node *root,
(*nb_node->cbs.cli_show_end)(vty, parent);
}
+ /*
+ * There is a possible path in this macro that ends up
+ * dereferencing child->parent->parent. We just null checked
+ * child->parent by checking (ly_iter_next_up(child) != NULL)
+ * above.
+ *
+ * I am not sure whether it is possible for the other
+ * conditions within this macro guarding the problem
+ * dereference to be satisfied when child->parent == NULL.
+ */
+#ifndef __clang_analyzer__
LY_TREE_DFS_END(root, next, child);
+#endif
}
}