NetworkManager/src/core
Thomas Haller 7c9b0d68e4
ifcfg: reject non-UTF-8 at the lowest layer when reading shell variable
ifcfg files are a text format. It makes no sense to ever accept
non-UTF-8 blobs. If binary data is to be encoded in a ifcfg file, then
the upper layers must escape/encode it in valid UTF-8.

Let svUnescape() silently reject any binary "text". This will lead to treat such
strings as empty strings "". This is no different than some invalid
quoting: the string is not parsable as (UTF-8) text and will be treated
as such.

This is potentially a breaking change. But the benefit is that all the
upper layers can rely on only getting valid UTF-8 strings. For example,
a non-UTF-8 string cannot be converted to a "s" GVariant (of course not,
it's not a string). But our nm_connection_verify() commonly does not
check that all strings are in fact valid UTF-8. So a user who edits
an ifcfg file could inject non-valid strings, and cause assertion
failures later on.

It's actually easy to provoke a crash (or at least an assertion failure)
by writing an ifcfg file with certain keys as binary.

Note that you can either reproduce the binary files by writing non-UTF-8
"strings" dirctly, or by using \x, \u, or \U escape sequences.

Note that also '\0' gets rejected and renders the string as invalid
(i.e. as empty). Before the returned string would have been simply
truncated and the rest ignored. Such NUL bytes can only be produced
using the escape sequences, because the ifcfg reader already (silently)
truncates the file on the first binary NUL.
2021-07-15 08:22:24 +02:00
..
devices device/dhcp: avoid crash by not starting DHCPv6 client without ifindex 2021-07-14 18:19:46 +02:00
dhcp clang-format: use "IndentPPDirectives:None" instead of "BeforeHash" 2021-07-09 08:49:06 +02:00
dns clang-format: use "IndentPPDirectives:None" instead of "BeforeHash" 2021-07-09 08:49:06 +02:00
dnsmasq core: cleanup #include of "nm-dnsmasq-utils.c" 2021-04-20 17:25:21 +02:00
ndisc all: use nm_{idle,timeout}_add_source() instead of g_source_attach() 2021-06-28 13:31:35 +02:00
platform platform/tests: add assertions to nmtstp_link_bridge_normalize_jiffies_time() 2021-07-06 09:04:37 +02:00
ppp clang-format: use "IndentPPDirectives:None" instead of "BeforeHash" 2021-07-09 08:49:06 +02:00
settings ifcfg: reject non-UTF-8 at the lowest layer when reading shell variable 2021-07-15 08:22:24 +02:00
supplicant clang-format: use "IndentPPDirectives:None" instead of "BeforeHash" 2021-07-09 08:49:06 +02:00
tests glib-aux: use nm_utils_gettid() instead of gettid() 2021-07-08 08:31:47 +02:00
vpn core: drop deprecated PropertiesChanged D-Bus signal (API BREAK) 2021-05-14 10:57:34 +02:00
main-utils.c all: don't explicitly include <glib-unix.h> 2021-06-28 13:31:34 +02:00
main-utils.h all: move "src/" directory to "src/core/" 2021-02-08 09:56:41 +01:00
main.c clang-format: use "IndentPPDirectives:None" instead of "BeforeHash" 2021-07-09 08:49:06 +02:00
meson.build systemd: move "src/core/systemd" to "src/libnm-systemd-core" 2021-05-30 09:45:05 +02:00
NetworkManagerUtils.c core: add parameters options to nm_utils_complete_generic() 2021-07-08 17:20:15 +02:00
NetworkManagerUtils.h core: add parameters options to nm_utils_complete_generic() 2021-07-08 17:20:15 +02:00
nm-act-request.c firewall: rename NMUtilsShareRules to NMFirewallConfig 2021-05-07 11:42:51 +02:00
nm-act-request.h firewall: rename NMUtilsShareRules to NMFirewallConfig 2021-05-07 11:42:51 +02:00
nm-active-connection.c core: drop deprecated PropertiesChanged D-Bus signal (API BREAK) 2021-05-14 10:57:34 +02:00
nm-active-connection.h all: move "src/" directory to "src/core/" 2021-02-08 09:56:41 +01:00
nm-audit-manager.c clang-format: use "IndentPPDirectives:None" instead of "BeforeHash" 2021-07-09 08:49:06 +02:00
nm-audit-manager.h all: move "src/" directory to "src/core/" 2021-02-08 09:56:41 +01:00
nm-auth-manager.c build: move "shared/nm-{glib-aux,log-null,log-core}" to "src/libnm-{glib-aux,log-null,log-core}" 2021-02-24 12:48:20 +01:00
nm-auth-manager.h build: move "libnm-core/" to "src/" and split it 2021-02-18 19:46:51 +01:00
nm-auth-utils.c all: use nm_{idle,timeout}_add_source() instead of g_source_attach() 2021-06-28 13:31:35 +02:00
nm-auth-utils.h all: move "src/" directory to "src/core/" 2021-02-08 09:56:41 +01:00
nm-checkpoint-manager.c all: add "src/core/nm-default-daemon.h" as replacement for "nm-default.h" 2021-02-09 12:38:18 +01:00
nm-checkpoint-manager.h all: move "src/" directory to "src/core/" 2021-02-08 09:56:41 +01:00
nm-checkpoint.c core: drop deprecated PropertiesChanged D-Bus signal (API BREAK) 2021-05-14 10:57:34 +02:00
nm-checkpoint.h all: move "src/" directory to "src/core/" 2021-02-08 09:56:41 +01:00
nm-config-data.c config: avoid cloning string during nm_config_data_get_connection_default() et al. 2021-06-21 17:23:53 +02:00
nm-config-data.h config: avoid cloning string during nm_config_data_get_connection_default() et al. 2021-06-21 17:23:53 +02:00
nm-config.c core: belatedly add [main].firewall-backend config to known options 2021-06-04 10:27:20 +02:00
nm-config.h config: add "nm-base/nm-config-base.h" 2021-03-15 17:10:52 +01:00
nm-connectivity.c clang-format: use "IndentPPDirectives:None" instead of "BeforeHash" 2021-07-09 08:49:06 +02:00
nm-connectivity.h core: move NMPObjectType to "libnm-platform/nmp-base.h" 2021-03-05 11:27:15 +01:00
nm-core-utils.c clang-format: use "IndentPPDirectives:None" instead of "BeforeHash" 2021-07-09 08:49:06 +02:00
nm-core-utils.h clang-format: use "IndentPPDirectives:None" instead of "BeforeHash" 2021-07-09 08:49:06 +02:00
nm-dbus-manager.c core: drop deprecated PropertiesChanged D-Bus signal (API BREAK) 2021-05-14 10:57:34 +02:00
nm-dbus-manager.h all: move "src/" directory to "src/core/" 2021-02-08 09:56:41 +01:00
nm-dbus-object.c core: return boolean result from nm_dbus_object_clear_and_unexport() 2021-04-20 17:25:21 +02:00
nm-dbus-object.h core: drop deprecated PropertiesChanged D-Bus signal (API BREAK) 2021-05-14 10:57:34 +02:00
nm-dbus-utils.c core: drop deprecated PropertiesChanged D-Bus signal (API BREAK) 2021-05-14 10:57:34 +02:00
nm-dbus-utils.h core: drop deprecated PropertiesChanged D-Bus signal (API BREAK) 2021-05-14 10:57:34 +02:00
nm-dcb.c platform: move more platform code to src/libnm-platform/ 2021-03-05 11:27:16 +01:00
nm-dcb.h all: move "src/" directory to "src/core/" 2021-02-08 09:56:41 +01:00
nm-default-daemon.h build: move "shared/nm-{glib-aux,log-null,log-core}" to "src/libnm-{glib-aux,log-null,log-core}" 2021-02-24 12:48:20 +01:00
nm-dhcp-config.c core: drop deprecated PropertiesChanged D-Bus signal (API BREAK) 2021-05-14 10:57:34 +02:00
nm-dhcp-config.h all: move "src/" directory to "src/core/" 2021-02-08 09:56:41 +01:00
nm-dispatcher.c all: use nm_g_variant_new_au() helper 2021-04-16 11:44:20 +02:00
nm-dispatcher.h all: move "src/" directory to "src/core/" 2021-02-08 09:56:41 +01:00
nm-firewall-utils.c firewall: fix double free 2021-06-15 19:40:59 +02:00
nm-firewall-utils.h firewall: add special firewall-backend "none" 2021-05-14 11:41:33 +02:00
nm-firewalld-manager.c firewall: rename NMFirewallManager to NMFirewalldManager 2021-05-06 12:22:37 +02:00
nm-firewalld-manager.h firewall: rename NMFirewallManager to NMFirewalldManager 2021-05-06 12:22:37 +02:00
nm-hostname-manager.c clang-format: use "IndentPPDirectives:None" instead of "BeforeHash" 2021-07-09 08:49:06 +02:00
nm-hostname-manager.h core,glib-aux: move nm_hostname_manager_validate_hostname() to shared-utils 2021-06-28 14:32:05 +02:00
nm-iface-helper.c clang-format: use "IndentPPDirectives:None" instead of "BeforeHash" 2021-07-09 08:49:06 +02:00
nm-ip-config.c all: add "src/core/nm-default-daemon.h" as replacement for "nm-default.h" 2021-02-09 12:38:18 +01:00
nm-ip-config.h all: move "src/" directory to "src/core/" 2021-02-08 09:56:41 +01:00
nm-ip4-config.c core: add nm_ip_config_find_first_address() 2021-06-21 10:08:27 +02:00
nm-ip4-config.h clang-format: use "IndentPPDirectives:None" instead of "BeforeHash" 2021-07-09 08:49:06 +02:00
nm-ip6-config.c core: add nm_ip_config_find_first_address() 2021-06-21 10:08:27 +02:00
nm-ip6-config.h core: add nm_ip_config_find_first_address() 2021-06-21 10:08:27 +02:00
nm-keep-alive.c build: move "shared/nm-{glib-aux,log-null,log-core}" to "src/libnm-{glib-aux,log-null,log-core}" 2021-02-24 12:48:20 +01:00
nm-keep-alive.h all: move "src/" directory to "src/core/" 2021-02-08 09:56:41 +01:00
nm-l3-config-data.c l3cfg: use NMRefString for strings in NML3ConfigData 2021-05-27 09:56:45 +02:00
nm-l3-config-data.h l3cfg: add proxy properties to NML3ConfigData 2021-05-27 09:56:44 +02:00
nm-l3-ipv4ll.c all: add "src/core/nm-default-daemon.h" as replacement for "nm-default.h" 2021-02-09 12:38:18 +01:00
nm-l3-ipv4ll.h all: move "src/" directory to "src/core/" 2021-02-08 09:56:41 +01:00
nm-l3cfg.c l3cfg: minor adjustments for L3Cfg code 2021-05-27 10:06:44 +02:00
nm-l3cfg.h l3cfg: minor adjustments for L3Cfg code 2021-05-27 10:06:44 +02:00
nm-manager.c core: add nm_settings_get_connection_sorted_by_autoconnect_priority() 2021-06-17 17:48:13 +02:00
nm-manager.h all: move "src/" directory to "src/core/" 2021-02-08 09:56:41 +01:00
nm-netns.c glib-aux/trivial: rename nm_{pint,puint32}_equals() to nm_\1_equal() 2021-05-27 09:56:40 +02:00
nm-netns.h platform: move more platform code to src/libnm-platform/ 2021-03-05 11:27:16 +01:00
nm-pacrunner-manager.c l3cfg: add proxy properties to NML3ConfigData 2021-05-27 09:56:44 +02:00
nm-pacrunner-manager.h all: move "src/" directory to "src/core/" 2021-02-08 09:56:41 +01:00
nm-policy.c policy: prefer IPv4 to determine the hostname 2021-06-21 08:53:42 +02:00
nm-policy.h all: move "src/" directory to "src/core/" 2021-02-08 09:56:41 +01:00
nm-proxy-config.c build: move "libnm-core/" to "src/" and split it 2021-02-18 19:46:51 +01:00
nm-proxy-config.h l3cfg: add proxy properties to NML3ConfigData 2021-05-27 09:56:44 +02:00
nm-rfkill-manager.c build: move "shared/nm-{base,udev-aux}" to "src/libnm-{base,udev-aux}" 2021-02-24 12:48:19 +01:00
nm-rfkill-manager.h all: move "src/" directory to "src/core/" 2021-02-08 09:56:41 +01:00
nm-session-monitor.c clang-format: use "IndentPPDirectives:None" instead of "BeforeHash" 2021-07-09 08:49:06 +02:00
nm-session-monitor.h all: move "src/" directory to "src/core/" 2021-02-08 09:56:41 +01:00
nm-sleep-monitor.c clang-format: use "IndentPPDirectives:None" instead of "BeforeHash" 2021-07-09 08:49:06 +02:00
nm-sleep-monitor.h all: move "src/" directory to "src/core/" 2021-02-08 09:56:41 +01:00
nm-test-utils-core.h clang-format: use "IndentPPDirectives:None" instead of "BeforeHash" 2021-07-09 08:49:06 +02:00
nm-types.h clang-format: use "IndentPPDirectives:None" instead of "BeforeHash" 2021-07-09 08:49:06 +02:00
org.freedesktop.NetworkManager.conf all: move "src/" directory to "src/core/" 2021-02-08 09:56:41 +01:00