1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
|
https://github.com/zerotier/ZeroTierOne/issues/2332
https://gitlab.archlinux.org/archlinux/packaging/packages/zerotier-one/-/commit/1d040aee9a4cfecdcc747cb42f92a1420a42a3f4
From ab00e10bfac636c97fc608608745f18889f28410 Mon Sep 17 00:00:00 2001
From: Christian Hesse <mail@eworm.de>
Date: Tue, 5 Nov 2024 16:06:06 +0100
Subject: [PATCH 1/2] shrink variable size
This is what upstream miniupnpc uses...
--- a/osdep/PortMapper.cpp
+++ b/osdep/PortMapper.cpp
@@ -202,7 +202,7 @@ public:
// UPnP mode
// ---------------------------------------------------------------------
if (mode == 1) {
- char lanaddr[4096];
+ char lanaddr[64];
char externalip[4096]; // no range checking? so make these buffers larger than any UDP packet a uPnP server could send us as a precaution :P
char inport[16];
char outport[16];
--
2.47.0
From fa0b81d9f9e84e282eea7955a037580be44002f9 Mon Sep 17 00:00:00 2001
From: Christian Hesse <mail@eworm.de>
Date: Tue, 5 Nov 2024 16:09:35 +0100
Subject: [PATCH 2/2] add missing function parameter
This changed with miniupnpc 2.2.8:
https://github.com/miniupnp/miniupnp/commit/c0a50ce33e3b99ce8a96fd43049bb5b53ffac62f
Warning: This is not a proper patch suitable for upstream! It assumes the
parameter is always there, which is not true for older versions.
So handle with care!
--- a/osdep/PortMapper.cpp
+++ b/osdep/PortMapper.cpp
@@ -203,6 +203,7 @@ public:
// ---------------------------------------------------------------------
if (mode == 1) {
char lanaddr[64];
+ char wanaddr[64];
char externalip[4096]; // no range checking? so make these buffers larger than any UDP packet a uPnP server could send us as a precaution :P
char inport[16];
char outport[16];
@@ -224,13 +225,14 @@ public:
#endif
memset(lanaddr,0,sizeof(lanaddr));
+ memset(wanaddr,0,sizeof(wanaddr));
memset(externalip,0,sizeof(externalip));
memset(&urls,0,sizeof(urls));
memset(&data,0,sizeof(data));
OSUtils::ztsnprintf(inport,sizeof(inport),"%d",localPort);
int foundValidIGD = 0;
- if ((foundValidIGD = UPNP_GetValidIGD(devlist,&urls,&data,lanaddr,sizeof(lanaddr)))&&(lanaddr[0])) {
+ if ((foundValidIGD = UPNP_GetValidIGD(devlist,&urls,&data,lanaddr,sizeof(lanaddr),wanaddr,sizeof(wanaddr)))&&(lanaddr[0])) {
#ifdef ZT_PORTMAPPER_TRACE
PM_TRACE("PortMapper: UPnP: my LAN IP address: %s" ZT_EOL_S,lanaddr);
#endif
--
2.47.0
|