In getconlist.c's main(), "level" is duplicated from an optional
argument without being ever freed. clang's static analyzer warns about
this memory leak.

Free the allocated memory properly in order to remove a warning reported
by clang's static analyzer.

Signed-off-by: Nicolas Iooss <nicolas.io...@m4x.org>
---
 libselinux/utils/getconlist.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/libselinux/utils/getconlist.c b/libselinux/utils/getconlist.c
index adec1781658b..abfe2c742bfb 100644
--- a/libselinux/utils/getconlist.c
+++ b/libselinux/utils/getconlist.c
@@ -40,6 +40,7 @@ int main(int argc, char **argv)
        if (!is_selinux_enabled()) {
                fprintf(stderr,
                        "getconlist may be used only on a SELinux kernel.\n");
+               free(level);
                return 1;
        }
 
@@ -49,6 +50,7 @@ int main(int argc, char **argv)
        if (((argc - optind) < 2)) {
                if (getcon(&cur_context) < 0) {
                        fprintf(stderr, "Couldn't get current context.\n");
+                       free(level);
                        return 2;
                }
        } else
@@ -68,6 +70,7 @@ int main(int argc, char **argv)
        }
 
        free(usercon);
+       free(level);
 
        return 0;
 }
-- 
2.17.0


Reply via email to