Diff below updates miniupnpd to 2.3.0. Noticeable change is that
miniupnpd now uses pledge() (introduced in 2.2.0). Full changelog can be
found at [0].

Diff is big as we can drop almost all patches, issues have been
addressed upstream.

So far it works for me on amd64.

OK?


[0] https://github.com/miniupnp/miniupnp/blob/master/miniupnpd/Changelog.txt.


diff --git Makefile Makefile
index 1c048358808..0bd731936d8 100755
--- Makefile
+++ Makefile
@@ -2,18 +2,17 @@
 
 COMMENT=       UPnP IGD daemon
 
-DISTNAME=      miniupnpd-2.1
-REVISION=      2
+DISTNAME=      miniupnpd-2.3.0
 
+# uses pledge()
 WANTLIB += c crypto kvm ssl
 
-MAKE_FLAGS=    INSTALLETCDIR=${PREFIX}/share/examples/miniupnpd \
-               INSTALLMANDIR=${PREFIX}/man/man8
+MAKE_FLAGS=    INSTALLETCDIR=${PREFIX}/share/examples/miniupnpd
 
 FAKE_FLAGS=    PREFIX=${TRUEPREFIX}
 
 CONFIGURE_STYLE=       simple
-CONFIGURE_SCRIPT=      genconfig.sh
+CONFIGURE_SCRIPT=      configure
 
 post-install:
        ${INSTALL_MAN_DIR} ${PREFIX}/man/man8
diff --git distinfo distinfo
index a4312372784..dd69bfa3e4d 100644
--- distinfo
+++ distinfo
@@ -1,2 +1,2 @@
-SHA256 (miniupnpd-2.1.tar.gz) = lQiUd5ZhGX/gk4Vf2imnKPQ0tXVutPpstfe5v/f/4ME=
-SIZE (miniupnpd-2.1.tar.gz) = 225458
+SHA256 (miniupnpd-2.3.0.tar.gz) = /56V42DHuq51dXW1utwhqxxkPTWZVvloVAtPgCb6z5w=
+SIZE (miniupnpd-2.3.0.tar.gz) = 256069
diff --git patches/patch-Makefile patches/patch-Makefile
deleted file mode 100644
index 6ec9d0c3137..00000000000
--- patches/patch-Makefile
+++ /dev/null
@@ -1,13 +0,0 @@
-$OpenBSD: patch-Makefile,v 1.6 2019/03/11 04:06:37 bket Exp $
-Index: Makefile
---- Makefile.orig
-+++ Makefile
-@@ -176,7 +176,7 @@ clean:
-       $(PFOBJS) $(IPFOBJS) $(IPFWOBJS)
-       $(RM) validateupnppermissions validategetifaddr validatessdppktgen
- 
--install:      miniupnpd genuuid
-+install:      miniupnpd
-       $(STRIP) miniupnpd
-       $(INSTALL) -d $(DESTDIR)$(INSTALLBINDIR)
-       $(INSTALL) -m 755 miniupnpd $(DESTDIR)$(INSTALLBINDIR)
diff --git patches/patch-Makefile_bsd patches/patch-Makefile_bsd
new file mode 100644
index 00000000000..98bd2750c26
--- /dev/null
+++ patches/patch-Makefile_bsd
@@ -0,0 +1,14 @@
+$OpenBSD$
+
+Index: Makefile.bsd
+--- Makefile.bsd.orig
++++ Makefile.bsd
+@@ -145,7 +145,7 @@ clean:
+       $(RM) $(TESTMINISSDPOBJS)
+       $(RM) validateupnppermissions validategetifaddr validatessdppktgen
+ 
+-install:      miniupnpd genuuid
++install:      miniupnpd
+       $(STRIP) miniupnpd
+       $(INSTALL) -d $(DESTDIR)$(INSTALLBINDIR)
+       $(INSTALL) -m 755 miniupnpd $(DESTDIR)$(INSTALLBINDIR)
diff --git patches/patch-asyncsendto_c patches/patch-asyncsendto_c
deleted file mode 100644
index 6f5746d6790..00000000000
--- patches/patch-asyncsendto_c
+++ /dev/null
@@ -1,11 +0,0 @@
-$OpenBSD: patch-asyncsendto_c,v 1.1 2016/09/10 13:03:42 ajacoutot Exp $
---- asyncsendto.c.orig Sat Sep 10 12:01:40 2016
-+++ asyncsendto.c      Sat Sep 10 12:01:47 2016
-@@ -6,6 +6,7 @@
-  * in the LICENCE file provided within the distribution */
- 
- #include <sys/types.h>
-+#include <sys/select.h> /* fd_set */
- #include <sys/socket.h>
- #include <sys/time.h>
- #include <sys/queue.h>
diff --git patches/patch-genconfig_sh patches/patch-genconfig_sh
deleted file mode 100644
index b7648020925..00000000000
--- patches/patch-genconfig_sh
+++ /dev/null
@@ -1,16 +0,0 @@
-$OpenBSD: patch-genconfig_sh,v 1.4 2019/03/11 04:06:37 bket Exp $
-
-Index: genconfig.sh
---- genconfig.sh.orig
-+++ genconfig.sh
-@@ -162,7 +162,9 @@ case $OS_NAME in
-               FW=pf
-               echo "#define USE_IFACEWATCHER 1" >> ${CONFIGFILE}
-               OS_URL=http://www.openbsd.org/
--              V6SOCKETS_ARE_V6ONLY=`sysctl -n net.inet6.ip6.v6only`
-+              # net.inet6.ip6.v6only has been on by default for many years
-+              # and this sysctl node has been removed
-+              V6SOCKETS_ARE_V6ONLY=1
-               ;;
-       FreeBSD | GNU/kFreeBSD)
-               VER=`grep '#define __FreeBSD_version' /usr/include/sys/param.h 
| awk '{print $3}'`
diff --git patches/patch-minissdp_c patches/patch-minissdp_c
deleted file mode 100644
index ec476f42c0c..00000000000
--- patches/patch-minissdp_c
+++ /dev/null
@@ -1,12 +0,0 @@
-$OpenBSD: patch-minissdp_c,v 1.2 2019/03/11 04:06:37 bket Exp $
-Index: minissdp.c
---- minissdp.c.orig
-+++ minissdp.c
-@@ -11,6 +11,7 @@
- #include <string.h>
- #include <unistd.h>
- #include <sys/socket.h>
-+#include <sys/select.h> /* fd_set */
- #include <sys/un.h>
- #include <netinet/in.h>
- #include <arpa/inet.h>
diff --git patches/patch-miniupnpd_8 patches/patch-miniupnpd_8
index aeb28fa1bd1..43995bd8d98 100644
--- patches/patch-miniupnpd_8
+++ patches/patch-miniupnpd_8
@@ -2,7 +2,7 @@ $OpenBSD: patch-miniupnpd_8,v 1.2 2019/03/11 04:06:37 bket Exp $
 Index: miniupnpd.8
 --- miniupnpd.8.orig
 +++ miniupnpd.8
