Re: [PATCH spice-server 10/10] utils: Avoid possible unaligned access

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

 



Hi,

On Mon, Jan 22, 2018 at 05:55:02PM +0000, Frediano Ziglio wrote:
> Code in rgb32_data_has_alpha possibly generate this warning using
> clang:
> 
> utils.c:35:16: error: cast from 'uint8_t *' (aka 'unsigned char *') to 'uint32_t *' (aka 'unsigned int *') increases required alignment from 1 to 4 [-Werror,-Wcast-align]
>         line = (uint32_t *)data;
>                ^~~~~~~~~~~~~~~~
> 
> Although the images are expected to be all aligned in this respect
> use byte access on the data instead. This, beside fixing the alignment
> issue also avoid problem with big endian machines (images in SPICE are
> expected to have the alpha channel as the forth byte).
> 
> Signed-off-by: Frediano Ziglio <fziglio@xxxxxxxxxx>

Looks good,
Acked-by: Victor Toso <victortoso@xxxxxxxxxx>

> ---
>  server/utils.c | 14 +++++++-------
>  1 file changed, 7 insertions(+), 7 deletions(-)
> 
> diff --git a/server/utils.c b/server/utils.c
> index 1856db61..b8a40b1d 100644
> --- a/server/utils.c
> +++ b/server/utils.c
> @@ -27,25 +27,25 @@
>  int rgb32_data_has_alpha(int width, int height, size_t stride,
>                           const uint8_t *data, int *all_set_out)
>  {
> -    const uint32_t *line, *end;
> -    uint32_t alpha;
> +    const uint8_t *line, *end;
> +    uint8_t alpha;
>      int has_alpha;
>  
>      has_alpha = FALSE;
>      while (height-- > 0) {
> -        line = (const uint32_t *)data;
> -        end = line + width;
> +        line = data;
> +        end = line + sizeof(uint32_t) * width;
>          data += stride;
>          while (line != end) {
> -            alpha = *line & 0xff000000U;
> +            alpha = line[3];
>              if (alpha != 0) {
>                  has_alpha = TRUE;
> -                if (alpha != 0xff000000U) {
> +                if (alpha != 0xffU) {
>                      *all_set_out = FALSE;
>                      return TRUE;
>                  }
>              }
> -            line++;
> +            line += sizeof(uint32_t);
>          }
>      }
>  
> -- 
> 2.14.3
> 
> _______________________________________________
> Spice-devel mailing list
> Spice-devel@xxxxxxxxxxxxxxxxxxxxx
> https://lists.freedesktop.org/mailman/listinfo/spice-devel

Attachment: signature.asc
Description: PGP signature

_______________________________________________
Spice-devel mailing list
Spice-devel@xxxxxxxxxxxxxxxxxxxxx
https://lists.freedesktop.org/mailman/listinfo/spice-devel

[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]     [Monitors]