When getsebool's main() fails to allocate memory for the boolean names,
it returns without freeing variables first, even though other errors do
this (with label "out").

This silences a warning reported by clang's static analyzer.

Signed-off-by: Nicolas Iooss <[email protected]>
---
 libselinux/utils/getsebool.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/libselinux/utils/getsebool.c b/libselinux/utils/getsebool.c
index 3c6eba55b7a8..369945363535 100644
--- a/libselinux/utils/getsebool.c
+++ b/libselinux/utils/getsebool.c
@@ -15,7 +15,7 @@ static __attribute__ ((__noreturn__)) void usage(const char 
*progname)
 int main(int argc, char **argv)
 {
        int i, get_all = 0, rc = 0, active, pending, len = 0, opt;
-       char **names;
+       char **names = NULL;
 
        while ((opt = getopt(argc, argv, "a")) > 0) {
                switch (opt) {
@@ -55,7 +55,7 @@ int main(int argc, char **argv)
                if (argc < 2)
                        usage(argv[0]);
                len = argc - 1;
-               names = malloc(sizeof(char *) * len);
+               names = calloc(len, sizeof(char *));
                if (!names) {
                        fprintf(stderr, "%s:  out of memory\n", argv[0]);
                        return 2;
@@ -65,7 +65,8 @@ int main(int argc, char **argv)
                        if (!names[i]) {
                                fprintf(stderr, "%s:  out of memory\n",
                                        argv[0]);
-                               return 2;
+                               rc = 2;
+                               goto out;
                        }
                }
        }
-- 
2.12.0

_______________________________________________
Selinux mailing list
[email protected]
To unsubscribe, send email to [email protected].
To get help, send an email containing "help" to [email protected].

Reply via email to