-@@ -17,7 +17,7 @@ clients on the LAN to ask for port redirections.
+@@ -18,7 +18,7 @@ clients on the LAN to ask for port redirections.
  .SH OPTIONS
  .TP
  .BI \-f " config_file"
diff --git patches/patch-miniupnpd_conf patches/patch-miniupnpd_conf
index 47e43c5df7f..310dc0d46bf 100644
--- patches/patch-miniupnpd_conf
+++ patches/patch-miniupnpd_conf
@@ -2,7 +2,7 @@ $OpenBSD: patch-miniupnpd_conf,v 1.5 2019/03/11 04:06:37 bket 
Exp $
 Index: miniupnpd.conf
 --- miniupnpd.conf.orig
 +++ miniupnpd.conf
-@@ -121,7 +121,7 @@ clean_ruleset_interval=600
+@@ -155,7 +155,7 @@ clean_ruleset_interval=600
  # active when compiled with PF_ENABLE_FILTER_RULES (see config.h file)
  #quickrules=no
  
@@ -11,7 +11,7 @@ Index: miniupnpd.conf
  uuid=00000000-0000-0000-0000-000000000000
  
  # Daemon's serial and model number when reporting to clients
-@@ -145,8 +145,8 @@ uuid=00000000-0000-0000-0000-000000000000
+@@ -179,8 +179,8 @@ uuid=00000000-0000-0000-0000-000000000000
  # modify the IP ranges to match their own internal networks, and
  # also consider implementing network-specific restrictions
  # CAUTION: failure to enforce any rules may permit insecure requests to be 
