Commit Graph

600 Commits

Author SHA1 Message Date
Thomas Bernard 4975eeabe2
update CMakeLists.txt
CMakeLists.txt: always includes minissdpc.c
2021-08-22 23:26:09 +02:00
Thomas Bernard 92b1c8198d
WIP. Reorganize src build directories 2021-08-22 23:26:04 +02:00
Thomas Bernard 874a3aba9e
miniupnpc: move public .h files to include/ subdir
fixes #540
2021-08-22 23:21:54 +02:00
Thomas Bernard 384268ac46
LICENSE / README : 2021 2021-08-22 23:15:53 +02:00
Thomas Bernard 2066ccbbdb Makefile: flags for ASAN 2021-08-21 12:57:13 +02:00
Thomas Bernard 2c4acd0d50 Makefile: use CPPFLAGS instead of CFLAGS for -D 2021-08-21 12:40:11 +02:00
Thomas Bernard 2cc539ae27 upnpdev.h: 2021 2021-08-21 11:46:50 +02:00
Ștefan Talpalaru d04473c67f
miniupnpc: don't assume '.' is in the Windows PATH 2021-08-17 02:48:36 +02:00
SpaceIm da771539c1 fix cross-build to iOS/tvOS/watchOS 2021-07-19 22:35:31 +02:00
Thomas Bernard 97b7ec1ad2
normalize use of __STDC_VERSION__ 2021-06-17 09:25:26 +02:00
fanquake 8f9ce751ba
Fix __STDC_VERSION__ check in upnpdev.h 2021-06-17 14:48:34 +08:00
Thomas Bernard 479f6ed616
miniupnpc/CMakeLists.txt: TAB => SPACES 2021-05-22 00:09:09 +02:00
past-due 2c564135e1 [CMake] Build listdevices.c as part of the listdevices executable
Do not include it in MINIUPNPC_SOURCES
2021-05-21 17:06:33 -04:00
Thomas Bernard f3c0d52ca4
wingenminiupnpcstrings.c: fix -Wsign-compare warning 2021-05-19 10:33:33 +02:00
Thomas Bernard 69acdf3356
ssdpDiscoverDevices() ignore empty string multicastif
fixes #544
2021-05-13 13:01:38 +02:00
Thomas Bernard f13a79fabc Merge branch 'apple_clock_gettime_fallback_1'
see #516
2021-05-12 00:09:48 +02:00
Thomas Bernard 56aa707a75
use C style comments 2021-05-12 00:09:28 +02:00
Thomas Bernard 0c7579c9aa
2020 => 2021 2021-05-12 00:00:06 +02:00
Pali Rohár 20ee72f9c8 miniupnpc: Show error message when GetExternalIPAddress returns empty string
According to IGD v2.0 specification GetExternalIPAddress can return also
empty string in case of error.
2021-03-28 17:33:15 +02:00
Fabio Alessandrelli 3a08dd4b89 Use GetBestInterfaceEx when available.
Since GetBestInterface is not available in UWP apps.

GetBestInterface:
https://docs.microsoft.com/en-us/windows/win32/api/iphlpapi/nf-iphlpapi-getbestinterface#requirements

GetBestInterfaceEx:
https://docs.microsoft.com/en-us/windows/win32/api/iphlpapi/nf-iphlpapi-getbestinterfaceex#requirements
2021-03-18 17:30:46 +01:00
Fabio Alessandrelli c1b64740fb Use WINVER values instead of _WIN32_WINNT_[NAME].
WINVER values are well defined, see:

https://docs.microsoft.com/en-us/cpp/porting/modifying-winver-and-win32-winnt?view=msvc-160
2021-03-18 17:11:48 +01:00
Thomas Bernard 81029a860b
miniupnpc: version 2.2.2 2021-03-03 00:50:51 +01:00
Thomas Bernard 200cf4cd75
miniupnpc: update Changelog.txt + 2021 2021-03-03 00:41:49 +01:00
Thomas BERNARD 94f72a63b5
Merge pull request #486 from hrydgard/fix-uwp-build
Fix Windows UWP build.
2021-02-26 15:41:11 +01:00
Thomas Bernard bfc5eab6be
fix #522 for MS VS 2010 too 2021-02-05 20:37:15 +01:00
Pali Rohár b6d8a4545b miniupnpc: Enable -W -Wstrict-prototypes compile flags also for MinGW builds 2021-01-27 13:14:33 +01:00
Pali Rohár c8883e8491 miniupnpc: Fix compile warning: comparison between signed and unsigned
receivedata.c: In function ‘receivedata’:
receivedata.c:66: warning: comparison between signed and unsigned

