On 2025/01/05 15:12, Chaz Kettleson wrote:
> 
> Good to commit?

I think so, here it is as a ports diff, with the patch re-generated with
"make patch" and "make update-patches" because there was some offset,
does that look right to you?

Index: Makefile
===================================================================
RCS file: /cvs/ports/net/hopm/Makefile,v
diff -u -p -r1.3 Makefile
--- Makefile    4 Sep 2024 13:32:04 -0000       1.3
+++ Makefile    6 Jan 2025 09:32:54 -0000
@@ -1,7 +1,7 @@
 COMMENT=               open-proxy monitor irc bot
 
 DIST_TUPLE=            github ircd-hybrid hopm 1.1.10 .
-REVISION=              1
+REVISION=              2
 
 CATEGORIES=            net
 
Index: patches/patch-src_main_c
===================================================================
RCS file: patches/patch-src_main_c
diff -N patches/patch-src_main_c
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ patches/patch-src_main_c    6 Jan 2025 09:32:54 -0000
@@ -0,0 +1,103 @@
+add pledge/unveil
+
+Index: src/main.c
+--- src/main.c.orig
++++ src/main.c
+@@ -30,6 +30,9 @@
+ #include <fcntl.h>
+ #include <stdlib.h>
+ #include <string.h>
++#if defined(__OpenBSD__)
++#include <err.h>
++#endif
+ 
+ #include "config.h"
+ #include "irc.h"
+@@ -39,6 +42,9 @@
+ #include "options.h"
+ #include "memory.h"
+ #include "main.h"
++#if defined(__OpenBSD__)
++#include "match.h"
++#endif
+ 
+ 
+ static int RESTART;  /* Flagged to restart on next cycle */
+@@ -70,7 +76,66 @@ setup_corelimit(void)
+   }
+ }
+ 
++#if defined(__OpenBSD__)
+ static void
++setup_pledge(void) {
++  int needr = 0;
++  int needp = 0;
++
++  if (unveil(HOPM_BINPATH, "x") == -1) {
++    err(1, "unveil");
++  }
++
++  if (IRCItem.tls) {
++    if (unveil("/etc/ssl/cert.pem", "r") == -1) {
++      err(1, "unveil");
++    }
++
++    if (!EmptyString(IRCItem.rsa_private_key_file) &&
++        !EmptyString(IRCItem.tls_certificate_file)) {
++      if (unveil("IRCItem.rsa_private_key", "r") == -1) {
++        err(1, "unveil");
++      }
++
++      if (unveil("IRCItem.tls_certificate_file", "r") == -1) {
++        err(1, "unveil");
++      }
++    }
++
++    needr = 1;
++  }
++
++  if (!EmptyString(OpmItem.dnsbl_to) &&
++      !EmptyString(OpmItem.dnsbl_from) &&
++      !EmptyString(OpmItem.sendmail)) {
++    if (unveil("/bin/sh", "x") == -1) {
++      err(1, "unveil");
++    }
++
++    needp = 1;
++  }
++
++  if (needr && needp) {
++    if (pledge("stdio rpath inet dns proc exec", NULL) == -1) {
++      err(1, "pledge");
++    }
++  } else if (needr) {
++    if (pledge("stdio rpath inet dns exec", NULL) == -1) {
++      err(1, "pledge");
++    }
++  } else if (needp) {
++    if (pledge("stdio inet dns proc exec", NULL) == -1) {
++      err(1, "pledge");
++    }
++  } else {
++    if (pledge("stdio inet dns exec", NULL) == -1) {
++      err(1, "pledge");
++    }
++  }
++}
++#endif
++
++static void
+ do_signal(int signum)
+ {
+   switch (signum)
+@@ -198,6 +263,10 @@ main(int argc, char *argv[])
+                strerror(errno));
+     exit(EXIT_FAILURE);
+   }
++
++#if defined(__OpenBSD__)
++  setup_pledge();
++#endif
+ 
+   /* Setup alarm & int handlers. */
+   ALARMACTION.sa_handler = &do_signal;

Reply via email to