Re: [PATCH] libsepol/cil: Check that sym_index is within bounds

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

 



On Tue, Jul 23, 2024 at 10:42 AM Vit Mojzis <vmojzis@xxxxxxxxxx> wrote:
>
> Make sure sym_index is within the bounds of symtab array before using it
> to index the array.
>
> Fixes:
>   Error: OVERRUN (CWE-119):
>   libsepol-3.6/cil/src/cil_resolve_ast.c:3157: assignment: Assigning: "sym_index" = "CIL_SYM_UNKNOWN".
>   libsepol-3.6/cil/src/cil_resolve_ast.c:3189: overrun-call: Overrunning callee's array of size 19 by passing argument "sym_index" (which evaluates to 20) in call to "cil_resolve_name".
>   \# 3187|                   switch (curr->flavor) {
>   \# 3188|                   case CIL_STRING:
>   \# 3189|->                         rc = cil_resolve_name(parent, curr->data, sym_index, db, &res_datum);
>   \# 3190|                           if (rc != SEPOL_OK) {
>   \# 3191|                                   goto exit;
>
> Signed-off-by: Vit Mojzis <vmojzis@xxxxxxxxxx>

Acked-by: James Carter <jwcart2@xxxxxxxxx>

> ---
>  libsepol/cil/src/cil_resolve_ast.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/libsepol/cil/src/cil_resolve_ast.c b/libsepol/cil/src/cil_resolve_ast.c
> index 427a320c..da8863c4 100644
> --- a/libsepol/cil/src/cil_resolve_ast.c
> +++ b/libsepol/cil/src/cil_resolve_ast.c
> @@ -4291,7 +4291,7 @@ int cil_resolve_name_keep_aliases(struct cil_tree_node *ast_node, char *name, en
>         int rc = SEPOL_ERR;
>         struct cil_tree_node *node = NULL;
>
> -       if (name == NULL) {
> +       if (name == NULL || sym_index >= CIL_SYM_NUM) {
>                 cil_log(CIL_ERR, "Invalid call to cil_resolve_name\n");
>                 goto exit;
>         }
> --
> 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