Blob Blame History Raw
diff -Nru libbsd-0.9.1.orig/include/bsd/sys/cdefs.h libbsd-0.9.1/include/bsd/sys/cdefs.h
--- libbsd-0.9.1.orig/include/bsd/sys/cdefs.h 2018-05-22 15:56:14.000000000 +0200
+++ libbsd-0.9.1/include/bsd/sys/cdefs.h 2018-05-30 15:27:07.067975364 +0200
@@ -93,7 +93,7 @@
#define LIBBSD_DEPRECATED(x)
#endif
-#if LIBBSD_GCC_VERSION >= 0x0200
+#if 0
#define LIBBSD_REDIRECT(name, proto, alias) name proto __asm__(LIBBSD_ASMNAME(#alias))
#endif
#define LIBBSD_ASMNAME(cname) LIBBSD_ASMNAME_PREFIX(__USER_LABEL_PREFIX__, cname)
diff -Nru libbsd-0.9.1.orig/include/bsd/vis.h libbsd-0.9.1/include/bsd/vis.h
--- libbsd-0.9.1.orig/include/bsd/vis.h 2018-05-22 16:07:42.000000000 +0200
+++ libbsd-0.9.1/include/bsd/vis.h 2018-05-30 15:37:23.466013504 +0200
@@ -113,14 +113,9 @@
int strvis(char *, const char *, int);
int stravis(char **, const char *, int);
-#ifdef LIBBSD_NETBSD_VIS
-/* NetBSD prototype. */
-int LIBBSD_REDIRECT(strnvis, (char *, size_t, const char *, int),
- strnvis_netbsd);
-#else
-/* OpenBSD prototype (current default). */
-int strnvis(char *, const char *, size_t, int);
-#endif
+
+/* NetBSD prototype */
+int strnvis(char *, size_t, const char *, int);
int strsvis(char *, const char *, int, const char *);
int strsnvis(char *, size_t, const char *, int, const char *);
@@ -135,14 +130,9 @@
int *);
int strunvis(char *, const char *);
-#ifdef LIBBSD_NETBSD_VIS
-/* NetBSD prototype. */
-int LIBBSD_REDIRECT(strnunvis, (char *, size_t, const char *),
- strnunvis_netbsd);
-#else
-/* OpenBSD prototype (current default). */
-ssize_t strnunvis(char *, const char *, size_t);
-#endif
+
+/* NetBSD prototype */
+int strnunvis(char *, size_t, const char *);
int strunvisx(char *, const char *, int);
int strnunvisx(char *, size_t, const char *, int);
diff -Nru libbsd-0.9.1.orig/src/flopen.c libbsd-0.9.1/src/flopen.c
--- libbsd-0.9.1.orig/src/flopen.c 2018-05-21 04:33:33.000000000 +0200
+++ libbsd-0.9.1/src/flopen.c 2018-05-30 15:09:48.789934331 +0200
@@ -32,6 +32,7 @@
#include <sys/stat.h>
#include <errno.h>
+#include <fcntl.h>
#include <stdarg.h>
#include <unistd.h>
diff -Nru libbsd-0.9.1.orig/src/getentropy.c libbsd-0.9.1/src/getentropy.c
--- libbsd-0.9.1.orig/src/getentropy.c 2018-05-21 04:48:37.000000000 +0200
+++ libbsd-0.9.1/src/getentropy.c 2018-05-30 15:44:15.596626881 +0200
@@ -26,6 +26,8 @@
#if defined(__linux__)
#include "getentropy_linux.c"
+#elif defined(__midipix__)
+#include "getentropy_midipix.c"
#elif defined(__GNU__)
#include "getentropy_hurd.c"
#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
diff -Nru libbsd-0.9.1.orig/src/getentropy_midipix.c libbsd-0.9.1/src/getentropy_midipix.c
--- libbsd-0.9.1.orig/src/getentropy_midipix.c 1970-01-01 01:00:00.000000000 +0100
+++ libbsd-0.9.1/src/getentropy_midipix.c 2018-05-30 15:43:30.744779217 +0200
@@ -0,0 +1,153 @@
+/* $OpenBSD: getentropy_linux.c,v 1.45 2018/03/13 22:53:28 bcook Exp $ */
+
+/*
+ * Copyright (c) 2014 Theo de Raadt <deraadt@openbsd.org>
+ * Copyright (c) 2014 Bob Beck <beck@obtuse.com>
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ *
+ * Emulation of getentropy(2) as documented at:
+ * http://man.openbsd.org/getentropy.2
+ */
+
+#define _POSIX_C_SOURCE 199309L
+#define _GNU_SOURCE 1
+#include <sys/types.h>
+#include <sys/param.h>
+#include <sys/ioctl.h>
+#include <sys/resource.h>
+#include <sys/syscall.h>
+#include <sys/statvfs.h>
+#include <sys/socket.h>
+#include <sys/mount.h>
+#include <sys/mman.h>
+#include <sys/stat.h>
+#include <sys/time.h>
+#include <stdlib.h>
+#include <stdint.h>
+#include <stdio.h>
+#include <link.h>
+#include <termios.h>
+#include <fcntl.h>
+#include <signal.h>
+#include <string.h>
+#include <errno.h>
+#include <unistd.h>
+#include <time.h>
+
+#include "hash/sha512.h"
+
+#ifdef HAVE_GETAUXVAL
+#include <sys/auxv.h>
+#endif
+#include <sys/vfs.h>
+
+int getentropy(void *buf, size_t len);
+
+static int gotdata(char *buf, size_t len);
+
+static int getentropy_urandom(void *buf, size_t len);
+
+int
+getentropy(void *buf, size_t len)
+{
+ int ret = -1;
+
+ if (len > 256) {
+ errno = EIO;
+ return (-1);
+ }
+
+ /*
+ * Try to get entropy with /dev/urandom
+ *
+ * This can fail if the process is inside a chroot or if file
+ * descriptors are exhausted.
+ */
+ ret = getentropy_urandom(buf, len);
+ if (ret != -1)
+ return (ret);
+
+ errno = EIO;
+ return (ret);
+}
+
+/*
+ * Basic sanity checking; wish we could do better.
+ */
+static int
+gotdata(char *buf, size_t len)
+{
+ char any_set = 0;
+ size_t i;
+
+ for (i = 0; i < len; ++i)
+ any_set |= buf[i];
+ if (any_set == 0)
+ return (-1);
+ return (0);
+}
+
+static int
+getentropy_urandom(void *buf, size_t len)
+{
+ struct stat st;
+ size_t i;
+ int fd, cnt, flags;
+ int save_errno = errno;
+
+start:
+
+ flags = O_RDONLY;
+#ifdef O_NOFOLLOW
+ flags |= O_NOFOLLOW;
+#endif
+#ifdef O_CLOEXEC
+ flags |= O_CLOEXEC;
+#endif
+ fd = open("/dev/urandom", flags, 0);
+ if (fd == -1) {
+ if (errno == EINTR)
+ goto start;
+ goto nodevrandom;
+ }
+#ifndef O_CLOEXEC
+ fcntl(fd, F_SETFD, fcntl(fd, F_GETFD) | FD_CLOEXEC);
+#endif
+
+ /* Lightly verify that the device node looks sane */
+ if (fstat(fd, &st) == -1 || !S_ISCHR(st.st_mode)) {
+ close(fd);
+ goto nodevrandom;
+ }
+ for (i = 0; i < len; ) {
+ size_t wanted = len - i;
+ ssize_t ret = read(fd, (char *)buf + i, wanted);
+
+ if (ret == -1) {
+ if (errno == EAGAIN || errno == EINTR)
+ continue;
+ close(fd);
+ goto nodevrandom;
+ }
+ i += ret;
+ }
+ close(fd);
+ if (gotdata(buf, len) == 0) {
+ errno = save_errno;
+ return (0); /* satisfied */
+ }
+nodevrandom:
+ errno = EIO;
+ return (-1);
+}
diff -Nru libbsd-0.9.1.orig/src/getpeereid.c libbsd-0.9.1/src/getpeereid.c
--- libbsd-0.9.1.orig/src/getpeereid.c 2017-06-06 04:06:45.000000000 +0200
+++ libbsd-0.9.1/src/getpeereid.c 2018-05-30 15:10:23.777937764 +0200
@@ -40,7 +40,7 @@
getpeereid(int s, uid_t *euid, gid_t *egid)
{
/* XXX: This should be autodetected at build time instead. */
-#if defined(__linux__)
+#if defined(__linux__) || defined(__midipix__)
struct ucred cred;
#elif defined(__OpenBSD__)
struct sockpeercred cred;
diff -Nru libbsd-0.9.1.orig/src/setproctitle.c libbsd-0.9.1/src/setproctitle.c
--- libbsd-0.9.1.orig/src/setproctitle.c 2018-04-21 23:30:22.000000000 +0200
+++ libbsd-0.9.1/src/setproctitle.c 2018-05-30 15:13:25.245835004 +0200
@@ -221,8 +221,13 @@
#define SPT_MAXTITLE 255
#endif
+#ifdef __midipix__
+void
+setproctitle(const char *fmt, ...)
+#else
void
setproctitle_impl(const char *fmt, ...)
+#endif
{
/* Use buffer in case argv[0] is passed. */
char buf[SPT_MAXTITLE + 1];
@@ -280,6 +285,7 @@
*++nul = '\0';
}
}
+#ifndef __midipix__
__asm__(".symver setproctitle_impl,setproctitle@@LIBBSD_0.5");
/* The original function introduced in 0.2 was a stub, it only got implemented
@@ -293,3 +299,4 @@
__attribute__((alias("setproctitle_impl")));
#endif
__asm__(".symver setproctitle_stub,setproctitle@LIBBSD_0.2");
+#endif /* !__midipix__ */
diff -Nru libbsd-0.9.1.orig/src/unvis.c libbsd-0.9.1/src/unvis.c
--- libbsd-0.9.1.orig/src/unvis.c 2018-05-22 16:07:42.000000000 +0200
+++ libbsd-0.9.1/src/unvis.c 2018-05-30 15:20:12.613101869 +0200
@@ -560,6 +560,8 @@
* OpenBSD, 2001: strnunvis(char *dst, const char *src, size_t dlen);
* NetBSD: 2012, strnunvis(char *dst, size_t dlen, const char *src);
*/
+#ifndef __midipix__ /* Temporary fix until upstream resolves this in a later version, */
+ /* do not upstream */
ssize_t
strnunvis_openbsd(char *dst, const char *src, size_t dlen)
{
@@ -573,3 +575,9 @@
return strnunvisx(dst, dlen, src, 0);
}
__asm__(".symver strnunvis_netbsd,strnunvis@LIBBSD_0.9.1");
+#else
+int strnunvis(char *dst, size_t dlen, const char *src)
+{
+ return strnunvisx(dst, dlen, src, 0);
+}
+#endif /* __midipix__ */
diff -Nru libbsd-0.9.1.orig/src/vis.c libbsd-0.9.1/src/vis.c
--- libbsd-0.9.1.orig/src/vis.c 2018-05-22 16:07:42.000000000 +0200
+++ libbsd-0.9.1/src/vis.c 2018-05-30 15:34:26.362596310 +0200
@@ -718,6 +718,7 @@
* OpenBSD, 2001: strnvis(char *dst, const char *src, size_t dlen, int flag);
* NetBSD: 2012, strnvis(char *dst, size_t dlen, const char *src, int flag);
*/
+#ifndef __midipix__ /* see src/unvis.c */
int
strnvis_openbsd(char *mbdst, const char *mbsrc, size_t dlen, int flags)
{
@@ -731,6 +732,13 @@
return istrsenvisxl(&mbdst, &dlen, mbsrc, flags, "", NULL);
}
__asm__(".symver strnvis_netbsd,strnvis@LIBBSD_0.9.1");
+#else
+int
+strnvis(char *mbdst, size_t dlen, const char *mbsrc, int flags)
+{
+ return istrsenvisxl(&mbdst, &dlen, mbsrc, flags, "", NULL);
+}
+#endif
int
stravis(char **mbdstp, const char *mbsrc, int flags)