Skip to content
Snippets Groups Projects
Commit bb8431aa authored by Matt Turner's avatar Matt Turner Committed by Emil Velikov
Browse files

util: Fix SHA1 implementation on big endian


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.

Fixes: d1efa09d ("util: import sha1 implementation from OpenBSD")
Reviewed-by: default avatarEmil Velikov <emil.velikov@collabora.com>
(cherry picked from commit 53267430)
parent a05879c9
No related branches found
No related tags found
No related merge requests found
......@@ -16,6 +16,7 @@
#include <stdint.h>
#include <string.h>
#include "u_endian.h"
#include "sha1.h"
#define rol(value, bits) (((value) << (bits)) | ((value) >> (32 - (bits))))
......@@ -24,7 +25,7 @@
* blk0() and blk() perform the initial expand.
* I got the idea of expanding during the round function from SSLeay
*/
#if BYTE_ORDER == LITTLE_ENDIAN
#ifdef PIPE_ARCH_LITTLE_ENDIAN
# define blk0(i) (block->l[i] = (rol(block->l[i],24)&0xFF00FF00) \
|(rol(block->l[i],8)&0x00FF00FF))
#else
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment