acl-devel
[Top][All Lists]
Advanced

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

Re: [PATCH] __acl_create_entry_obj: do not break strict aliasing rules


From: Kamil Dudka
Subject: Re: [PATCH] __acl_create_entry_obj: do not break strict aliasing rules
Date: Mon, 31 Aug 2020 19:05:39 +0200

Hi Andreas,

On Monday, August 31, 2020 6:38:18 PM CEST Andreas Gruenbacher wrote:
> Hi Kamil,
> 
> that's a nasty bug.  Can we clean this up a little more as below?

sure, works for me.

Kamil

> Thanks,
> Andreas
> 
> ---
>  libacl/acl_create_entry.c | 9 +++++----
>  1 file changed, 5 insertions(+), 4 deletions(-)
> 
> diff --git a/libacl/acl_create_entry.c b/libacl/acl_create_entry.c
> index 4143078..b948d98 100644
> --- a/libacl/acl_create_entry.c
> +++ b/libacl/acl_create_entry.c
> @@ -26,7 +26,7 @@
>  acl_entry_obj *
>  __acl_create_entry_obj(acl_obj *acl_obj_p)
>  {
> -     acl_entry_obj *entry_obj_p;
> +     acl_entry_obj *entry_obj_p, *prev;
> 
>       if (acl_obj_p->aprealloc == acl_obj_p->aprealloc_end) {
>               entry_obj_p = new_obj_p(acl_entry);
> @@ -39,10 +39,11 @@ __acl_create_entry_obj(acl_obj *acl_obj_p)
>       acl_obj_p->aused++;
> 
>       /* Insert at the end of the entry ring */
> -     entry_obj_p->eprev = acl_obj_p->aprev;
> +     prev = acl_obj_p->aprev;
> +     entry_obj_p->eprev = prev;
>       entry_obj_p->enext = (acl_entry_obj *)acl_obj_p;
> -     entry_obj_p->eprev->enext = entry_obj_p;
> -     entry_obj_p->enext->eprev = entry_obj_p;
> +     prev->enext = entry_obj_p;
> +     acl_obj_p->aprev = entry_obj_p;
> 
>       entry_obj_p->econtainer = acl_obj_p;
>       init_acl_entry_obj(*entry_obj_p);





reply via email to

[Prev in Thread] Current Thread [Next in Thread]