Macro ISINVALID needs to be defined via INVALID_SOCKET on all WIN32 targets, not only for MSVC.
2021-01-27 13:12:24 +01:00
Pali Rohár d693584fdb miniupnpc: Fix compile warning: unused parameter
receivedata.c: In function ‘receivedata’:
receivedata.c:35:41: warning: unused parameter ‘scope_id’ [-Wunused-parameter]
             int timeout, unsigned int * scope_id)
                          ~~~~~~~~~~~~~~~^~~~~~~~
2021-01-27 13:10:49 +01:00
Pali Rohár e768e1555e miniupnpc: Fix compile warning: unused parameter
miniupnpc.c: In function ‘upnpDiscoverDevices’:
miniupnpc.c:270:34: warning: unused parameter ‘minissdpdsock’ [-Wunused-parameter]
                     const char * minissdpdsock, int localport,
                     ~~~~~~~~~~~~~^~~~~~~~~~~~~
2021-01-27 13:10:03 +01:00
Thomas Bernard 36cc66edda Visual Studio : define INTERNAL_NAME
fixes #522
2021-01-23 00:05:38 +01:00
pastdue 1d38b37732 Fallback for earlier Apple platforms that lack clock_gettime 2021-01-15 17:15:54 -05:00
Thomas Bernard 2adcf3f432
miniupnpcmodule.c: throw an exception in UPnP_discover()
fixes #521
2021-01-15 20:21:02 +01:00
Thomas Bernard 474658716f
miniupnpc: update Changelog.txt
regarding bfbe42d392
2021-01-04 01:17:50 +01:00
Thomas Bernard 184ed52069
upnpc.c: fix SetRedirectAndTest() args. 2021-01-04 01:16:02 +01:00
Pali Rohár bfbe42d392 miniupnpc: Fix usage of IP_MULTICAST_IF with struct ip_mreqn
When struct ip_mreqn is passed to IP_MULTICAST_IF setsockopt option it is
always required to set also ipv4 source address. Otherwise Linux kernel
will choose default system multicast ipv4 address which does not have to
belong to chosen interface specified in struct ip_mreqn.

Therefore on system with more multicast interfaces and more ipv4 addresses,
it may happen that interface chosen by upnpc -m option would use ipv4
address which does not belong to this interface.

This change is fixing above issue and ensure that if interface is chosen by
upnpc -m option then source address which belongs to this interface would
be used.

Without this change upnpc -m eth1 can send multicast traffic over interface
eth1 but with source ipv4 address of interface eth0, which obviously would
be rejected by upnp gateway.
2021-01-04 00:29:58 +01:00
Pali Rohár 36a6913970 miniupnpc: Add missing checks for if_nametoindex() return value
if_nametoindex() returns zero value on failure. Add missing error handling.
2020-12-30 13:41:20 +01:00
Pali Rohár 0d5b416e05 miniupnpc: Fix checking for inet_pton() errors
inet_pton() indicates error by zero or negative return value.
2020-12-30 13:39:36 +01:00
Thomas Bernard 544e6fcc73
miniupnpc: version 2.2.1 2020-12-20 19:11:18 +01:00
Thomas Bernard ba130320f4
.gitignore: wingenminiupnpcstrings 2020-11-30 01:59:15 +01:00
Thomas Bernard ca4e0342bf
genminiupnpcstrings.vbs: generates rc_version.h as well
see #512
2020-11-30 01:55:06 +01:00
Thomas Bernard b28462b62a
wingenminiupnpcstrings also generates rc_version.h 2020-11-30 01:48:15 +01:00
Thomas Bernard f04dbafe09
mingw32: build resources for .dll 2020-11-30 01:21:26 +01:00
Stanislas Dolcini 44dd54051c Add RC file 2020-11-28 11:49:59 +01:00
Cristian Morales Vega 677e0db636 Install cmake config file
miniupnpc::miniupnpc becomes an ALIAS for the shared library, if
available, and the static library otherwise.
Users of the installed library can use MINIUPNPC_USE_STATIC_LIBS to
force the use of the static library.
2020-11-27 18:49:51 +00:00
Thomas Bernard 5b5ce9e49e Merge remote-tracking branch 'RedDwarf69/stuff' into master 2020-11-27 19:08:35 +01:00
Cristian Morales Vega f1f8ae3659 cmake: use GNUInstallDirs 2020-11-25 11:09:21 +00:00
Cristian Morales Vega efcc616110 cmake: remove wrong target_include_directories() 2020-11-24 16:37:35 +00:00
Thomas Bernard ae5e8fa9af Merge remote-tracking branch 'RedDwarf69/pkgconfig' into master 2020-11-23 18:30:18 +01:00
Cristian Morales Vega ed989c3fa2 miniupnpc.pc: remove "miniupnpc" from includedir 2020-11-22 19:51:57 +00:00
Cristian Morales Vega 876109c890 cmake: update version 2020-11-22 19:31:42 +00:00
Thomas Bernard 9793607a76
miniupnpc version 2.2.0 2020-11-09 20:52:52 +01:00
Thomas Bernard 82e874ada9
remove build warning.
PortMappingNumberOfEntries is supposed to be limited to 65536

