rng-tools/0007-Small-bug-and-warning-fixes-per-covscan-report.patch
Vladis Dronov 9a6943f11c Update to 6.13 and upstream fixes
- Update the sources to 6.13
- Add important fixes from the upstream
- Remove Provides: jitterentropy-rngd as it was retired in f29.
- Resolves: rhbz#1965318

Signed-off-by: Vladis Dronov <vdronov@redhat.com>
2021-06-16 20:48:01 +02:00

186 lines
5.0 KiB
Diff

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