[Mesa-dev] [PATCH 1/3] util: Fix SHA1 implementation on big endian

Eric Engestrom eric.engestrom at imgtec.com
Fri Nov 24 10:25:02 UTC 2017


On Thursday, 2017-11-23 11:08:04 -0800, Matt Turner wrote:
> The code defines a macro blk0(i) based on the preprocessor condition
> BYTE_ORDER == LITTLE_ENDIAN. If true, blk0(i) is defined as a byte swap
> operation. Unfortunately, if the preprocessor macros used in the test
> are no defined, then the comparison becomes 0 == 0 and it evaluates as
> true.
> ---
>  src/util/sha1/sha1.c | 9 +++++++++
>  1 file changed, 9 insertions(+)
> 
> diff --git a/src/util/sha1/sha1.c b/src/util/sha1/sha1.c
> index ef59ea1dfc..2c629520c3 100644
> --- a/src/util/sha1/sha1.c
> +++ b/src/util/sha1/sha1.c
> @@ -16,8 +16,17 @@
>  
>  #include <stdint.h>
>  #include <string.h>
> +#include "u_endian.h"

If you're including this header, why not use
`#ifdef PIPE_ARCH_LITTLE_ENDIAN` instead of
`#if BYTE_ORDER == LITTLE_ENDIAN`?

`#error` becomes unnecessary

>  #include "sha1.h"
>  
> +#ifndef BYTE_ORDER
> +#error BYTE_ORDER not defined
> +#endif
> +
> +#ifndef LITTLE_ENDIAN
> +#error LITTLE_ENDIAN no defined
> +#endif
> +
>  #define rol(value, bits) (((value) << (bits)) | ((value) >> (32 - (bits))))
>  
>  /*
> -- 
> 2.13.6
> 


More information about the mesa-dev mailing list