|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
diff -Nru libbsd-0.8.7.orig/include/bsd/stdlib.h libbsd-0.8.7/include/bsd/stdlib.h
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
--- libbsd-0.8.7.orig/include/bsd/stdlib.h 2017-08-05 13:20:00.000000000 +0200
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
df5175 |
+++ libbsd-0.8.7/include/bsd/stdlib.h 2018-04-27 21:18:23.074047191 +0200
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
df5175 |
@@ -67,7 +67,7 @@
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
const unsigned char *table, unsigned endbyte);
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
void *reallocf(void *ptr, size_t size);
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
-#if defined(_GNU_SOURCE) && defined(__GLIBC__) && !__GLIBC_PREREQ(2, 26)
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
+#if defined(_GNU_SOURCE)
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
void *reallocarray(void *ptr, size_t nmemb, size_t size);
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
#endif
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
diff -Nru libbsd-0.8.7.orig/include/bsd/string.h libbsd-0.8.7/include/bsd/string.h
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
--- libbsd-0.8.7.orig/include/bsd/string.h 2017-08-05 13:20:54.000000000 +0200
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
df5175 |
+++ libbsd-0.8.7/include/bsd/string.h 2018-04-27 21:18:02.670455792 +0200
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
df5175 |
@@ -42,7 +42,7 @@
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
char *strnstr(const char *str, const char *find, size_t str_len);
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
void strmode(mode_t mode, char *str);
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
-#if defined(_GNU_SOURCE) && defined(__GLIBC__) && !__GLIBC_PREREQ(2, 25)
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
+#if defined(_GNU_SOURCE)
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
void explicit_bzero(void *buf, size_t len);
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
#endif
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
df5175 |
__END_DECLS
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
diff -Nru libbsd-0.8.7.orig/src/getentropy.c libbsd-0.8.7/src/getentropy.c
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
--- libbsd-0.8.7.orig/src/getentropy.c 2017-06-06 04:21:24.000000000 +0200
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
df5175 |
+++ libbsd-0.8.7/src/getentropy.c 2018-04-27 21:09:29.121945744 +0200
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
@@ -40,6 +40,8 @@
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
#include "getentropy_aix.c"
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
#elif defined(__hpux)
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
#include "getentropy_hpux.c"
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
df5175 |
+#elif defined(__midipix__) /* temporary - no native getentropy() yet */
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
+#include "getentropy_midipix.c"
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
#else
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
#error "No getentropy hooks defined for this platform."
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
#endif
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
diff -Nru libbsd-0.8.7.orig/src/getentropy_midipix.c libbsd-0.8.7/src/getentropy_midipix.c
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
--- libbsd-0.8.7.orig/src/getentropy_midipix.c 1970-01-01 01:00:00.000000000 +0100
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
df5175 |
+++ libbsd-0.8.7/src/getentropy_midipix.c 2018-04-27 21:11:22.917696342 +0200
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
@@ -0,0 +1,118 @@
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
+/* Temporary copy-paste from getentropy_linux.c until we get a native getentropy() implementation */
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
+
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
+
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
+#define _POSIX_C_SOURCE 199309L
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
+#define _GNU_SOURCE 1
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
+#include <sys/types.h>
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
+#include <sys/param.h>
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
+#include <sys/ioctl.h>
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
+#include <sys/resource.h>
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
+#include <sys/syscall.h>
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
+#include <sys/statvfs.h>
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
+#include <sys/socket.h>
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
+#include <sys/mount.h>
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
+#include <sys/mman.h>
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
+#include <sys/stat.h>
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
+#include <sys/time.h>
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
+#include <stdlib.h>
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
+#include <stdint.h>
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
+#include <stdio.h>
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
+#include <link.h>
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
+#include <termios.h>
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
+#include <fcntl.h>
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
+#include <signal.h>
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
+#include <string.h>
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
+#include <errno.h>
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
+#include <unistd.h>
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
+#include <time.h>
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
+
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
+int getentropy(void *buf, size_t len);
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
+
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
+static int gotdata(char *buf, size_t len);
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
+static int getentropy_urandom(void *buf, size_t len);
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
+
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
+int
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
+getentropy(void *buf, size_t len)
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
+{
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
+ int ret = -1;
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
+
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
+ if (len > 256) {
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
+ errno = EIO;
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
+ return (-1);
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
+ }
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
+
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
+ ret = getentropy_urandom(buf, len);
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
+ if (ret != -1)
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
+ return (ret);
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
+
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
+ /* Oh well! */
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
+ raise(SIGKILL);
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
+ return -1;
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
+}
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
+
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
+static int
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
+gotdata(char *buf, size_t len)
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
+{
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
+ char any_set = 0;
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
+ size_t i;
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
+
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
+ for (i = 0; i < len; ++i)
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
+ any_set |= buf[i];
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
+ if (any_set == 0)
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
+ return (-1);
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
+ return (0);
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
+}
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
+
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
+static int
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
+getentropy_urandom(void *buf, size_t len)
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
+{
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
+ struct stat st;
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
+ size_t i;
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
+ int fd, cnt, flags;
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
+ int save_errno = errno;
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
+
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
+start:
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
+
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
+ flags = O_RDONLY;
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
+#ifdef O_NOFOLLOW
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
+ flags |= O_NOFOLLOW;
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
+#endif
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
+#ifdef O_CLOEXEC
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
+ flags |= O_CLOEXEC;
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
+#endif
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
+ fd = open("/dev/urandom", flags, 0);
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
+ if (fd == -1) {
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
+ if (errno == EINTR)
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
+ goto start;
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
+ goto nodevrandom;
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
+ }
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
+#ifndef O_CLOEXEC
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
+ fcntl(fd, F_SETFD, fcntl(fd, F_GETFD) | FD_CLOEXEC);
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
+#endif
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
+
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
+ /* Lightly verify that the device node looks sane */
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
+ if (fstat(fd, &st) == -1 || !S_ISCHR(st.st_mode)) {
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
+ close(fd);
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
+ goto nodevrandom;
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
+ }
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
+ for (i = 0; i < len; ) {
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
+ size_t wanted = len - i;
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
+ ssize_t ret = read(fd, (char *)buf + i, wanted);
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
+
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
+ if (ret == -1) {
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
+ if (errno == EAGAIN || errno == EINTR)
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
+ continue;
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
+ close(fd);
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
+ goto nodevrandom;
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
+ }
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
+ i += ret;
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
+ }
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
+ close(fd);
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
+ if (gotdata(buf, len) == 0) {
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
+ errno = save_errno;
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
+ return (0); /* satisfied */
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
+ }
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
+nodevrandom:
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
+ errno = EIO;
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
+ return (-1);
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
+}
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
diff -Nru libbsd-0.8.7.orig/src/getpeereid.c libbsd-0.8.7/src/getpeereid.c
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
--- libbsd-0.8.7.orig/src/getpeereid.c 2017-06-06 04:06:45.000000000 +0200
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
df5175 |
+++ libbsd-0.8.7/src/getpeereid.c 2018-04-27 21:11:49.277638606 +0200
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
@@ -40,7 +40,7 @@
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
getpeereid(int s, uid_t *euid, gid_t *egid)
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
{
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
/* XXX: This should be autodetected at build time instead. */
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
-#if defined(__linux__)
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
+#if defined(__linux__) || defined(__midipix__)
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
struct ucred cred;
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
#elif defined(__OpenBSD__)
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
struct sockpeercred cred;
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
diff -Nru libbsd-0.8.7.orig/src/setproctitle.c libbsd-0.8.7/src/setproctitle.c
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
--- libbsd-0.8.7.orig/src/setproctitle.c 2017-07-17 00:47:19.000000000 +0200
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
df5175 |
+++ libbsd-0.8.7/src/setproctitle.c 2018-04-27 21:12:24.521561430 +0200
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
@@ -280,6 +280,7 @@
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
*++nul = '\0';
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
}
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
}
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
+#ifndef __midipix__
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
__asm__(".symver setproctitle_impl,setproctitle@@LIBBSD_0.5");
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
/* The original function introduced in 0.2 was a stub, it only got implemented
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
@@ -293,3 +294,4 @@
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
__attribute__((alias("setproctitle_impl")));
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
#endif
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
__asm__(".symver setproctitle_stub,setproctitle@LIBBSD_0.2");
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
98bbb0 |
+#endif
|