X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=src%2Fbasic%2Frandom-util.c;h=810eeab4d551b395fe1833aa804ad23121737762;hp=490107ef41b85fe673f960143d62f8810b3c39f4;hb=d93247127eb2e073a6d3b5bcc67bcc4048d674fe;hpb=3daa986ebd3fd6d42853c12020a8c687ce681b26 diff --git a/src/basic/random-util.c b/src/basic/random-util.c index 490107ef4..810eeab4d 100644 --- a/src/basic/random-util.c +++ b/src/basic/random-util.c @@ -46,8 +46,8 @@ int acquire_random_bytes(void *p, size_t n, bool high_quality_required) { static int have_syscall = -1; _cleanup_close_ int fd = -1; - int r; unsigned already_done = 0; + int r; /* Gathers some randomness from the kernel. This call will never block. If * high_quality_required, it will always return some data from the kernel, @@ -61,7 +61,7 @@ int acquire_random_bytes(void *p, size_t n, bool high_quality_required) { r = getrandom(p, n, GRND_NONBLOCK); if (r > 0) { have_syscall = true; - if (r == n) + if ((size_t) r == n) return 0; if (!high_quality_required) { /* Fill in the remaing bytes using pseudorandom values */ @@ -114,7 +114,7 @@ void initialize_srand(void) { auxv = (void*) getauxval(AT_RANDOM); if (auxv) { - assert_cc(sizeof(x) < 16); + assert_cc(sizeof(x) <= 16); memcpy(&x, auxv, sizeof(x)); } else #endif @@ -147,11 +147,11 @@ void pseudorandom_bytes(void *p, size_t n) { rr = (unsigned) rand(); #if RAND_STEP >= 3 - if (q - (uint8_t*) p + 2 < n) + if ((size_t) (q - (uint8_t*) p + 2) < n) q[2] = rr >> 16; #endif #if RAND_STEP >= 2 - if (q - (uint8_t*) p + 1 < n) + if ((size_t) (q - (uint8_t*) p + 1) < n) q[1] = rr >> 8; #endif q[0] = rr;