From: Vsevolod Stakhov Date: Wed, 26 Jun 2019 17:09:23 +0000 (+0100) Subject: [Minor] Another asan fix for rdrand X-Git-Tag: 2.0~717 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d3a9edd737c7cb1bcfac16a7c9eef1bc7af9a353;p=thirdparty%2Frspamd.git [Minor] Another asan fix for rdrand --- diff --git a/contrib/libottery/ottery_entropy_rdrand.c b/contrib/libottery/ottery_entropy_rdrand.c index 36ae60b835..4f227d31f3 100644 --- a/contrib/libottery/ottery_entropy_rdrand.c +++ b/contrib/libottery/ottery_entropy_rdrand.c @@ -22,7 +22,7 @@ extern int ottery_valgrind_; /** Helper: invoke the RDRAND instruction to get 4 random bytes in the output * value. Return 1 on success, and 0 on failure. */ -#define rdrand32(x) ({ unsigned char err = 0; asm volatile(".byte 0x0f; .byte 0xc7; .byte 0xf0; setc %1":"=a"(*x), "=qm"(err)); err; }) +#define rdrand32(x) ({ unsigned char err = 0; __asm volatile(".byte 0x0f; .byte 0xc7; .byte 0xf0; setc %1":"=a"(x), "=qm"(err) :"a"(0) :"cc"); err; }) /** Generate bytes using the Intel RDRAND instruction. */ static int @@ -36,7 +36,7 @@ ottery_get_entropy_rdrand(const struct ottery_entropy_config *cfg, if (! (ottery_get_cpu_capabilities_() & OTTERY_CPUCAP_RAND) || ottery_valgrind_) return OTTERY_ERR_INIT_STRONG_RNG; while (outlen >= 4) { - if (rdrand32(&up) != 1) + if (rdrand32(up) != 1) return OTTERY_ERR_INIT_STRONG_RNG; memcpy (out, &up, sizeof (up)); out += sizeof (up); @@ -44,7 +44,7 @@ ottery_get_entropy_rdrand(const struct ottery_entropy_config *cfg, } if (outlen) { - if (rdrand32(&up) != 1) + if (rdrand32(up) != 1) return OTTERY_ERR_INIT_STRONG_RNG; memcpy(out, &up, outlen); }