Re: [PATCH 14/15] checkpolicy: avoid assigning garbage values

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, Jan 22, 2024 at 9:02 AM Christian Göttsche
<cgzones@xxxxxxxxxxxxxx> wrote:
>
> Only assign the computed value on success, since it is not set by
> declare_symbol() on failure.
>
> Reported by GCC:
>
>     module_compiler.c: In function 'create_role':
>     module_compiler.c:287:24: warning: use of uninitialized value 'value' [CWE-457] [-Wanalyzer-use-of-uninitialized-value]
>       287 |         datum->s.value = value;
>           |         ~~~~~~~~~~~~~~~^~~~~~~
>
> Signed-off-by: Christian Göttsche <cgzones@xxxxxxxxxxxxxx>

Acked-by: James Carter <jwcart2@xxxxxxxxx>

> ---
>  checkpolicy/module_compiler.c | 8 ++++----
>  1 file changed, 4 insertions(+), 4 deletions(-)
>
> diff --git a/checkpolicy/module_compiler.c b/checkpolicy/module_compiler.c
> index 464897cc..6ff91b8f 100644
> --- a/checkpolicy/module_compiler.c
> +++ b/checkpolicy/module_compiler.c
> @@ -284,9 +284,8 @@ static int create_role(uint32_t scope, unsigned char isattr, role_datum_t **role
>                 ret = require_symbol(SYM_ROLES, id, datum, &value, &value);
>         }
>
> -       datum->s.value = value;
> -
>         if (ret == 0) {
> +               datum->s.value = value;
>                 *role = datum;
>                 *key = strdup(id);
>                 if (*key == NULL) {
> @@ -303,6 +302,7 @@ static int create_role(uint32_t scope, unsigned char isattr, role_datum_t **role
>                         free(datum);
>                         return -1;
>                 }
> +               datum->s.value = value;
>                 *role = datum;
>                 *key = id;
>         } else {
> @@ -529,9 +529,8 @@ static int create_user(uint32_t scope, user_datum_t **user, char **key)
>                 ret = require_symbol(SYM_USERS, id, datum, &value, &value);
>         }
>
> -       datum->s.value = value;
> -
>         if (ret == 0) {
> +               datum->s.value = value;
>                 *user = datum;
>                 *key = strdup(id);
>                 if (*key == NULL) {
> @@ -539,6 +538,7 @@ static int create_user(uint32_t scope, user_datum_t **user, char **key)
>                         return -1;
>                 }
>         } else if (ret == 1) {
> +               datum->s.value = value;
>                 *user = datum;
>                 *key = id;
>         } else {
> --
> 2.43.0
>
>





[Index of Archives]     [Selinux Refpolicy]     [Linux SGX]     [Fedora Users]     [Fedora Desktop]     [Yosemite Photos]     [Yosemite Camping]     [Yosemite Campsites]     [KDE Users]     [Gnome Users]

  Powered by Linux