should fix #501
2020-11-09 20:38:45 +01:00
Thomas Bernard 1756c9259a
github workflows: try to upload win32 binaries 2020-11-05 13:24:59 +01:00
Pali Rohár 26e8f7831a Use GetBestInterface() instead of GetBestInterfaceEx()
GetBestInterfaceEx() is not supported by older i586-mingw32msvc-gcc
compiler. GetBestInterface() works only with IPv4 addresses but in this
case it is enough as it is needed only for IP address 223.255.255.255.
2020-11-04 23:59:03 +01:00
Pali Rohár 23f492fd1b Fix compilation when _WIN32_WINNT_VISTA macro is not defined
Older version of i586-mingw32msvc-gcc compiler does not define
_WIN32_WINNT_VISTA macro. Therefore preprocessor #if condition is
incorrectly evaluated.
2020-11-04 23:57:43 +01:00
Thomas Bernard 8b44224b91 2020 2020-11-04 23:42:37 +01:00
Thomas Bernard 0a9750602d Merge branch 'win32_snprintf' 2020-11-04 23:40:37 +01:00
Thomas Bernard 25a78aa385 add win32_snprintf.h 2020-11-04 23:37:07 +01:00
Thomas Bernard 29797cf607 2019 => 2020 2020-10-31 11:36:06 +01:00
Pali Rohár 8cd542a809 Fix snprintf emulation for Windows
* Move it into separate win32_snprintf.h file to de-duplicate its
  implementation from all miniupnp source files.

* Do not use this emulation with mingw32 SDK when __NO_ISOCEXT is not
  defined as in this case mingw32 provides working snprintf function.

* Fix detection for mingw-w64 variants, when __NO_ISOCEXT is defined or
  when older version without UCRT is used.

* Add check if _scprintf function is available. In case it is not available
  just returns length of filled buffer to prevent buffer overflow.
2020-10-18 20:29:53 +02:00
Thomas Bernard bd71e2e279
miniupnpc/addr_is_reserved.c: include sys/types.h 2020-10-17 22:13:32 +02:00
Thomas Bernard 138b4ff3aa
Fix for compiling with old windows SDK 2020-10-17 22:03:22 +02:00
Thomas Bernard 7a66f373fc inet_pton() instead of inet_addr() 2020-10-17 15:19:58 +02:00
Thomas Bernard 69fc376929 add addr_is_reserved.c/.h to MSVC project files
fixes #489
2020-10-17 15:15:59 +02:00
Thomas Bernard 63bf239a3e remove unused definitions
see #489
2020-10-17 14:56:58 +02:00
Thomas Bernard 062b562c37 ignore *.opendb 2020-10-17 14:49:43 +02:00
Thomas Bernard 9ec4351829
Fix solaris build
fixes #490
2020-10-07 00:17:16 +02:00
Pali Rohár f5f693876d miniupnpc: By default skip invalid, disconnected and non-IGD devices
Allow to use such IGD devices by new -i option.
2020-10-05 22:30:30 +02:00
Thomas Bernard 11c479fb2a Merge remote-tracking branch 'pali/master' 2020-10-05 22:02:29 +02:00
Thomas Bernard c7cfe2c51a
fix compilation warning (WIN32) 2020-10-05 21:56:32 +02:00
Pali Rohár fc74c42864 miniupnpc: Fix name of miniupnpc import library in setupmingw32.py 2020-10-02 22:52:26 +02:00
Pali Rohár 7d5fdf0743 miniupnpc: Fix usage of Windows _snprintf() function
_snprintf() differs from snprintf() in:

* on overflow it returns -1 instead of required buffer size
* on overflow it does not fill nul byte
* does not accept NULL/0 as a buffer

Microsoft implemented snprintf() in Visual Studio 2015 as part of UCRT.

Mingw32 contains snprintf() implementation only when __USE_MINGW_ANSI_STDIO
is defined.

Mingw-w64 versions prior to 8.0.0. contain snprintf() implementation when
__USE_MINGW_ANSI_STDIO or _UCRT is defined. Since version 8.0.0 it is
always supported.

Mingw-w64 defines both __MINGW32__ and __MINGW64_VERSION_MAJOR macros.
Mingw32 defines only __MINGW32__.

_scprintf() just count number of bytes needed for formatting string, so it
is basically return value of snprintf().

