summaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/libcrypto/arc4random/getentropy_linux.c23
-rw-r--r--src/lib/libcrypto/arc4random/getentropy_osx.c19
-rw-r--r--src/lib/libcrypto/arc4random/getentropy_solaris.c19
-rw-r--r--src/lib/libcrypto/crypto/getentropy_linux.c23
-rw-r--r--src/lib/libcrypto/crypto/getentropy_osx.c19
-rw-r--r--src/lib/libcrypto/crypto/getentropy_solaris.c19
6 files changed, 64 insertions, 58 deletions
diff --git a/src/lib/libcrypto/arc4random/getentropy_linux.c b/src/lib/libcrypto/arc4random/getentropy_linux.c
index 294b23037f..f550a9d365 100644
--- a/src/lib/libcrypto/arc4random/getentropy_linux.c
+++ b/src/lib/libcrypto/arc4random/getentropy_linux.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: getentropy_linux.c,v 1.20 2014/07/12 15:43:49 beck Exp $ */ 1/* $OpenBSD: getentropy_linux.c,v 1.21 2014/07/12 20:41:47 wouter Exp $ */
2 2
3/* 3/*
4 * Copyright (c) 2014 Theo de Raadt <deraadt@openbsd.org> 4 * Copyright (c) 2014 Theo de Raadt <deraadt@openbsd.org>
@@ -65,6 +65,7 @@
65 65
66#define HR(x, l) (SHA512_Update(&ctx, (char *)(x), (l))) 66#define HR(x, l) (SHA512_Update(&ctx, (char *)(x), (l)))
67#define HD(x) (SHA512_Update(&ctx, (char *)&(x), sizeof (x))) 67#define HD(x) (SHA512_Update(&ctx, (char *)&(x), sizeof (x)))
68#define HF(x) (SHA512_Update(&ctx, (char *)&(x), sizeof (void*)))
68 69
69int getentropy(void *buf, size_t len); 70int getentropy(void *buf, size_t len);
70 71
@@ -209,7 +210,7 @@ start:
209 } 210 }
210 for (i = 0; i < len; ) { 211 for (i = 0; i < len; ) {
211 size_t wanted = len - i; 212 size_t wanted = len - i;
212 ssize_t ret = read(fd, buf + i, wanted); 213 ssize_t ret = read(fd, (char *)buf + i, wanted);
213 214
214 if (ret == -1) { 215 if (ret == -1) {
215 if (errno == EAGAIN || errno == EINTR) 216 if (errno == EAGAIN || errno == EINTR)
@@ -234,11 +235,11 @@ static int
234getentropy_sysctl(void *buf, size_t len) 235getentropy_sysctl(void *buf, size_t len)
235{ 236{
236 static int mib[] = { CTL_KERN, KERN_RANDOM, RANDOM_UUID }; 237 static int mib[] = { CTL_KERN, KERN_RANDOM, RANDOM_UUID };
237 size_t i, chunk; 238 size_t i;
238 int save_errno = errno; 239 int save_errno = errno;
239 240
240 for (i = 0; i < len; ) { 241 for (i = 0; i < len; ) {
241 chunk = min(len - i, 16); 242 size_t chunk = min(len - i, 16);
242 243
243 /* SYS__sysctl because some systems already removed sysctl() */ 244 /* SYS__sysctl because some systems already removed sysctl() */
244 struct __sysctl_args args = { 245 struct __sysctl_args args = {
@@ -290,7 +291,7 @@ static int
290getentropy_fallback(void *buf, size_t len) 291getentropy_fallback(void *buf, size_t len)
291{ 292{
292 uint8_t results[SHA512_DIGEST_LENGTH]; 293 uint8_t results[SHA512_DIGEST_LENGTH];
293 int save_errno = errno, e, m, pgs = getpagesize(), faster = 0, repeat; 294 int save_errno = errno, e, pgs = getpagesize(), faster = 0, repeat;
294 static int cnt; 295 static int cnt;
295 struct timespec ts; 296 struct timespec ts;
296 struct timeval tv; 297 struct timeval tv;
@@ -300,7 +301,7 @@ getentropy_fallback(void *buf, size_t len)
300 SHA512_CTX ctx; 301 SHA512_CTX ctx;
301 static pid_t lastpid; 302 static pid_t lastpid;
302 pid_t pid; 303 pid_t pid;
303 size_t i, ii; 304 size_t i, ii, m;
304 char *p; 305 char *p;
305 306
306 pid = getpid(); 307 pid = getpid();
@@ -329,7 +330,7 @@ getentropy_fallback(void *buf, size_t len)
329 HX((pid = getsid(pid)) == -1, pid); 330 HX((pid = getsid(pid)) == -1, pid);
330 HX((pid = getppid()) == -1, pid); 331 HX((pid = getppid()) == -1, pid);
331 HX((pid = getpgid(0)) == -1, pid); 332 HX((pid = getpgid(0)) == -1, pid);
332 HX((m = getpriority(0, 0)) == -1, m); 333 HX((e = getpriority(0, 0)) == -1, e);
333 334
334 if (!faster) { 335 if (!faster) {
335 ts.tv_sec = 0; 336 ts.tv_sec = 0;
@@ -341,9 +342,9 @@ getentropy_fallback(void *buf, size_t len)
341 HX(sigprocmask(SIG_BLOCK, NULL, &sigset) == -1, 342 HX(sigprocmask(SIG_BLOCK, NULL, &sigset) == -1,
342 sigset); 343 sigset);
343 344
344 HD(main); /* an addr in program */ 345 HF(main); /* an addr in program */
345 HD(getentropy); /* an addr in this library */ 346 HF(getentropy); /* an addr in this library */
346 HD(printf); /* an addr in libc */ 347 HF(printf); /* an addr in libc */
347 p = (char *)&p; 348 p = (char *)&p;
348 HD(p); /* an addr on stack */ 349 HD(p); /* an addr on stack */
349 p = (char *)&errno; 350 p = (char *)&errno;
@@ -483,7 +484,7 @@ getentropy_fallback(void *buf, size_t len)
483#endif 484#endif
484 485
485 SHA512_Final(results, &ctx); 486 SHA512_Final(results, &ctx);
486 memcpy(buf + i, results, min(sizeof(results), len - i)); 487 memcpy((char *)buf + i, results, min(sizeof(results), len - i));
487 i += min(sizeof(results), len - i); 488 i += min(sizeof(results), len - i);
488 } 489 }
489 memset(results, 0, sizeof results); 490 memset(results, 0, sizeof results);
diff --git a/src/lib/libcrypto/arc4random/getentropy_osx.c b/src/lib/libcrypto/arc4random/getentropy_osx.c
index 67583f9e13..c7e09c78a5 100644
--- a/src/lib/libcrypto/arc4random/getentropy_osx.c
+++ b/src/lib/libcrypto/arc4random/getentropy_osx.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: getentropy_osx.c,v 1.3 2014/07/12 14:48:00 deraadt Exp $ */ 1/* $OpenBSD: getentropy_osx.c,v 1.4 2014/07/12 20:41:47 wouter Exp $ */
2 2
3/* 3/*
4 * Copyright (c) 2014 Theo de Raadt <deraadt@openbsd.org> 4 * Copyright (c) 2014 Theo de Raadt <deraadt@openbsd.org>
@@ -70,6 +70,7 @@
70 70
71#define HR(x, l) (SHA512_Update(&ctx, (char *)(x), (l))) 71#define HR(x, l) (SHA512_Update(&ctx, (char *)(x), (l)))
72#define HD(x) (SHA512_Update(&ctx, (char *)&(x), sizeof (x))) 72#define HD(x) (SHA512_Update(&ctx, (char *)&(x), sizeof (x)))
73#define HF(x) (SHA512_Update(&ctx, (char *)&(x), sizeof (void*)))
73 74
74int getentropy(void *buf, size_t len); 75int getentropy(void *buf, size_t len);
75 76
@@ -184,7 +185,7 @@ start:
184 } 185 }
185 for (i = 0; i < len; ) { 186 for (i = 0; i < len; ) {
186 size_t wanted = len - i; 187 size_t wanted = len - i;
187 ssize_t ret = read(fd, buf + i, wanted); 188 ssize_t ret = read(fd, (char *)buf + i, wanted);
188 189
189 if (ret == -1) { 190 if (ret == -1) {
190 if (errno == EAGAIN || errno == EINTR) 191 if (errno == EAGAIN || errno == EINTR)
@@ -214,7 +215,7 @@ static int
214getentropy_fallback(void *buf, size_t len) 215getentropy_fallback(void *buf, size_t len)
215{ 216{
216 uint8_t results[SHA512_DIGEST_LENGTH]; 217 uint8_t results[SHA512_DIGEST_LENGTH];
217 int save_errno = errno, e, m, pgs = getpagesize(), faster = 0, repeat; 218 int save_errno = errno, e, pgs = getpagesize(), faster = 0, repeat;
218 static int cnt; 219 static int cnt;
219 struct timespec ts; 220 struct timespec ts;
220 struct timeval tv; 221 struct timeval tv;
@@ -224,7 +225,7 @@ getentropy_fallback(void *buf, size_t len)
224 SHA512_CTX ctx; 225 SHA512_CTX ctx;
225 static pid_t lastpid; 226 static pid_t lastpid;
226 pid_t pid; 227 pid_t pid;
227 size_t i, ii; 228 size_t i, ii, m;
228 char *p; 229 char *p;
229 struct tcpstat tcpstat; 230 struct tcpstat tcpstat;
230 struct udpstat udpstat; 231 struct udpstat udpstat;
@@ -279,7 +280,7 @@ getentropy_fallback(void *buf, size_t len)
279 HX((pid = getsid(pid)) == -1, pid); 280 HX((pid = getsid(pid)) == -1, pid);
280 HX((pid = getppid()) == -1, pid); 281 HX((pid = getppid()) == -1, pid);
281 HX((pid = getpgid(0)) == -1, pid); 282 HX((pid = getpgid(0)) == -1, pid);
282 HX((m = getpriority(0, 0)) == -1, m); 283 HX((e = getpriority(0, 0)) == -1, e);
283 284
284 if (!faster) { 285 if (!faster) {
285 ts.tv_sec = 0; 286 ts.tv_sec = 0;
@@ -291,9 +292,9 @@ getentropy_fallback(void *buf, size_t len)
291 HX(sigprocmask(SIG_BLOCK, NULL, &sigset) == -1, 292 HX(sigprocmask(SIG_BLOCK, NULL, &sigset) == -1,
292 sigset); 293 sigset);
293 294
294 HD(main); /* an addr in program */ 295 HF(main); /* an addr in program */
295 HD(getentropy); /* an addr in this library */ 296 HF(getentropy); /* an addr in this library */
296 HD(printf); /* an addr in libc */ 297 HF(printf); /* an addr in libc */
297 p = (char *)&p; 298 p = (char *)&p;
298 HD(p); /* an addr on stack */ 299 HD(p); /* an addr on stack */
299 p = (char *)&errno; 300 p = (char *)&errno;
@@ -413,7 +414,7 @@ getentropy_fallback(void *buf, size_t len)
413 } 414 }
414 415
415 SHA512_Final(results, &ctx); 416 SHA512_Final(results, &ctx);
416 memcpy(buf + i, results, min(sizeof(results), len - i)); 417 memcpy((char *)buf + i, results, min(sizeof(results), len - i));
417 i += min(sizeof(results), len - i); 418 i += min(sizeof(results), len - i);
418 } 419 }
419 memset(results, 0, sizeof results); 420 memset(results, 0, sizeof results);
diff --git a/src/lib/libcrypto/arc4random/getentropy_solaris.c b/src/lib/libcrypto/arc4random/getentropy_solaris.c
index 83cc30aac2..cfd5b70475 100644
--- a/src/lib/libcrypto/arc4random/getentropy_solaris.c
+++ b/src/lib/libcrypto/arc4random/getentropy_solaris.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: getentropy_solaris.c,v 1.3 2014/07/12 14:46:31 deraadt Exp $ */ 1/* $OpenBSD: getentropy_solaris.c,v 1.4 2014/07/12 20:41:47 wouter Exp $ */
2 2
3/* 3/*
4 * Copyright (c) 2014 Theo de Raadt <deraadt@openbsd.org> 4 * Copyright (c) 2014 Theo de Raadt <deraadt@openbsd.org>
@@ -60,6 +60,7 @@
60 60
61#define HR(x, l) (SHA512_Update(&ctx, (char *)(x), (l))) 61#define HR(x, l) (SHA512_Update(&ctx, (char *)(x), (l)))
62#define HD(x) (SHA512_Update(&ctx, (char *)&(x), sizeof (x))) 62#define HD(x) (SHA512_Update(&ctx, (char *)&(x), sizeof (x)))
63#define HF(x) (SHA512_Update(&ctx, (char *)&(x), sizeof (void*)))
63 64
64int getentropy(void *buf, size_t len); 65int getentropy(void *buf, size_t len);
65 66
@@ -194,7 +195,7 @@ start:
194 } 195 }
195 for (i = 0; i < len; ) { 196 for (i = 0; i < len; ) {
196 size_t wanted = len - i; 197 size_t wanted = len - i;
197 ssize_t ret = read(fd, buf + i, wanted); 198 ssize_t ret = read(fd, (char *)buf + i, wanted);
198 199
199 if (ret == -1) { 200 if (ret == -1) {
200 if (errno == EAGAIN || errno == EINTR) 201 if (errno == EAGAIN || errno == EINTR)
@@ -243,7 +244,7 @@ static int
243getentropy_fallback(void *buf, size_t len) 244getentropy_fallback(void *buf, size_t len)
244{ 245{
245 uint8_t results[SHA512_DIGEST_LENGTH]; 246 uint8_t results[SHA512_DIGEST_LENGTH];
246 int save_errno = errno, e, m, pgs = getpagesize(), faster = 0, repeat; 247 int save_errno = errno, e, pgs = getpagesize(), faster = 0, repeat;
247 static int cnt; 248 static int cnt;
248 struct timespec ts; 249 struct timespec ts;
249 struct timeval tv; 250 struct timeval tv;
@@ -254,7 +255,7 @@ getentropy_fallback(void *buf, size_t len)
254 SHA512_CTX ctx; 255 SHA512_CTX ctx;
255 static pid_t lastpid; 256 static pid_t lastpid;
256 pid_t pid; 257 pid_t pid;
257 size_t i, ii; 258 size_t i, ii, m;
258 char *p; 259 char *p;
259 260
260 pid = getpid(); 261 pid = getpid();
@@ -283,7 +284,7 @@ getentropy_fallback(void *buf, size_t len)
283 HX((pid = getsid(pid)) == -1, pid); 284 HX((pid = getsid(pid)) == -1, pid);
284 HX((pid = getppid()) == -1, pid); 285 HX((pid = getppid()) == -1, pid);
285 HX((pid = getpgid(0)) == -1, pid); 286 HX((pid = getpgid(0)) == -1, pid);
286 HX((m = getpriority(0, 0)) == -1, m); 287 HX((e = getpriority(0, 0)) == -1, e);
287 HX((getloadavg(loadavg, 3) == -1), loadavg); 288 HX((getloadavg(loadavg, 3) == -1), loadavg);
288 289
289 if (!faster) { 290 if (!faster) {
@@ -296,9 +297,9 @@ getentropy_fallback(void *buf, size_t len)
296 HX(sigprocmask(SIG_BLOCK, NULL, &sigset) == -1, 297 HX(sigprocmask(SIG_BLOCK, NULL, &sigset) == -1,
297 sigset); 298 sigset);
298 299
299 HD(main); /* an addr in program */ 300 HF(main); /* an addr in program */
300 HD(getentropy); /* an addr in this library */ 301 HF(getentropy); /* an addr in this library */
301 HD(printf); /* an addr in libc */ 302 HF(printf); /* an addr in libc */
302 p = (char *)&p; 303 p = (char *)&p;
303 HD(p); /* an addr on stack */ 304 HD(p); /* an addr on stack */
304 p = (char *)&errno; 305 p = (char *)&errno;
@@ -416,7 +417,7 @@ getentropy_fallback(void *buf, size_t len)
416 HD(cnt); 417 HD(cnt);
417 } 418 }
418 SHA512_Final(results, &ctx); 419 SHA512_Final(results, &ctx);
419 memcpy(buf + i, results, min(sizeof(results), len - i)); 420 memcpy((char *)buf + i, results, min(sizeof(results), len - i));
420 i += min(sizeof(results), len - i); 421 i += min(sizeof(results), len - i);
421 } 422 }
422 memset(results, 0, sizeof results); 423 memset(results, 0, sizeof results);
diff --git a/src/lib/libcrypto/crypto/getentropy_linux.c b/src/lib/libcrypto/crypto/getentropy_linux.c
index 294b23037f..f550a9d365 100644
--- a/src/lib/libcrypto/crypto/getentropy_linux.c
+++ b/src/lib/libcrypto/crypto/getentropy_linux.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: getentropy_linux.c,v 1.20 2014/07/12 15:43:49 beck Exp $ */ 1/* $OpenBSD: getentropy_linux.c,v 1.21 2014/07/12 20:41:47 wouter Exp $ */
2 2
3/* 3/*
4 * Copyright (c) 2014 Theo de Raadt <deraadt@openbsd.org> 4 * Copyright (c) 2014 Theo de Raadt <deraadt@openbsd.org>
@@ -65,6 +65,7 @@
65 65
66#define HR(x, l) (SHA512_Update(&ctx, (char *)(x), (l))) 66#define HR(x, l) (SHA512_Update(&ctx, (char *)(x), (l)))
67#define HD(x) (SHA512_Update(&ctx, (char *)&(x), sizeof (x))) 67#define HD(x) (SHA512_Update(&ctx, (char *)&(x), sizeof (x)))
68#define HF(x) (SHA512_Update(&ctx, (char *)&(x), sizeof (void*)))
68 69
69int getentropy(void *buf, size_t len); 70int getentropy(void *buf, size_t len);
70 71
@@ -209,7 +210,7 @@ start:
209 } 210 }
210 for (i = 0; i < len; ) { 211 for (i = 0; i < len; ) {
211 size_t wanted = len - i; 212 size_t wanted = len - i;
212 ssize_t ret = read(fd, buf + i, wanted); 213 ssize_t ret = read(fd, (char *)buf + i, wanted);
213 214
214 if (ret == -1) { 215 if (ret == -1) {
215 if (errno == EAGAIN || errno == EINTR) 216 if (errno == EAGAIN || errno == EINTR)
@@ -234,11 +235,11 @@ static int
234getentropy_sysctl(void *buf, size_t len) 235getentropy_sysctl(void *buf, size_t len)
235{ 236{
236 static int mib[] = { CTL_KERN, KERN_RANDOM, RANDOM_UUID }; 237 static int mib[] = { CTL_KERN, KERN_RANDOM, RANDOM_UUID };
237 size_t i, chunk; 238 size_t i;
238 int save_errno = errno; 239 int save_errno = errno;
239 240
240 for (i = 0; i < len; ) { 241 for (i = 0; i < len; ) {
241 chunk = min(len - i, 16); 242 size_t chunk = min(len - i, 16);
242 243
243 /* SYS__sysctl because some systems already removed sysctl() */ 244 /* SYS__sysctl because some systems already removed sysctl() */
244 struct __sysctl_args args = { 245 struct __sysctl_args args = {
@@ -290,7 +291,7 @@ static int
290getentropy_fallback(void *buf, size_t len) 291getentropy_fallback(void *buf, size_t len)
291{ 292{
292 uint8_t results[SHA512_DIGEST_LENGTH]; 293 uint8_t results[SHA512_DIGEST_LENGTH];
293 int save_errno = errno, e, m, pgs = getpagesize(), faster = 0, repeat; 294 int save_errno = errno, e, pgs = getpagesize(), faster = 0, repeat;
294 static int cnt; 295 static int cnt;
295 struct timespec ts; 296 struct timespec ts;
296 struct timeval tv; 297 struct timeval tv;
@@ -300,7 +301,7 @@ getentropy_fallback(void *buf, size_t len)
300 SHA512_CTX ctx; 301 SHA512_CTX ctx;
301 static pid_t lastpid; 302 static pid_t lastpid;
302 pid_t pid; 303 pid_t pid;
303 size_t i, ii; 304 size_t i, ii, m;
304 char *p; 305 char *p;
305 306
306 pid = getpid(); 307 pid = getpid();
@@ -329,7 +330,7 @@ getentropy_fallback(void *buf, size_t len)
329 HX((pid = getsid(pid)) == -1, pid); 330 HX((pid = getsid(pid)) == -1, pid);
330 HX((pid = getppid()) == -1, pid); 331 HX((pid = getppid()) == -1, pid);
331 HX((pid = getpgid(0)) == -1, pid); 332 HX((pid = getpgid(0)) == -1, pid);
332 HX((m = getpriority(0, 0)) == -1, m); 333 HX((e = getpriority(0, 0)) == -1, e);
333 334
334 if (!faster) { 335 if (!faster) {
335 ts.tv_sec = 0; 336 ts.tv_sec = 0;
@@ -341,9 +342,9 @@ getentropy_fallback(void *buf, size_t len)
341 HX(sigprocmask(SIG_BLOCK, NULL, &sigset) == -1, 342 HX(sigprocmask(SIG_BLOCK, NULL, &sigset) == -1,
342 sigset); 343 sigset);
343 344
344 HD(main); /* an addr in program */ 345 HF(main); /* an addr in program */
345 HD(getentropy); /* an addr in this library */ 346 HF(getentropy); /* an addr in this library */
346 HD(printf); /* an addr in libc */ 347 HF(printf); /* an addr in libc */
347 p = (char *)&p; 348 p = (char *)&p;
348 HD(p); /* an addr on stack */ 349 HD(p); /* an addr on stack */
349 p = (char *)&errno; 350 p = (char *)&errno;
@@ -483,7 +484,7 @@ getentropy_fallback(void *buf, size_t len)
483#endif 484#endif
484 485
485 SHA512_Final(results, &ctx); 486 SHA512_Final(results, &ctx);
486 memcpy(buf + i, results, min(sizeof(results), len - i)); 487 memcpy((char *)buf + i, results, min(sizeof(results), len - i));
487 i += min(sizeof(results), len - i); 488 i += min(sizeof(results), len - i);
488 } 489 }
489 memset(results, 0, sizeof results); 490 memset(results, 0, sizeof results);
diff --git a/src/lib/libcrypto/crypto/getentropy_osx.c b/src/lib/libcrypto/crypto/getentropy_osx.c
index 67583f9e13..c7e09c78a5 100644
--- a/src/lib/libcrypto/crypto/getentropy_osx.c
+++ b/src/lib/libcrypto/crypto/getentropy_osx.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: getentropy_osx.c,v 1.3 2014/07/12 14:48:00 deraadt Exp $ */ 1/* $OpenBSD: getentropy_osx.c,v 1.4 2014/07/12 20:41:47 wouter Exp $ */
2 2
3/* 3/*
4 * Copyright (c) 2014 Theo de Raadt <deraadt@openbsd.org> 4 * Copyright (c) 2014 Theo de Raadt <deraadt@openbsd.org>
@@ -70,6 +70,7 @@
70 70
71#define HR(x, l) (SHA512_Update(&ctx, (char *)(x), (l))) 71#define HR(x, l) (SHA512_Update(&ctx, (char *)(x), (l)))
72#define HD(x) (SHA512_Update(&ctx, (char *)&(x), sizeof (x))) 72#define HD(x) (SHA512_Update(&ctx, (char *)&(x), sizeof (x)))
73#define HF(x) (SHA512_Update(&ctx, (char *)&(x), sizeof (void*)))
73 74
74int getentropy(void *buf, size_t len); 75int getentropy(void *buf, size_t len);
75 76
@@ -184,7 +185,7 @@ start:
184 } 185 }
185 for (i = 0; i < len; ) { 186 for (i = 0; i < len; ) {
186 size_t wanted = len - i; 187 size_t wanted = len - i;
187 ssize_t ret = read(fd, buf + i, wanted); 188 ssize_t ret = read(fd, (char *)buf + i, wanted);
188 189
189 if (ret == -1) { 190 if (ret == -1) {
190 if (errno == EAGAIN || errno == EINTR) 191 if (errno == EAGAIN || errno == EINTR)
@@ -214,7 +215,7 @@ static int
214getentropy_fallback(void *buf, size_t len) 215getentropy_fallback(void *buf, size_t len)
215{ 216{
216 uint8_t results[SHA512_DIGEST_LENGTH]; 217 uint8_t results[SHA512_DIGEST_LENGTH];
217 int save_errno = errno, e, m, pgs = getpagesize(), faster = 0, repeat; 218 int save_errno = errno, e, pgs = getpagesize(), faster = 0, repeat;
218 static int cnt; 219 static int cnt;
219 struct timespec ts; 220 struct timespec ts;
220 struct timeval tv; 221 struct timeval tv;
@@ -224,7 +225,7 @@ getentropy_fallback(void *buf, size_t len)
224 SHA512_CTX ctx; 225 SHA512_CTX ctx;
225 static pid_t lastpid; 226 static pid_t lastpid;
226 pid_t pid; 227 pid_t pid;
227 size_t i, ii; 228 size_t i, ii, m;
228 char *p; 229 char *p;
229 struct tcpstat tcpstat; 230 struct tcpstat tcpstat;
230 struct udpstat udpstat; 231 struct udpstat udpstat;
@@ -279,7 +280,7 @@ getentropy_fallback(void *buf, size_t len)
279 HX((pid = getsid(pid)) == -1, pid); 280 HX((pid = getsid(pid)) == -1, pid);
280 HX((pid = getppid()) == -1, pid); 281 HX((pid = getppid()) == -1, pid);
281 HX((pid = getpgid(0)) == -1, pid); 282 HX((pid = getpgid(0)) == -1, pid);
282 HX((m = getpriority(0, 0)) == -1, m); 283 HX((e = getpriority(0, 0)) == -1, e);
283 284
284 if (!faster) { 285 if (!faster) {
285 ts.tv_sec = 0; 286 ts.tv_sec = 0;
@@ -291,9 +292,9 @@ getentropy_fallback(void *buf, size_t len)
291 HX(sigprocmask(SIG_BLOCK, NULL, &sigset) == -1, 292 HX(sigprocmask(SIG_BLOCK, NULL, &sigset) == -1,
292 sigset); 293 sigset);
293 294
294 HD(main); /* an addr in program */ 295 HF(main); /* an addr in program */
295 HD(getentropy); /* an addr in this library */ 296 HF(getentropy); /* an addr in this library */
296 HD(printf); /* an addr in libc */ 297 HF(printf); /* an addr in libc */
297 p = (char *)&p; 298 p = (char *)&p;
298 HD(p); /* an addr on stack */ 299 HD(p); /* an addr on stack */
299 p = (char *)&errno; 300 p = (char *)&errno;
@@ -413,7 +414,7 @@ getentropy_fallback(void *buf, size_t len)
413 } 414 }
414 415
415 SHA512_Final(results, &ctx); 416 SHA512_Final(results, &ctx);
416 memcpy(buf + i, results, min(sizeof(results), len - i)); 417 memcpy((char *)buf + i, results, min(sizeof(results), len - i));
417 i += min(sizeof(results), len - i); 418 i += min(sizeof(results), len - i);
418 } 419 }
419 memset(results, 0, sizeof results); 420 memset(results, 0, sizeof results);
diff --git a/src/lib/libcrypto/crypto/getentropy_solaris.c b/src/lib/libcrypto/crypto/getentropy_solaris.c
index 83cc30aac2..cfd5b70475 100644
--- a/src/lib/libcrypto/crypto/getentropy_solaris.c
+++ b/src/lib/libcrypto/crypto/getentropy_solaris.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: getentropy_solaris.c,v 1.3 2014/07/12 14:46:31 deraadt Exp $ */ 1/* $OpenBSD: getentropy_solaris.c,v 1.4 2014/07/12 20:41:47 wouter Exp $ */
2 2
3/* 3/*
4 * Copyright (c) 2014 Theo de Raadt <deraadt@openbsd.org> 4 * Copyright (c) 2014 Theo de Raadt <deraadt@openbsd.org>
@@ -60,6 +60,7 @@
60 60
61#define HR(x, l) (SHA512_Update(&ctx, (char *)(x), (l))) 61#define HR(x, l) (SHA512_Update(&ctx, (char *)(x), (l)))
62#define HD(x) (SHA512_Update(&ctx, (char *)&(x), sizeof (x))) 62#define HD(x) (SHA512_Update(&ctx, (char *)&(x), sizeof (x)))
63#define HF(x) (SHA512_Update(&ctx, (char *)&(x), sizeof (void*)))
63 64
64int getentropy(void *buf, size_t len); 65int getentropy(void *buf, size_t len);
65 66
@@ -194,7 +195,7 @@ start:
194 } 195 }
195 for (i = 0; i < len; ) { 196 for (i = 0; i < len; ) {
196 size_t wanted = len - i; 197 size_t wanted = len - i;
197 ssize_t ret = read(fd, buf + i, wanted); 198 ssize_t ret = read(fd, (char *)buf + i, wanted);
198 199
199 if (ret == -1) { 200 if (ret == -1) {
200 if (errno == EAGAIN || errno == EINTR) 201 if (errno == EAGAIN || errno == EINTR)
@@ -243,7 +244,7 @@ static int
243getentropy_fallback(void *buf, size_t len) 244getentropy_fallback(void *buf, size_t len)
244{ 245{
245 uint8_t results[SHA512_DIGEST_LENGTH]; 246 uint8_t results[SHA512_DIGEST_LENGTH];
246 int save_errno = errno, e, m, pgs = getpagesize(), faster = 0, repeat; 247 int save_errno = errno, e, pgs = getpagesize(), faster = 0, repeat;
247 static int cnt; 248 static int cnt;
248 struct timespec ts; 249 struct timespec ts;
249 struct timeval tv; 250 struct timeval tv;
@@ -254,7 +255,7 @@ getentropy_fallback(void *buf, size_t len)
254 SHA512_CTX ctx; 255 SHA512_CTX ctx;
255 static pid_t lastpid; 256 static pid_t lastpid;
256 pid_t pid; 257 pid_t pid;
257 size_t i, ii; 258 size_t i, ii, m;
258 char *p; 259 char *p;
259 260
260 pid = getpid(); 261 pid = getpid();
@@ -283,7 +284,7 @@ getentropy_fallback(void *buf, size_t len)
283 HX((pid = getsid(pid)) == -1, pid); 284 HX((pid = getsid(pid)) == -1, pid);
284 HX((pid = getppid()) == -1, pid); 285 HX((pid = getppid()) == -1, pid);
285 HX((pid = getpgid(0)) == -1, pid); 286 HX((pid = getpgid(0)) == -1, pid);
286 HX((m = getpriority(0, 0)) == -1, m); 287 HX((e = getpriority(0, 0)) == -1, e);
287 HX((getloadavg(loadavg, 3) == -1), loadavg); 288 HX((getloadavg(loadavg, 3) == -1), loadavg);
288 289
289 if (!faster) { 290 if (!faster) {
@@ -296,9 +297,9 @@ getentropy_fallback(void *buf, size_t len)
296 HX(sigprocmask(SIG_BLOCK, NULL, &sigset) == -1, 297 HX(sigprocmask(SIG_BLOCK, NULL, &sigset) == -1,
297 sigset); 298 sigset);
298 299
299 HD(main); /* an addr in program */ 300 HF(main); /* an addr in program */
300 HD(getentropy); /* an addr in this library */ 301 HF(getentropy); /* an addr in this library */
301 HD(printf); /* an addr in libc */ 302 HF(printf); /* an addr in libc */
302 p = (char *)&p; 303 p = (char *)&p;
303 HD(p); /* an addr on stack */ 304 HD(p); /* an addr on stack */
304 p = (char *)&errno; 305 p = (char *)&errno;
@@ -416,7 +417,7 @@ getentropy_fallback(void *buf, size_t len)
416 HD(cnt); 417 HD(cnt);
417 } 418 }
418 SHA512_Final(results, &ctx); 419 SHA512_Final(results, &ctx);
419 memcpy(buf + i, results, min(sizeof(results), len - i)); 420 memcpy((char *)buf + i, results, min(sizeof(results), len - i));
420 i += min(sizeof(results), len - i); 421 i += min(sizeof(results), len - i);
421 } 422 }
422 memset(results, 0, sizeof results); 423 memset(results, 0, sizeof results);