jail: fix build on glibc and uclibc
authorDaniel Golle <daniel@makrotopia.org>
Sat, 25 Jul 2020 15:30:29 +0000 (16:30 +0100)
committerDaniel Golle <daniel@makrotopia.org>
Sat, 25 Jul 2020 15:31:29 +0000 (16:31 +0100)
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
jail/jail.c

index 0d13f5871b14b63cc5fce94c63f94437556f8ba9..7c9a25feb23b43d5fffbc1aeb5bbfca95acc0b6d 100644 (file)
@@ -547,6 +547,17 @@ static int apply_sysctl(const char *jail_root)
        return 0;
 }
 
+/* glibc defines makedev calling a function. make sure it's a pure macro */
+#if defined(__GLIBC__)
+#undef makedev
+/* from musl's sys/sysmacros.h */
+#define makedev(x,y) ( \
+       (((x)&0xfffff000ULL) << 32) | \
+       (((x)&0x00000fffULL) << 8) | \
+       (((y)&0xffffff00ULL) << 12) | \
+       (((y)&0x000000ffULL)) )
+#endif
+
 static struct mknod_args default_devices[] = {
        { .path = "/dev/null", .mode = (S_IFCHR|S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH), .dev = makedev(1, 3) },
        { .path = "/dev/zero", .mode = (S_IFCHR|S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH), .dev = makedev(1, 5) },