diff mbox

module_to_cil: fix possible use of initialized value

Message ID 1470260224-761-1-git-send-email-william.c.roberts@intel.com (mailing list archive)
State Not Applicable
Headers show

Commit Message

Roberts, William C Aug. 3, 2016, 9:37 p.m. UTC
From: William Roberts <william.c.roberts@intel.com>

Correct errors like these reported by gcc:

module_to_cil.c: In function ‘block_to_cil’:
module_to_cil.c:229:20: error: ‘attr_list’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
  struct list_node *curr = (*attr_list)->head;

Usages of attr_list_destroy() were called when list_init()
fails. Just bail early on failure.

stack_init() and stack_destroy() also suffered from the
aforementioned issue.

Signed-off-by: William Roberts <william.c.roberts@intel.com>
---
 libsepol/src/module_to_cil.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

Comments

Roberts, William C Aug. 3, 2016, 9:40 p.m. UTC | #1
> -----Original Message-----
> From: Roberts, William C
> Sent: Wednesday, August 3, 2016 2:37 PM
> To: selinux@tycho.nsa.gov; seandroid-list@tycho.nsa.gov; sds@tycho.nsa.gov
> Cc: Roberts, William C <william.c.roberts@intel.com>
> Subject: [PATCH] module_to_cil: fix possible use of initialized value

Let's try this commit message again... unitialized!

> 
> From: William Roberts <william.c.roberts@intel.com>
> 
> Correct errors like these reported by gcc:
> 
> module_to_cil.c: In function ‘block_to_cil’:
> module_to_cil.c:229:20: error: ‘attr_list’ may be used uninitialized in this function
> [-Werror=maybe-uninitialized]
>   struct list_node *curr = (*attr_list)->head;
> 
> Usages of attr_list_destroy() were called when list_init() fails. Just bail early on
> failure.
> 
> stack_init() and stack_destroy() also suffered from the aforementioned issue.
> 
> Signed-off-by: William Roberts <william.c.roberts@intel.com>
> ---
>  libsepol/src/module_to_cil.c | 8 ++++----
>  1 file changed, 4 insertions(+), 4 deletions(-)
> 
> diff --git a/libsepol/src/module_to_cil.c b/libsepol/src/module_to_cil.c index
> b9a4af7..9d0d064 100644
> --- a/libsepol/src/module_to_cil.c
> +++ b/libsepol/src/module_to_cil.c
> @@ -1307,7 +1307,7 @@ static int cond_list_to_cil(int indent, struct policydb
> *pdb, struct cond_node *
> 
>  	rc = list_init(&attr_list);
>  	if (rc != 0) {
> -		goto exit;
> +		return rc;
>  	}
> 
>  	for (cond = cond_list; cond != NULL; cond = cond->next) { @@ -3488,7
> +3488,7 @@ static int block_to_cil(struct policydb *pdb, struct avrule_block
> *block, struct
> 
>  	rc = list_init(&attr_list);
>  	if (rc != 0) {
> -		goto exit;
> +		return rc;
>  	}
> 
>  	rc = typealiases_to_cil(indent, pdb, block, stack); @@ -3635,7 +3635,7
> @@ static int blocks_to_cil(struct policydb *pdb)
> 
>  	rc = stack_init(&stack);
>  	if (rc != 0) {
> -		goto exit;
> +		return rc;
>  	}
> 
>  	block = pdb->global;
> @@ -3703,7 +3703,7 @@ static int linked_blocks_to_cil(struct policydb *pdb)
> 
>  	rc = stack_init(&stack);
>  	if (rc != 0) {
> -		goto exit;
> +		return rc;
>  	}
> 
>  	block = pdb->global;
> --
> 1.9.1
diff mbox

Patch

diff --git a/libsepol/src/module_to_cil.c b/libsepol/src/module_to_cil.c
index b9a4af7..9d0d064 100644
--- a/libsepol/src/module_to_cil.c
+++ b/libsepol/src/module_to_cil.c
@@ -1307,7 +1307,7 @@  static int cond_list_to_cil(int indent, struct policydb *pdb, struct cond_node *
 
 	rc = list_init(&attr_list);
 	if (rc != 0) {
-		goto exit;
+		return rc;
 	}
 
 	for (cond = cond_list; cond != NULL; cond = cond->next) {
@@ -3488,7 +3488,7 @@  static int block_to_cil(struct policydb *pdb, struct avrule_block *block, struct
 
 	rc = list_init(&attr_list);
 	if (rc != 0) {
-		goto exit;
+		return rc;
 	}
 
 	rc = typealiases_to_cil(indent, pdb, block, stack);
@@ -3635,7 +3635,7 @@  static int blocks_to_cil(struct policydb *pdb)
 
 	rc = stack_init(&stack);
 	if (rc != 0) {
-		goto exit;
+		return rc;
 	}
 
 	block = pdb->global;
@@ -3703,7 +3703,7 @@  static int linked_blocks_to_cil(struct policydb *pdb)
 
 	rc = stack_init(&stack);
 	if (rc != 0) {
-		goto exit;
+		return rc;
 	}
 
 	block = pdb->global;