diff options
| author | Joe Slater <joe.slater@windriver.com> | 2018-01-25 12:44:49 -0800 |
|---|---|---|
| committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2018-02-06 11:06:27 +0000 |
| commit | 5f0c4c785d7c6daa25cfd5e4ff939afb0ff2294a (patch) | |
| tree | 0723cd0303f4cb6fae43af8afad43a4aab706ba5 | |
| parent | 1d22ecc138dd0edb209e0873576dde11a1794691 (diff) | |
| download | poky-5f0c4c785d7c6daa25cfd5e4ff939afb0ff2294a.tar.gz | |
rng-tools: modify 'read error' message
Expand messages output if entropy data cannot
be read.
(From OE-Core rev: 23cf9be2065d6ea01f6d10cbed64a590c31e5bfc)
Signed-off-by: Joe Slater <joe.slater@windriver.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
| -rw-r--r-- | meta/recipes-support/rng-tools/rng-tools/read_error_msg.patch | 98 | ||||
| -rw-r--r-- | meta/recipes-support/rng-tools/rng-tools_5.bb | 1 |
2 files changed, 99 insertions, 0 deletions
diff --git a/meta/recipes-support/rng-tools/rng-tools/read_error_msg.patch b/meta/recipes-support/rng-tools/rng-tools/read_error_msg.patch new file mode 100644 index 0000000000..8aa13bf8b8 --- /dev/null +++ b/meta/recipes-support/rng-tools/rng-tools/read_error_msg.patch | |||
| @@ -0,0 +1,98 @@ | |||
| 1 | rng-tools: modify 'read error' message | ||
| 2 | |||
| 3 | Make the 'read error' message more descriptive. | ||
| 4 | |||
| 5 | Copied from https://bugzilla.redhat.com/attachment.cgi?id=1295857 | ||
| 6 | and modified in one place to apply successfully. Error message during | ||
| 7 | bootstrap modified to show device name. | ||
| 8 | |||
| 9 | Upstream-Status: pending | ||
| 10 | |||
| 11 | Signed-off-by: Joe Slater <joe.slater@windriver.com> | ||
| 12 | |||
| 13 | |||
| 14 | --- a/rngd.c | ||
| 15 | +++ b/rngd.c | ||
| 16 | @@ -247,8 +247,11 @@ static void do_loop(int random_step) | ||
| 17 | continue; /* failed, no work */ | ||
| 18 | |||
| 19 | retval = iter->xread(buf, sizeof buf, iter); | ||
| 20 | - if (retval) | ||
| 21 | + if (retval) { | ||
| 22 | + message(LOG_DAEMON|LOG_ERR, | ||
| 23 | + "Error reading from entropy source\n"); | ||
| 24 | continue; /* failed, no work */ | ||
| 25 | + } | ||
| 26 | |||
| 27 | work_done = true; | ||
| 28 | |||
| 29 | --- a/rngd_entsource.c | ||
| 30 | +++ b/rngd_entsource.c | ||
| 31 | @@ -63,10 +63,8 @@ int xread(void *buf, size_t size, struct | ||
| 32 | size -= r; | ||
| 33 | } | ||
| 34 | |||
| 35 | - if (size) { | ||
| 36 | - message(LOG_DAEMON|LOG_ERR, "read error\n"); | ||
| 37 | + if (size) | ||
| 38 | return -1; | ||
| 39 | - } | ||
| 40 | return 0; | ||
| 41 | } | ||
| 42 | |||
| 43 | @@ -152,7 +150,7 @@ error_out: | ||
| 44 | } | ||
| 45 | |||
| 46 | /* Initialize entropy source */ | ||
| 47 | -static int discard_initial_data(struct rng *ent_src) | ||
| 48 | +static int discard_initial_data(struct rng *ent_src, int *buf) | ||
| 49 | { | ||
| 50 | /* Trash 32 bits of what is probably stale (non-random) | ||
| 51 | * initial state from the RNG. For Intel's, 8 bits would | ||
| 52 | @@ -164,10 +162,12 @@ static int discard_initial_data(struct r | ||
| 53 | xread(tempbuf, sizeof(tempbuf), ent_src); | ||
| 54 | |||
| 55 | /* Return 32 bits of bootstrap data */ | ||
| 56 | - xread(tempbuf, sizeof(tempbuf), ent_src); | ||
| 57 | + if (xread(tempbuf, sizeof(tempbuf), ent_src) != 0) | ||
| 58 | + return -1; | ||
| 59 | |||
| 60 | - return tempbuf[0] | (tempbuf[1] << 8) | | ||
| 61 | + *buf = tempbuf[0] | (tempbuf[1] << 8) | | ||
| 62 | (tempbuf[2] << 16) | (tempbuf[3] << 24); | ||
| 63 | + return 0; | ||
| 64 | } | ||
| 65 | |||
| 66 | /* | ||
| 67 | @@ -175,6 +175,8 @@ static int discard_initial_data(struct r | ||
| 68 | */ | ||
| 69 | int init_entropy_source(struct rng *ent_src) | ||
| 70 | { | ||
| 71 | + int bootstrap; | ||
| 72 | + | ||
| 73 | ent_src->rng_fd = open(ent_src->rng_name, O_RDONLY); | ||
| 74 | if (ent_src->rng_fd == -1) { | ||
| 75 | return 1; | ||
| 76 | @@ -182,7 +184,11 @@ int init_entropy_source(struct rng *ent_ | ||
| 77 | src_list_add(ent_src); | ||
| 78 | /* Bootstrap FIPS tests */ | ||
| 79 | ent_src->fipsctx = malloc(sizeof(fips_ctx_t)); | ||
| 80 | - fips_init(ent_src->fipsctx, discard_initial_data(ent_src)); | ||
| 81 | + if (discard_initial_data(ent_src, &bootstrap) != 0) { | ||
| 82 | + message(LOG_ERR|LOG_INFO, "Read failure in %s during bootstrap\n",ent_src->rng_name); | ||
| 83 | + return 1; | ||
| 84 | + } | ||
| 85 | + fips_init(ent_src->fipsctx, bootstrap); | ||
| 86 | return 0; | ||
| 87 | } | ||
| 88 | |||
| 89 | --- a/rngtest.c | ||
| 90 | +++ b/rngtest.c | ||
| 91 | @@ -335,6 +335,7 @@ static int discard_initial_data(void) | ||
| 92 | |||
| 93 | return tempbuf[0] | (tempbuf[1] << 8) | | ||
| 94 | (tempbuf[2] << 16) | (tempbuf[3] << 24); | ||
| 95 | + | ||
| 96 | } | ||
| 97 | |||
| 98 | static void do_rng_fips_test_loop( void ) | ||
diff --git a/meta/recipes-support/rng-tools/rng-tools_5.bb b/meta/recipes-support/rng-tools/rng-tools_5.bb index 4a66bed643..b3c9fd9745 100644 --- a/meta/recipes-support/rng-tools/rng-tools_5.bb +++ b/meta/recipes-support/rng-tools/rng-tools_5.bb | |||
| @@ -7,6 +7,7 @@ SRC_URI = "${SOURCEFORGE_MIRROR}/gkernel/${BP}.tar.gz \ | |||
| 7 | file://0002-Add-argument-to-control-the-libargp-dependency.patch \ | 7 | file://0002-Add-argument-to-control-the-libargp-dependency.patch \ |
| 8 | file://underquote.patch \ | 8 | file://underquote.patch \ |
| 9 | file://rng-tools-5-fix-textrels-on-PIC-x86.patch \ | 9 | file://rng-tools-5-fix-textrels-on-PIC-x86.patch \ |
| 10 | file://read_error_msg.patch \ | ||
| 10 | file://init \ | 11 | file://init \ |
| 11 | file://default \ | 12 | file://default \ |
| 12 | file://rngd.service \ | 13 | file://rngd.service \ |
