Commit graph

469 commits

Author SHA1 Message Date
Erik Ekman cb6cbecba1 Make it clearer that iodine is asking for a password
To not confuse it with sudo or similar
2021-08-16 10:34:41 +02:00
Erik Ekman ee623a2d84 Rework handling of IPv6 address failures
Skip IPv6 on any error getting the default address (::) if IPv6 is not
explicitly chosen.
2021-08-11 09:23:03 +02:00
Erik Ekman 43a82ef6be Print getaddrinfo failure properly 2021-08-09 13:42:49 +02:00
Erik Ekman 559dafb030 Attempt skipping IPv6 if not supported 2021-08-09 12:14:42 +02:00
Erik Ekman f2b619faad Allow looking up external address and listen to it 2021-06-04 19:06:03 +02:00
Erik Ekman a6d82b1a44 Allow listen adresses to be non-numeric (using domains) 2021-06-04 18:57:34 +02:00
Erik Ekman 8041e0368c Print address when failing to bind 2021-06-04 18:38:50 +02:00
Erik Ekman d02f1b4f41 tun: Fix warning
tun.c:389:19: warning: comparison of unsigned expression < 0 is always false [-Wtautological-compare]
        if (addr.sc_unit < 0) {
            ~~~~~~~~~~~~ ^ ~
2021-05-14 13:38:51 +02:00
Erik Ekman 02173b8352 Fix iteration of utun devices on macos
Pass the constructed name instead of NULL to open_utun

Also add some error handling to utun_unit.
2021-05-13 20:13:00 +02:00
Erik Ekman dc307b7183 Add prototypes for vwarn/vwarnx
Fixes this warning:
common.c:406:1: warning: no previous prototype for 'vwarn' [-Wmissing-prototypes]
  406 | vwarn(const char *fmt, va_list list)
      | ^~~~~
common.c:429:1: warning: no previous prototype for 'vwarnx' [-Wmissing-prototypes]
  429 | vwarnx(const char *fmt, va_list list)
      | ^~~~~~

Also move err() to have non-x versions first.
2021-01-31 14:08:27 +01:00
Erik Ekman 6a7763c210 More compact no-op of Windows syslog 2021-01-31 14:01:13 +01:00
Erik Ekman cc51ee6f02 Formatting: Indent multi-line prints less 2021-01-31 13:54:09 +01:00
Erik Ekman 4b3d6e2962 Formatting: Use tabs for indents 2021-01-31 13:46:12 +01:00
Erik Ekman a9045705ba tun: Automatically attempt to use utun on mac
Once /dev/tunX has been tried without success
2021-01-21 17:40:22 +01:00
Erik Ekman 39356163d9 Formatting: Fix mixed use of tabs and spaces 2020-08-01 17:29:49 +02:00
Erik Ekman 9a041683be Formatting: Fix lines starting with spaces 2020-08-01 17:19:37 +02:00
Erik Ekman 8d2c86c73d Fix strncat size argument in send_handshake_query
Found by clang:
client.c:1276:26: warning: the value of the size argument in 'strncat' is too large, might lead to a buffer overflow [-Wstrncat-size]
        strncat(buf, topdomain, sizeof(buf) - strlen(buf));
                                ^~~~~~~~~~~~~~~~~~~~~~~~~
2020-07-25 15:45:24 +02:00
Erik Ekman b7b1082dc6 client: Stop passing static variable userid to local functions 2020-07-24 21:17:18 +02:00
Erik Ekman c399f915b7 Improve logging around getting server address 2020-07-24 21:01:38 +02:00
Erik Ekman bbb604db06 Use send_handshake_query inside send_lazy_switch 2020-07-24 20:49:39 +02:00
Erik Ekman ba90706429 Replace send_downenc_switch with send_handshake_query 2020-07-24 20:38:45 +02:00
Erik Ekman 9cba3299c4 Replace send_ip_request with send_handshake_query 2020-07-24 20:36:51 +02:00
Erik Ekman 5de13805d8 Replace send_codec_switch with send_handshake_query 2020-07-24 20:36:41 +02:00
Erik Ekman d74939d323 Add send_handshake_query helper function
Convert send_downenctest to use it.
Remove unused data/len args from send_downenctest.
2020-07-24 20:18:07 +02:00
Erik Ekman a8a20f570e Formatting: spaces around operators 2020-07-24 19:15:02 +02:00
Erik Ekman aeacfbc2c0 Formatting: No spaces after '(' or before ')' 2020-07-24 19:02:41 +02:00
Erik Ekman 15f12d0693 Formatting: Space between 'for' and parenthesis 2020-07-24 18:57:57 +02:00
Erik Ekman 19d0d1be64 Formatting: Space between 'if' and parenthesis 2020-07-24 18:56:30 +02:00
Erik Ekman 310aedac8e Formatting: no space before parenthesis in function call. 2020-07-24 18:51:05 +02:00
Erik Ekman cde0b7632d Set additional record count properly in NS reply
For when there is no IPv4 address to return.
2020-07-23 22:12:07 +02:00
Erik Ekman ec6a1ac308 Fix IPv4 address in replies to A or NS queries (github issue #38)
The destination field in struct query was changed from in_addr_t to
struct sockaddr_storage, wihtout updating the functions sending it
in src/dns.c.

Only add extra A answer for NS queries if destination refers to an
IPv4 address, and fail if trying to encode a reply to an A query
if destination is not IPv4.

This means NS requests received over IPv6 will not contain an address
and A requests will be ignored, unless the -n option is used, or the
www subdomain is requested which sets a fixed address (127.0.0.1).
2020-07-23 21:49:46 +02:00
Erik Ekman d8f3ac8971 Add helper function tun_uses_header()
Remove code duplication and hide some ifdefs
2020-07-03 17:06:14 +02:00
Erik Ekman 07b2978326 Only check for utun if tun_device was given
Fixes github issue #37 hopefully.
2020-07-03 16:53:30 +02:00
Erik Ekman 2032b44949 Look up external IP via DNS instead of HTTP
Use myip.opendns.com via their resolver.

The code is now TCP free again :)
2020-05-24 16:06:41 +02:00
Erik Ekman e8a4c66719 Clean up makefile 2020-05-24 14:12:40 +02:00
Erik Ekman 8379384d37 Improve usage/help text around finding external IP 2020-05-24 13:41:54 +02:00
Daniel Schaefer d2f671bdc7 Define searchpath for route with macro
Allows it to be easily overridden using the compiler commmandline.
Just like IFCONFIGPATH.
2019-08-24 16:43:34 +02:00
rofl0r 37960ab9dd client: warn when handshake fails due to BADIP
other parts of the code show the meaningful error message too, but
not at the spot where it happened for me.
2019-08-04 13:53:21 +02:00
Erik Ekman d37ebdaca7
Merge pull request #28 from l29ah/strncat-warning
client.c: don't produce an useless strncat usage warning
2019-08-04 13:42:13 +02:00
gregor herrmann 024481c94b Fix cross compilation
src/osflags hard codes the build architecture pkg-config. After making it
substitutable and substituting it from the build environment, iodine cross
builds successfully.

Original patch from Helmut Grohne <helmut@subdivi.de> in
https://bugs.debian.org/921822, adjusted to Git HEAD.
2019-08-04 13:30:33 +02:00
Sergey Alirzaev b406009c6d
client.c: don't produce an useless strncat usage warning 2018-10-01 04:04:15 +03:00
Erik Ekman 99c0efc467 Try building working binaries for non-ancient Android
Based on help from admin@hypothermic.nl
2017-10-22 11:54:59 +02:00
Erik Ekman 72bdf7f20e Merge branch 'protect-options' of https://github.com/Masaq-/iodine into protect_opts 2017-10-22 11:59:38 +02:00
chengzhicn 122ac1a25d check error returned by dns_decode
before this commit, sending "GET / HTTP/1.1" to server will cause uninitialized variable access.
2017-10-13 03:08:12 +08:00
Ralf Ramsauer 79455c380d consequently use tabs, and no spaces
and wrap lines at 80 characters

Signed-off-by: Ralf Ramsauer <ralf@ramses-pyramidenbau.de>
2017-04-10 21:26:13 +02:00
Ralf Ramsauer 8c5127b375 don't zero-initialise variable
For global variables, the C standard ensures that this variable will be
zeroed on startup.

Signed-off-by: Ralf Ramsauer <ralf@ramses-pyramidenbau.de>
2017-03-11 21:30:50 -08:00
Ralf Ramsauer 119d1b2da1 dns: improve code style
Signed-off-by: Ralf Ramsauer <ralf@ramses-pyramidenbau.de>
2017-03-11 21:30:50 -08:00
Ralf Ramsauer 4591cafd27 encoding: simplify {places,eats}_dots
Why not using constant bools?

Much simpler than complex function calls, that eventually return
constant values.

Signed-off-by: Ralf Ramsauer <ralf@ramses-pyramidenbau.de>
2017-03-11 21:30:50 -08:00
Ralf Ramsauer 0eb3b65158 encoding: use simple int's instead of accessor functions
Why are those values exposed to the outer world? They seem not be in use
anyway.

Signed-off-by: Ralf Ramsauer <ralf@ramses-pyramidenbau.de>
2017-03-11 21:30:50 -08:00
Ralf Ramsauer 317511e3ca nitpick: coding style
Signed-off-by: Ralf Ramsauer <ralf@ramses-pyramidenbau.de>
2017-03-11 21:30:50 -08:00