commit 948b91b: [Minor] Fix uninit values usage
Vsevolod Stakhov
vsevolod at highsecure.ru
Wed Jun 26 17:42:04 UTC 2019
Author: Vsevolod Stakhov
Date: 2019-06-26 17:35:31 +0100
URL: https://github.com/rspamd/rspamd/commit/948b91b47579a02506bb416d35e58c896a0a8d6a
[Minor] Fix uninit values usage
---
contrib/libottery/ottery_entropy_rdrand.c | 28 +++++++++++-----------------
contrib/snowball/compiler/space.c | 6 +++---
2 files changed, 14 insertions(+), 20 deletions(-)
diff --git a/contrib/libottery/ottery_entropy_rdrand.c b/contrib/libottery/ottery_entropy_rdrand.c
index c5f12609b..36ae60b83 100644
--- a/contrib/libottery/ottery_entropy_rdrand.c
+++ b/contrib/libottery/ottery_entropy_rdrand.c
@@ -21,14 +21,8 @@
extern int ottery_valgrind_;
/** Helper: invoke the RDRAND instruction to get 4 random bytes in the output
- * value. Return 0 on success, and an error on failure. */
-static int
-rdrand(uint32_t *therand) {
- unsigned char status;
- __asm volatile(".byte 0x0F, 0xC7, 0xF0 ; setc %1"
- : "=a" (*therand), "=qm" (status));
- return (status)==1 ? 0 : OTTERY_ERR_INIT_STRONG_RNG;
-}
+ * 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; })
/** Generate bytes using the Intel RDRAND instruction. */
static int
@@ -36,23 +30,23 @@ ottery_get_entropy_rdrand(const struct ottery_entropy_config *cfg,
struct ottery_entropy_state *state,
uint8_t *out, size_t outlen)
{
- int err;
- uint32_t *up = (uint32_t *) out;
+ uint32_t up;
(void) cfg;
(void) state;
if (! (ottery_get_cpu_capabilities_() & OTTERY_CPUCAP_RAND) || ottery_valgrind_)
return OTTERY_ERR_INIT_STRONG_RNG;
while (outlen >= 4) {
- if ((err = rdrand(up)))
- return err;
- up += 1;
+ if (rdrand32(&up) != 1)
+ return OTTERY_ERR_INIT_STRONG_RNG;
+ memcpy (out, &up, sizeof (up));
+ out += sizeof (up);
outlen -= 4;
}
+
if (outlen) {
- uint32_t tmp;
- if ((err = rdrand(&tmp)))
- return err;
- memcpy(up, &tmp, outlen);
+ if (rdrand32(&up) != 1)
+ return OTTERY_ERR_INIT_STRONG_RNG;
+ memcpy(out, &up, outlen);
}
return 0;
}
diff --git a/contrib/snowball/compiler/space.c b/contrib/snowball/compiler/space.c
index cd5fd863d..310024e76 100644
--- a/contrib/snowball/compiler/space.c
+++ b/contrib/snowball/compiler/space.c
@@ -97,7 +97,7 @@ int space_count = 0;
extern void * check_malloc(int n) {
space_count++;
- return malloc(n);
+ return calloc(1, n);
}
extern void check_free(void * p) {
@@ -109,7 +109,7 @@ extern void check_free(void * p) {
extern char * b_to_s(symbol * p) {
int n = SIZE(p);
- char * s = (char *)malloc(n + 1);
+ char * s = (char *)calloc(1, n + 1);
{
int i;
for (i = 0; i < n; i++) {
@@ -155,7 +155,7 @@ struct str {
/* Create a new string. */
extern struct str * str_new() {
- struct str * output = (struct str *) malloc(sizeof(struct str));
+ struct str * output = (struct str *) calloc(1, sizeof(struct str));
output->data = create_b(0);
return output;
}
More information about the Commits
mailing list