Commit Graph

484 Commits

Author SHA1 Message Date
Thomas Bernard 845dc469d6
fix messages and return code 2020-10-05 22:26:41 +02:00
Thomas Bernard 1a1dc0fffb
remove goto/fix memory leak
see #492
2020-10-05 22:19:40 +02:00
Pali Rohár fb9d162a9c miniupnpc: By default skip invalid, disconnected and non-IGD devices
Allow to use such IGD devices by new -i option.
2020-10-05 22:06:03 +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
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
Sibi Prabakaran ea69474873
Fix error code for 708
According to the specification
http://upnp.org/specs/gw/UPnP-gw-WANIPConnection-v2-Service.pdf, the
708 error code corresponds to InvalidLayer2Address. Also
WildcardNotPermittedInSrcIP is for 715 which is already properly mapped.
2019-07-29 22:49:07 +05:30
jlayec e1ff22b20d manage [remote host] 2019-07-13 12:39:33 +02:00
Thomas Bernard 1d6b9ae38d
upnperrors.c: 2019 ! 2019-06-25 23:21:26 +02:00
Thomas Bernard 14f6ed5111
python module: UPnP_addportmapping() lease duration is unsigned int
Also, this is the server that will check for the maximum value (604800 seconds)
2019-05-20 21:07:53 +02:00
Nathan Richard d457eacec6 Added the leaseDuration parameter to the addportmapping python binding.
This parameter was already present in the C API but not exposed to the
python module.

For backward compatibility, leaseDuration was made optional with a
default value of 0 (unlimited duration).
2019-05-17 15:45:21 +02:00
Thomas Bernard 9132003aa0
simplify Win32 loop
thanks to irwir !
see https://github.com/miniupnp/miniupnp/pull/362
2019-05-08 15:46:52 +02:00
Ștefan Talpalaru c8566d6ebd
strupnperror(): add 2 more error codes 2019-05-03 14:37:02 +02:00
Nathan Richard 8aec04e234 Add wheels as a distribution alternative for Windows builds. 2019-04-25 18:17:27 +02:00
Nathan Richard b11f642b81 Creation a build matrix to support various python versions. 2019-04-25 17:28:49 +02:00
Nathan Richard e1779d3518 Attempt to have a working build for Python 3.7 under windows with appveyor.
- Python 3.7 is built using Visual Studio 2017 so we use the corresponding image.
- Python 3.7 replaces Python 2.7 when building the module.
- Adding the library legacy_stdio_definitions to the linker input as starting with VS 2015 some symbols have been inlined but may be expected by older binaries. This compatibility library exposes these symbols so they can be dynamically linked when required (Cf. https://stackoverflow.com/a/32418900).
2019-04-25 17:07:26 +02:00
Thomas Bernard f3a567cedf
best way to test for integer in [16;31] 2019-04-23 14:19:31 +02:00
Thomas Bernard 60ed85fe70
upnpcommands.c: restrict scope of variable p
see #362
2019-04-23 14:18:23 +02:00
Thomas Bernard 422d42357e
use strncmp() instead of memcmp() when needed
memcmp(s1, s2, l) is valid when both s1 and s2
have at least l bytes acccessible. So
memcmp("a", "abcdefgh", 8)
is not valid

see #362
2019-04-23 14:16:25 +02:00
Thomas Bernard c1cbcd971b remove space at end of line... 2019-04-23 12:56:28 +02:00
Rosen Penev 82b117ee7f
CMake: Add listdevices
Matches the Makefile
2019-04-23 12:56:15 +02:00
past-due aea0a6093d
[CMake] Add UPNPC_NO_INSTALL option 2019-04-17 10:27:29 -04:00