made!
diff --git patches/patch-natpmp_c patches/patch-natpmp_c
deleted file mode 100644
index e895d82f9df..00000000000
--- patches/patch-natpmp_c
+++ /dev/null
@@ -1,11 +0,0 @@
-$OpenBSD: patch-natpmp_c,v 1.1 2016/09/10 13:03:42 ajacoutot Exp $
---- natpmp.c.orig      Sat Sep 10 12:02:47 2016
-+++ natpmp.c   Sat Sep 10 12:02:53 2016
-@@ -11,6 +11,7 @@
- #include <errno.h>
- #include <time.h>
- #include <sys/types.h>
-+#include <sys/select.h> /* fd_set */
- #include <sys/socket.h>
- #include <netinet/in.h>
- #include <arpa/inet.h>
diff --git patches/patch-portinuse_c patches/patch-portinuse_c
deleted file mode 100644
index c39c5e980de..00000000000
--- patches/patch-portinuse_c
+++ /dev/null
@@ -1,12 +0,0 @@
-$OpenBSD: patch-portinuse_c,v 1.2 2019/03/11 04:06:37 bket Exp $
-Index: portinuse.c
---- portinuse.c.orig
-+++ portinuse.c
-@@ -18,6 +18,7 @@
- #include <errno.h>
- #include <time.h>
- #include <sys/types.h>
-+#include <sys/select.h> /* fd_set */
- #include <sys/socket.h>
- #include <netinet/in.h>
- #include <arpa/inet.h>
diff --git patches/patch-testasyncsendto_c patches/patch-testasyncsendto_c
deleted file mode 100644
index 18fdc6cffb7..00000000000
--- patches/patch-testasyncsendto_c
+++ /dev/null
@@ -1,29 +0,0 @@
-$OpenBSD: patch-testasyncsendto_c,v 1.2 2019/03/11 04:06:37 bket Exp $
-
-warning: format '%ld' expects type 'long int', but argument 4 has type 'time_t'
-
-Index: testasyncsendto.c
---- testasyncsendto.c.orig
-+++ testasyncsendto.c
-@@ -74,8 +74,8 @@ int test(void)
-               int max_fd;
-               struct timeval timeout;
-               struct timeval now;
--              syslog(LOG_DEBUG, "get_next_scheduled_send : %d 
next_send=%ld.%06ld",
--                     i, (long)next_send.tv_sec, (long)next_send.tv_usec);
-+              syslog(LOG_DEBUG, "get_next_scheduled_send : %d 
next_send==%lld.%06ld",
-+                     i, (long long)next_send.tv_sec, (long)next_send.tv_usec);
-               FD_ZERO(&writefds);
-               max_fd = 0;
-               gettimeofday(&now, NULL);
-@@ -100,8 +100,8 @@ int test(void)
-                       }
-               }
-               syslog(LOG_DEBUG, "get_sendto_fds() returned %d", i);
--              syslog(LOG_DEBUG, "select(%d, NULL, xx, NULL, %ld.%06ld)",
--                     max_fd, (long)timeout.tv_sec, (long)timeout.tv_usec);
-+              syslog(LOG_DEBUG, "select(%d, NULL, xx, NULL, %lld.%06ld)",
-+                     max_fd, (long long)timeout.tv_sec, 
(long)timeout.tv_usec);
-               i = select(max_fd, NULL, &writefds, NULL, &timeout);
-               if(i < 0) {
-                       syslog(LOG_ERR, "select: %m");
diff --git patches/patch-upnpevents_c patches/patch-upnpevents_c
deleted file mode 100644
index a493ad71cf4..00000000000
--- patches/patch-upnpevents_c
+++ /dev/null
@@ -1,64 +0,0 @@
-$OpenBSD: patch-upnpevents_c,v 1.3 2019/03/11 20:05:23 bket Exp $
-
-Cherrypick patch from upstream: Check the return value of snprintf().
-
-Mitigate read out-of-bounds vulnerability as reported by
-https://github.com/b1ack0wl/miniupnpd_poc
-
-Index: upnpevents.c
---- upnpevents.c.orig
-+++ upnpevents.c
-@@ -14,6 +14,7 @@
- #include <unistd.h>
- #include <time.h>
- #include <sys/types.h>
-+#include <sys/select.h> /* fd_set */
- #include <sys/socket.h>
- #include <netinet/in.h>
- #include <arpa/inet.h>
-@@ -443,19 +444,34 @@ static void upnp_event_prepare(struct upnp_event_notif
-               l = 0;
-       }
-       obj->buffersize = 1024;
--      obj->buffer = malloc(obj->buffersize);
--      if(!obj->buffer) {
--              syslog(LOG_ERR, "%s: malloc returned NULL", 
"upnp_event_prepare");
--              if(xml) {
--                      free(xml);
-+      for (;;) {
-+              obj->buffer = malloc(obj->buffersize);
-+              if(!obj->buffer) {
-+                      syslog(LOG_ERR, "%s: malloc returned NULL", 
"upnp_event_prepare");
-+                      if(xml) {
-+                              free(xml);
-+                      }
-+                      obj->state = EError;
-+                      return;
-               }
--              obj->state = EError;
--              return;
-+              obj->tosend = snprintf(obj->buffer, obj->buffersize, notifymsg,
-+                                     obj->path, obj->addrstr, obj->portstr, 
l+2,
-+                                     obj->sub->uuid, obj->sub->seq,
-+                                     l, xml);
-+              if (obj->tosend < 0) {
-+                      syslog(LOG_ERR, "%s: snprintf() failed", 
"upnp_event_prepare");
-+                      if(xml) {
-+                              free(xml);
-+                      }
-+                      obj->state = EError;
-+                      return;
-+              } else if (obj->tosend < obj->buffersize) {
-+                      break; /* the buffer was large enough */
-+              }
-+              /* Try again with a buffer big enough */
-+              free(obj->buffer);
-+              obj->buffersize = obj->tosend + 1;      /* reserve space for 
the final 0 */
-       }
--      obj->tosend = snprintf(obj->buffer, obj->buffersize, notifymsg,
--                             obj->path, obj->addrstr, obj->portstr, l+2,
--                             obj->sub->uuid, obj->sub->seq,
--                             l, xml);
-       if(xml) {
-               free(xml);
-               xml = NULL;
diff --git patches/patch-upnppinhole_c patches/patch-upnppinhole_c
deleted file mode 100644
index 893ad85132a..00000000000
--- patches/patch-upnppinhole_c
+++ /dev/null
@@ -1,11 +0,0 @@
-$OpenBSD: patch-upnppinhole_c,v 1.1 2016/09/10 13:03:42 ajacoutot Exp $
---- upnppinhole.c.orig Sat Sep 10 12:03:05 2016
-+++ upnppinhole.c      Sat Sep 10 12:03:10 2016
-@@ -9,6 +9,7 @@
- #include <string.h>
- #include <syslog.h>
- #include <sys/types.h>
-+#include <sys/select.h> /* fd_set */
- #include <sys/socket.h>
- #include <netinet/in.h>
- #include <net/if.h>
diff --git patches/patch-upnpredirect_c patches/patch-upnpredirect_c
deleted file mode 100644
index e4e4a4d8f92..00000000000
--- patches/patch-upnpredirect_c
+++ /dev/null
@@ -1,12 +0,0 @@
-$OpenBSD: patch-upnpredirect_c,v 1.2 2019/03/11 04:06:37 bket Exp $
-Index: upnpredirect.c
---- upnpredirect.c.orig
-+++ upnpredirect.c
-@@ -10,6 +10,7 @@
- #include <string.h>
- #include <syslog.h>
- #include <sys/types.h>
-+#include <sys/select.h> /* fd_set */
- #include <sys/socket.h>
- #include <netinet/in.h>
- #include <net/if.h>
diff --git patches/patch-upnpsoap_c patches/patch-upnpsoap_c
deleted file mode 100644
index d2e7a7bf402..00000000000
--- patches/patch-upnpsoap_c
+++ /dev/null
@@ -1,28 +0,0 @@
-$OpenBSD: patch-upnpsoap_c,v 1.4 2019/03/19 17:28:32 steven Exp $
-
-Index: upnpsoap.c
---- upnpsoap.c.orig
-+++ upnpsoap.c
-@@ -590,7 +590,7 @@ AddAnyPortMapping(struct upnphttp * h, const char * ac
-       if(leaseduration == 0)
-               leaseduration = 604800;
- 
--      if (!int_ip || !ext_port || !int_port)
-+      if (!int_ip || !ext_port || !int_port || !protocol)
-       {
-               ClearNameValueList(&data);
-               SoapError(h, 402, "Invalid Args");
-@@ -1841,6 +1841,13 @@ GetOutboundPinholeTimeout(struct upnphttp * h, const c
-       rem_host = GetValueFromNameValueList(&data, "RemoteHost");
-       rem_port = GetValueFromNameValueList(&data, "RemotePort");
-       protocol = GetValueFromNameValueList(&data, "Protocol");
-+
-+      if (!int_port || !rem_port || !protocol)
-+      {
-+              ClearNameValueList(&data);
-+              SoapError(h, 402, "Invalid Args");
-+              return;
-+      }
- 
-       rport = (unsigned short)atoi(rem_port);
-       iport = (unsigned short)atoi(int_port);

Reply via email to