This change updates miniupnpc code to use snprintf() when is provided by
compiler/runtime to avoid usage _snprintf().

And also this changes updates miniupnpc emulation of snprintf() by
_snprintf() and _scprintf() functions to avoid buffer overflows.

For inspiration full emulation of snprintf() by _snprintf() is available in
mingw-w64 stdio library:

https://sourceforge.net/p/mingw-w64/mingw-w64/ci/master/tree/mingw-w64-crt/stdio/snprintf.c
2020-10-02 22:32:36 +02:00
Thomas Bernard c1eb7c0069 update Changelog 2020-09-28 23:25:23 +02:00
Thomas Bernard 6358882f19 check string passed to atoi() 2020-09-28 23:24:54 +02:00
Thomas Bernard cce4407d9d check for malformed HTTP response 2020-09-28 23:23:17 +02:00
Thomas Bernard 426f9a1835 fix warning 2020-09-24 10:38:05 +02:00
Thomas Bernard 2db013d891
use GetTickCount()/GetTickCount64() under windows
GetTickCount() when GetTickCount64() is not available
2020-09-24 10:19:09 +02:00
Thomas Bernard af1ea9f60b
miniupnpc: use clock_gettime() instead of gettimeofday() if possible 2020-09-24 10:19:08 +02:00
Thomas Bernard aa490867b3
prevent infinite loop in upnpDiscover()
fixes #488
2020-09-24 10:19:08 +02:00
Thomas Bernard 0c556655ea
Move addr_is_reserved() to a specific source file and test it 2020-09-24 09:57:25 +02:00
Pali Rohár 96aa863c78 Fix check for reserved IP addresses in miniupnpc
Check for 0.0.0.0, 192.168., 10. and 172. is not enough. Nowadays routers
behind NAT are getting IP address from shared CG-NAT space 100.64.0.0/10.

This patch adjust miniupnpc to check for all reserved IPv4 addresses.
2020-08-05 16:26:26 +02:00
Henrik Rydgård 7e229ddd63 Fix Windows UWP build. 2020-07-21 23:42:42 +02:00
Thomas Bernard 029383e5f4
initialize tp_free 2020-06-05 21:13:19 +02:00
Thomas Bernard 47a55b27c7
miniupnpc: use C99 flexible array member for struct UPNPDev
see #462
2020-05-29 17:59:38 +02:00
Thomas Bernard f34241339e
miniupnpc: update *.py files headers 2020-04-06 12:25:34 +02:00
Thomas BERNARD c5e8694746
Merge pull request #434 from pali/master
Fix and simplify Makefile.mingw for miniupnpc
2020-04-06 12:05:56 +02:00
Pali Rohár 8fc9a6d8ad Compile static mingw executables with -static argument 2020-04-06 00:09:52 +02:00
Pali Rohár 2e3e6990db Fix and simplify Makefile.mingw for miniupnpc
* Ensure that all executables would have .exe Windows extension
* Do not use dll subdirectory, so makefile would be slash agnostic
* Define common targets to simplify makefile
* Export required functions for listdevices executable
2020-04-02 18:45:46 +02:00
jaehong park ad7c1db49a fix: TypeError: a bytes-like object is required, not 'str' 2020-03-22 03:31:34 +09:00
Thomas Bernard 4436632866
2019=>2020 2020-02-20 09:04:23 +01:00
Thomas Bernard 443cb78e83
Haiku support 2020-02-20 09:03:53 +01:00
CodeforEvolution bffb6a828f Add Haiku Support 2020-02-19 16:07:56 -06:00
Thomas Bernard f8a39b7fd5 miniupnpc/Changelog.txt: update 2019-12-24 00:36:49 +01:00
Thomas Bernard 0ab1d6725b Merge branch 'issue396' 2019-11-01 00:04:23 +01:00
Thomas Bernard efb6ec1b2f testminiwget.sh: use either "ip addr" or "ifconfig -a" 2019-10-22 14:35:15 +02:00
Thomas Bernard c2818392e1 fix UPNP_GetValidIGD()
lanaddr was the one used to connect to the last device.
fixes #396
2019-10-13 19:58:52 +02:00
Thomas Bernard 5f85321084 connecthostport.c: output to help debug
see #396
2019-10-13 19:22:59 +02:00
Thomas Bernard 7c35c5269c
update miniupnpc/Changelog.txt 2019-08-24 10:51:36 +02:00
Thomas Bernard 191b8bc106
upnperrors.c: update url and add vim modeline 2019-08-24 10:51:27 +02:00
Thomas Bernard 564464efdb Merge remote-tracking branch 'jleyec/master' 2019-07-30 00:17:09 +02:00