diff options
| author | Quentin Young <qlyoung@nvidia.com> | 2021-02-17 17:01:06 -0500 |
|---|---|---|
| committer | Quentin Young <qlyoung@nvidia.com> | 2021-02-17 17:01:06 -0500 |
| commit | 4da4b9d4f1e1a820909ec502e79b6c9ef2ed8dec (patch) | |
| tree | 3af9aa7511a439a0c0dc9ba38a5b04ec97e46f67 | |
| parent | 95e336226e64aee0db909ce6d1ae2db9cbcb0901 (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.c | 4 | ||||
| -rw-r--r-- | lib/defun_lex.l | 4 | ||||
| -rw-r--r-- | lib/northbound_cli.c | 12 |
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 } } |
