Page MenuHomeFreeBSD

D16846.id.diff
No OneTemporary

D16846.id.diff

Index: head/sbin/md5/Makefile
===================================================================
--- head/sbin/md5/Makefile
+++ head/sbin/md5/Makefile
@@ -28,4 +28,12 @@
LIBADD= md
+.ifndef(BOOTSTRAPPING)
+# Avoid depending on capsicum during bootstrap. caph_limit_stdout() is not
+# available when building for Linux/MacOS or older FreeBSD hosts.
+# We need to bootstrap md5 when building on Linux since the md5sum command there
+# produces different output.
+CFLAGS+=-DHAVE_CAPSICUM
+.endif
+
.include <bsd.prog.mk>
Index: head/sbin/md5/md5.c
===================================================================
--- head/sbin/md5/md5.c
+++ head/sbin/md5/md5.c
@@ -21,11 +21,10 @@
__FBSDID("$FreeBSD$");
#include <sys/types.h>
-#include <sys/capsicum.h>
#include <sys/time.h>
#include <sys/resource.h>
-#include <capsicum_helpers.h>
#include <err.h>
+#include <fcntl.h>
#include <md5.h>
#include <ripemd.h>
#include <sha.h>
@@ -41,6 +40,11 @@
#include <time.h>
#include <unistd.h>
+#ifdef HAVE_CAPSICUM
+#include <sys/capsicum.h>
+#include <capsicum_helpers.h>
+#endif
+
/*
* Length of test block, number of test blocks.
*/
@@ -162,7 +166,9 @@
int
main(int argc, char *argv[])
{
+#ifdef HAVE_CAPSICUM
cap_rights_t rights;
+#endif
int ch, fd;
char *p;
char buf[HEX_DIGEST_LENGTH];
@@ -215,8 +221,10 @@
argc -= optind;
argv += optind;
+#ifdef HAVE_CAPSICUM
if (caph_limit_stdout() < 0 || caph_limit_stderr() < 0)
err(1, "unable to limit rights for stdio");
+#endif
if (*argv) {
do {
@@ -232,10 +240,12 @@
* earlier.
*/
if (*(argv + 1) == NULL) {
+#ifdef HAVE_CAPSICUM
cap_rights_init(&rights, CAP_READ);
if ((cap_rights_limit(fd, &rights) < 0 &&
errno != ENOSYS) || caph_enter() < 0)
err(1, "capsicum");
+#endif
}
if ((p = Algorithm[digest].Fd(fd, buf)) == NULL) {
warn("%s", *argv);
@@ -258,8 +268,10 @@
}
} while (*++argv);
} else if (!sflag && (optind == 1 || qflag || rflag)) {
+#ifdef HAVE_CAPSICUM
if (caph_limit_stdin() < 0 || caph_enter() < 0)
err(1, "capsicum");
+#endif
MDFilter(&Algorithm[digest], 0);
}

File Metadata

Mime Type
text/plain
Expires
Sun, Oct 26, 3:23 AM (1 h, 54 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
24170262
Default Alt Text
D16846.id.diff (2 KB)

Event Timeline