|
Vladis Dronov |
c40c82e |
From 2d244c6b5aea8f1a8e70307540d9d95b8111a242 Mon Sep 17 00:00:00 2001
|
|
Vladis Dronov |
c40c82e |
From: Vladis Dronov <vdronov@redhat.com>
|
|
Vladis Dronov |
c40c82e |
Date: Mon, 14 Jun 2021 14:04:27 +0200
|
|
Vladis Dronov |
c40c82e |
Subject: Small bug and warning fixes per covscan report
|
|
Vladis Dronov |
c40c82e |
|
|
Vladis Dronov |
c40c82e |
- Fix a strncpy() bug.
|
|
Vladis Dronov |
c40c82e |
|
|
Vladis Dronov |
c40c82e |
- Remove unused variables.
|
|
Vladis Dronov |
c40c82e |
|
|
Vladis Dronov |
c40c82e |
- A small formatting fix.
|
|
Vladis Dronov |
c40c82e |
|
|
Vladis Dronov |
c40c82e |
- Fix signedness warnings.
|
|
Vladis Dronov |
c40c82e |
|
|
Vladis Dronov |
c40c82e |
- Add parenthesis to definitions of CHUNK_SIZE.
|
|
Vladis Dronov |
c40c82e |
|
|
Vladis Dronov |
c40c82e |
- Adjust default_watermark() so wm is set to a default value in all cases.
|
|
Vladis Dronov |
c40c82e |
Also add logging the same way it was done in init_kernel_rng().
|
|
Vladis Dronov |
c40c82e |
|
|
Vladis Dronov |
c40c82e |
Signed-off-by: Vladis Dronov <vdronov@redhat.com>
|
|
Vladis Dronov |
c40c82e |
---
|
|
Vladis Dronov |
c40c82e |
rngd_darn.c | 4 ++--
|
|
Vladis Dronov |
c40c82e |
rngd_jitter.c | 3 +--
|
|
Vladis Dronov |
c40c82e |
rngd_linux.c | 31 ++++++++++++++++++++++---------
|
|
Vladis Dronov |
c40c82e |
rngd_rdrand.c | 2 --
|
|
Vladis Dronov |
c40c82e |
rngd_rndr.c | 2 +-
|
|
Vladis Dronov |
c40c82e |
rngd_rtlsdr.c | 6 +++---
|
|
Vladis Dronov |
c40c82e |
stats.c | 2 +-
|
|
Vladis Dronov |
c40c82e |
7 files changed, 30 insertions(+), 20 deletions(-)
|
|
Vladis Dronov |
c40c82e |
|
|
Vladis Dronov |
c40c82e |
diff --git a/rngd_darn.c b/rngd_darn.c
|
|
Vladis Dronov |
c40c82e |
index bc8edec..5254195 100644
|
|
Vladis Dronov |
c40c82e |
--- a/rngd_darn.c
|
|
Vladis Dronov |
c40c82e |
+++ b/rngd_darn.c
|
|
Vladis Dronov |
c40c82e |
@@ -46,9 +46,9 @@ static uint64_t get_darn();
|
|
Vladis Dronov |
c40c82e |
static int refill_rand(struct rng *ent_src, bool allow_reinit);
|
|
Vladis Dronov |
c40c82e |
static size_t copy_avail_rand_to_buf(unsigned char *buf, size_t size, size_t copied);
|
|
Vladis Dronov |
c40c82e |
|
|
Vladis Dronov |
c40c82e |
-#define CHUNK_SIZE AES_BLOCK * 8
|
|
Vladis Dronov |
c40c82e |
+#define CHUNK_SIZE (AES_BLOCK*8)
|
|
Vladis Dronov |
c40c82e |
#define RDRAND_ROUNDS 512 /* 512:1 data reduction */
|
|
Vladis Dronov |
c40c82e |
-#define THRESH_BITS 14
|
|
Vladis Dronov |
c40c82e |
+#define THRESH_BITS 14
|
|
Vladis Dronov |
c40c82e |
|
|
Vladis Dronov |
c40c82e |
/* ossl AES context */
|
|
Vladis Dronov |
c40c82e |
static struct ossl_aes_ctx *ossl_ctx;
|
|
Vladis Dronov |
c40c82e |
diff --git a/rngd_jitter.c b/rngd_jitter.c
|
|
Vladis Dronov |
c40c82e |
index b68c791..7403c02 100644
|
|
Vladis Dronov |
c40c82e |
--- a/rngd_jitter.c
|
|
Vladis Dronov |
c40c82e |
+++ b/rngd_jitter.c
|
|
Vladis Dronov |
c40c82e |
@@ -128,7 +128,7 @@ int pipefds[2];
|
|
Vladis Dronov |
c40c82e |
|
|
Vladis Dronov |
c40c82e |
unsigned char *aes_buf;
|
|
Vladis Dronov |
c40c82e |
|
|
Vladis Dronov |
c40c82e |
-static char key[AES_BLOCK];
|
|
Vladis Dronov |
c40c82e |
+static unsigned char key[AES_BLOCK];
|
|
Vladis Dronov |
c40c82e |
static unsigned char iv_buf[CHUNK_SIZE] __attribute__((aligned(128)));
|
|
Vladis Dronov |
c40c82e |
static struct ossl_aes_ctx *ossl_ctx;
|
|
Vladis Dronov |
c40c82e |
|
|
Vladis Dronov |
c40c82e |
@@ -322,7 +322,6 @@ int validate_jitter_options(struct rng *ent_src)
|
|
Vladis Dronov |
c40c82e |
int delay = ent_src->rng_options[JITTER_OPT_RETRY_DELAY].int_val;
|
|
Vladis Dronov |
c40c82e |
int rcount = ent_src->rng_options[JITTER_OPT_RETRY_COUNT].int_val;
|
|
Vladis Dronov |
c40c82e |
int soft_timer = ent_src->rng_options[JITTER_OPT_FORCE_INT_TIMER].int_val;
|
|
Vladis Dronov |
c40c82e |
- int num_threads = ent_src->rng_options[JITTER_OPT_THREADS].int_val;
|
|
Vladis Dronov |
c40c82e |
|
|
Vladis Dronov |
c40c82e |
/* Need at least one thread to do this work */
|
|
Vladis Dronov |
c40c82e |
if (!threads) {
|
|
Vladis Dronov |
c40c82e |
diff --git a/rngd_linux.c b/rngd_linux.c
|
|
Vladis Dronov |
c40c82e |
index cf4fcdf..c52c62d 100644
|
|
Vladis Dronov |
c40c82e |
--- a/rngd_linux.c
|
|
Vladis Dronov |
c40c82e |
+++ b/rngd_linux.c
|
|
Vladis Dronov |
c40c82e |
@@ -56,22 +56,35 @@ extern int kent_pool_size;
|
|
Vladis Dronov |
c40c82e |
/*
|
|
Vladis Dronov |
c40c82e |
* Get the default watermark
|
|
Vladis Dronov |
c40c82e |
*/
|
|
Vladis Dronov |
c40c82e |
+
|
|
Vladis Dronov |
c40c82e |
+#define DEFAULT_WATERMARK_GUESS 4096
|
|
Vladis Dronov |
c40c82e |
+
|
|
Vladis Dronov |
c40c82e |
int default_watermark(void)
|
|
Vladis Dronov |
c40c82e |
{
|
|
Vladis Dronov |
c40c82e |
FILE *f;
|
|
Vladis Dronov |
c40c82e |
- unsigned int wm; /* Default guess */
|
|
Vladis Dronov |
c40c82e |
+ unsigned int wm;
|
|
Vladis Dronov |
c40c82e |
|
|
Vladis Dronov |
c40c82e |
f = fopen("/proc/sys/kernel/random/poolsize", "r");
|
|
Vladis Dronov |
c40c82e |
- if (!f)
|
|
Vladis Dronov |
c40c82e |
+ if (!f) {
|
|
Vladis Dronov |
c40c82e |
+ wm = DEFAULT_WATERMARK_GUESS;
|
|
Vladis Dronov |
c40c82e |
+ message(LOG_DAEMON|LOG_ERR, "can't open /proc/sys/kernel/random/poolsize: %s",
|
|
Vladis Dronov |
c40c82e |
+ strerror(errno));
|
|
Vladis Dronov |
c40c82e |
goto err;
|
|
Vladis Dronov |
c40c82e |
- /*
|
|
Vladis Dronov |
c40c82e |
- * Default to 4096 if fscanf fails
|
|
Vladis Dronov |
c40c82e |
- */
|
|
Vladis Dronov |
c40c82e |
- if(fscanf(f,"%u", &wm) < 1)
|
|
Vladis Dronov |
c40c82e |
- wm = 4096;
|
|
Vladis Dronov |
c40c82e |
+ }
|
|
Vladis Dronov |
c40c82e |
+
|
|
Vladis Dronov |
c40c82e |
+ /* Use DEFAULT_WATERMARK_GUESS if fscanf fails */
|
|
Vladis Dronov |
c40c82e |
+ if(fscanf(f,"%u", &wm) < 1) {
|
|
Vladis Dronov |
c40c82e |
+ wm = DEFAULT_WATERMARK_GUESS;
|
|
Vladis Dronov |
c40c82e |
+ message(LOG_DAEMON|LOG_ERR, "can't read /proc/sys/kernel/random/poolsize: %s",
|
|
Vladis Dronov |
c40c82e |
+ strerror(errno));
|
|
Vladis Dronov |
c40c82e |
+ }
|
|
Vladis Dronov |
c40c82e |
+
|
|
Vladis Dronov |
c40c82e |
+err:
|
|
Vladis Dronov |
c40c82e |
kent_pool_size = wm;
|
|
Vladis Dronov |
c40c82e |
wm = wm*3/4;
|
|
Vladis Dronov |
c40c82e |
-err:
|
|
Vladis Dronov |
c40c82e |
+ message(LOG_DAEMON|LOG_ERR, "kernel entropy pool size: %d pool watermark: %d",
|
|
Vladis Dronov |
c40c82e |
+ kent_pool_size, wm);
|
|
Vladis Dronov |
c40c82e |
+
|
|
Vladis Dronov |
c40c82e |
if (f)
|
|
Vladis Dronov |
c40c82e |
fclose(f);
|
|
Vladis Dronov |
c40c82e |
return wm;
|
|
Vladis Dronov |
c40c82e |
@@ -153,7 +166,7 @@ int random_add_entropy(void *buf, size_t size)
|
|
Vladis Dronov |
c40c82e |
} else
|
|
Vladis Dronov |
c40c82e |
write(random_fd, buf, size);
|
|
Vladis Dronov |
c40c82e |
|
|
Vladis Dronov |
c40c82e |
- return ent->ent_count;
|
|
Vladis Dronov |
c40c82e |
+ return ent->ent_count;
|
|
Vladis Dronov |
c40c82e |
|
|
Vladis Dronov |
c40c82e |
}
|
|
Vladis Dronov |
c40c82e |
|
|
Vladis Dronov |
c40c82e |
diff --git a/rngd_rdrand.c b/rngd_rdrand.c
|
|
Vladis Dronov |
c40c82e |
index cba27a9..caa9d05 100644
|
|
Vladis Dronov |
c40c82e |
--- a/rngd_rdrand.c
|
|
Vladis Dronov |
c40c82e |
+++ b/rngd_rdrand.c
|
|
Vladis Dronov |
c40c82e |
@@ -243,8 +243,6 @@ int init_drng_entropy_source(struct rng *ent_src)
|
|
Vladis Dronov |
c40c82e |
const uint32_t features_ebx7_rdseed = 1 << 18;
|
|
Vladis Dronov |
c40c82e |
uint32_t max_cpuid_leaf;
|
|
Vladis Dronov |
c40c82e |
unsigned char xkey[AES_BLOCK]; /* Material to XOR into the key */
|
|
Vladis Dronov |
c40c82e |
- int fd;
|
|
Vladis Dronov |
c40c82e |
- int i;
|
|
Vladis Dronov |
c40c82e |
|
|
Vladis Dronov |
c40c82e |
if (!x86_has_cpuid())
|
|
Vladis Dronov |
c40c82e |
return 1; /* No CPUID instruction */
|
|
Vladis Dronov |
c40c82e |
diff --git a/rngd_rndr.c b/rngd_rndr.c
|
|
Vladis Dronov |
c40c82e |
index 176ce90..79bf2ce 100644
|
|
Vladis Dronov |
c40c82e |
--- a/rngd_rndr.c
|
|
Vladis Dronov |
c40c82e |
+++ b/rngd_rndr.c
|
|
Vladis Dronov |
c40c82e |
@@ -47,7 +47,7 @@ static struct ossl_aes_ctx *ossl_ctx;
|
|
Vladis Dronov |
c40c82e |
static unsigned char key[AES_BLOCK];
|
|
Vladis Dronov |
c40c82e |
static unsigned char iv_buf[AES_BLOCK];
|
|
Vladis Dronov |
c40c82e |
|
|
Vladis Dronov |
c40c82e |
-#define CHUNK_SIZE AES_BLOCK * 8
|
|
Vladis Dronov |
c40c82e |
+#define CHUNK_SIZE (AES_BLOCK*8)
|
|
Vladis Dronov |
c40c82e |
static unsigned char aes_buf[CHUNK_SIZE];
|
|
Vladis Dronov |
c40c82e |
static size_t aes_buf_pos;
|
|
Vladis Dronov |
c40c82e |
#define REKEY_BITS 8
|
|
Vladis Dronov |
c40c82e |
diff --git a/rngd_rtlsdr.c b/rngd_rtlsdr.c
|
|
Vladis Dronov |
c40c82e |
index 949c8b0..5371905 100644
|
|
Vladis Dronov |
c40c82e |
--- a/rngd_rtlsdr.c
|
|
Vladis Dronov |
c40c82e |
+++ b/rngd_rtlsdr.c
|
|
Vladis Dronov |
c40c82e |
@@ -21,12 +21,12 @@
|
|
Vladis Dronov |
c40c82e |
#include "rngd.h"
|
|
Vladis Dronov |
c40c82e |
#include "ossl_helpers.h"
|
|
Vladis Dronov |
c40c82e |
|
|
Vladis Dronov |
c40c82e |
-#define RAW_BUF_SZ 4096
|
|
Vladis Dronov |
c40c82e |
+#define RAW_BUF_SZ 4096
|
|
Vladis Dronov |
c40c82e |
|
|
Vladis Dronov |
c40c82e |
-#define CHUNK_SIZE (AES_BLOCK*8) /* 8 parallel streams */
|
|
Vladis Dronov |
c40c82e |
+#define CHUNK_SIZE (AES_BLOCK*8) /* 8 parallel streams */
|
|
Vladis Dronov |
c40c82e |
|
|
Vladis Dronov |
c40c82e |
static rtlsdr_dev_t *radio = NULL;
|
|
Vladis Dronov |
c40c82e |
-static char raw_buffera[RAW_BUF_SZ];
|
|
Vladis Dronov |
c40c82e |
+static unsigned char raw_buffera[RAW_BUF_SZ];
|
|
Vladis Dronov |
c40c82e |
static int freq_min;
|
|
Vladis Dronov |
c40c82e |
static int freq_max;
|
|
Vladis Dronov |
c40c82e |
static int sample_min;
|
|
Vladis Dronov |
c40c82e |
diff --git a/stats.c b/stats.c
|
|
Vladis Dronov |
c40c82e |
index 5c4036a..a172a35 100644
|
|
Vladis Dronov |
c40c82e |
--- a/stats.c
|
|
Vladis Dronov |
c40c82e |
+++ b/stats.c
|
|
Vladis Dronov |
c40c82e |
@@ -65,7 +65,7 @@ static void scale_mult_unit(char *unit, int unitsize,
|
|
Vladis Dronov |
c40c82e |
if (mult)
|
|
Vladis Dronov |
c40c82e |
snprintf(unit, unitsize, "%ci%s", multchar[mult-1], baseunit);
|
|
Vladis Dronov |
c40c82e |
else
|
|
Vladis Dronov |
c40c82e |
- strncpy(unit, baseunit, unitsize);
|
|
Vladis Dronov |
c40c82e |
+ strncpy(unit, baseunit, unitsize-1);
|
|
Vladis Dronov |
c40c82e |
}
|
|
Vladis Dronov |
c40c82e |
|
|
Vladis Dronov |
c40c82e |
/* Computes elapsed time in microseconds */
|
|
Vladis Dronov |
c40c82e |
--
|
|
Vladis Dronov |
c40c82e |
2.26.3
|
|
Vladis Dronov |
c40c82e |
|