diff options
Diffstat (limited to 'src')
34 files changed, 335 insertions, 298 deletions
diff --git a/src/basic/creds-util.h b/src/basic/creds-util.h index 5e33ca3776..7310249424 100644 --- a/src/basic/creds-util.h +++ b/src/basic/creds-util.h @@ -5,6 +5,10 @@ #include <stdbool.h> #include <sys/types.h> +#include "fd-util.h" + +#define CREDENTIAL_NAME_MAX FDNAME_MAX + bool credential_name_valid(const char *s); int get_credentials_dir(const char **ret); diff --git a/src/basic/fd-util.c b/src/basic/fd-util.c index d63f012ad5..1a873601b2 100644 --- a/src/basic/fd-util.c +++ b/src/basic/fd-util.c @@ -454,7 +454,7 @@ bool fdname_is_valid(const char *s) { return false; } - return p - s < 256; + return p - s <= FDNAME_MAX; } int fd_get_path(int fd, char **ret) { diff --git a/src/basic/fd-util.h b/src/basic/fd-util.h index f05c2b5a15..aa8e082b38 100644 --- a/src/basic/fd-util.h +++ b/src/basic/fd-util.h @@ -8,6 +8,9 @@ #include "macro.h" +/* maximum length of fdname */ +#define FDNAME_MAX 255 + /* Make sure we can distinguish fd 0 and NULL */ #define FD_TO_PTR(fd) INT_TO_PTR((fd)+1) #define PTR_TO_FD(p) (PTR_TO_INT(p)-1) diff --git a/src/boot/efi/meson.build b/src/boot/efi/meson.build index ab5530bec1..26e6dc79fc 100644 --- a/src/boot/efi/meson.build +++ b/src/boot/efi/meson.build @@ -224,6 +224,7 @@ if have_gnu_efi '-Bsymbolic', '-nostdlib', '-znocombreloc', + '--build-id=sha1', '-L', efi_libdir, efi_crt0] if ['aarch64', 'arm', 'riscv64'].contains(efi_arch) @@ -254,24 +255,22 @@ if have_gnu_efi libgcc_file_name = run_command(efi_cc + ['-print-libgcc-file-name']).stdout().strip() systemd_boot_efi_name = 'systemd-boot@0@.efi'.format(EFI_MACHINE_TYPE_NAME) + stub_elf_name = 'linux@0@.elf.stub'.format(EFI_MACHINE_TYPE_NAME) stub_efi_name = 'linux@0@.efi.stub'.format(EFI_MACHINE_TYPE_NAME) no_undefined_symbols = find_program('no-undefined-symbols.sh') - foreach tuple : [['systemd_boot.so', systemd_boot_efi_name, systemd_boot_objects], - ['stub.so', stub_efi_name, stub_objects]] + efi_stubs = [] + foreach tuple : [['systemd_boot.so', systemd_boot_efi_name, systemd_boot_objects, false], + [stub_elf_name, stub_efi_name, stub_objects, true]] so = custom_target( tuple[0], input : tuple[2], output : tuple[0], - command : [efi_ld, '-o', '@OUTPUT@'] + - efi_ldflags + tuple[2] + - ['-lefi', '-lgnuefi', libgcc_file_name]) - - if want_tests != 'false' - test('no-undefined-symbols-' + tuple[0], - no_undefined_symbols, - args : [so]) - endif + command : [efi_ld, '-o', '@OUTPUT@', + efi_ldflags, tuple[2], + '-lefi', '-lgnuefi', libgcc_file_name], + install : tuple[3], + install_dir : bootlibdir) stub = custom_target( tuple[1], @@ -284,22 +283,26 @@ if have_gnu_efi '-j', '.data', '-j', '.dynamic', '-j', '.dynsym', - '-j', '.rel*'] - + efi_format + - ['@INPUT@', '@OUTPUT@'], + '-j', '.rel*', + efi_format, + '@INPUT@', '@OUTPUT@'], install : true, install_dir : bootlibdir) - set_variable(tuple[0].underscorify(), so) - set_variable(tuple[0].underscorify() + '_stub', stub) + efi_stubs += [[so, stub]] + + if want_tests != 'false' + test('no-undefined-symbols-' + tuple[0], + no_undefined_symbols, + args : so) + endif endforeach ############################################################ test_efi_disk_img = custom_target( 'test-efi-disk.img', - input : [systemd_boot_so, stub_so_stub], + input : [efi_stubs[0][0], efi_stubs[1][1]], output : 'test-efi-disk.img', - command : [test_efi_create_disk_sh, '@OUTPUT@', - '@INPUT0@', '@INPUT1@', splash_bmp]) + command : [test_efi_create_disk_sh, '@OUTPUT@','@INPUT@', splash_bmp]) endif diff --git a/src/core/load-fragment.c b/src/core/load-fragment.c index 2399089492..4eba2d1c02 100644 --- a/src/core/load-fragment.c +++ b/src/core/load-fragment.c @@ -293,15 +293,7 @@ int config_parse_unit_path_printf( assert(rvalue); assert(u); - /* Let's not bother with anything that is too long */ - if (strlen(rvalue) >= PATH_MAX) { - log_syntax(unit, fatal ? LOG_ERR : LOG_WARNING, filename, line, 0, - "%s value too long%s.", - lvalue, fatal ? "" : ", ignoring"); - return fatal ? -ENAMETOOLONG : 0; - } - - r = unit_full_printf(u, rvalue, &k); + r = unit_path_printf(u, rvalue, &k); if (r < 0) { log_syntax(unit, fatal ? LOG_ERR : LOG_WARNING, filename, line, r, "Failed to resolve unit specifiers in '%s'%s: %m", @@ -352,7 +344,7 @@ int config_parse_unit_path_strv_printf( return 0; } - r = unit_full_printf(u, word, &k); + r = unit_path_printf(u, word, &k); if (r < 0) { log_syntax(unit, LOG_WARNING, filename, line, r, "Failed to resolve unit specifiers in '%s', ignoring: %m", word); @@ -433,7 +425,7 @@ int config_parse_socket_listen( if (ltype != SOCKET_SOCKET) { _cleanup_free_ char *k = NULL; - r = unit_full_printf(UNIT(s), rvalue, &k); + r = unit_path_printf(UNIT(s), rvalue, &k); if (r < 0) { log_syntax(unit, LOG_WARNING, filename, line, r, "Failed to resolve unit specifiers in '%s', ignoring: %m", rvalue); return 0; @@ -455,7 +447,7 @@ int config_parse_socket_listen( } else if (streq(lvalue, "ListenNetlink")) { _cleanup_free_ char *k = NULL; - r = unit_full_printf(UNIT(s), rvalue, &k); + r = unit_path_printf(UNIT(s), rvalue, &k); if (r < 0) { log_syntax(unit, LOG_WARNING, filename, line, r, "Failed to resolve unit specifiers in '%s', ignoring: %m", rvalue); return 0; @@ -472,7 +464,7 @@ int config_parse_socket_listen( } else { _cleanup_free_ char *k = NULL; - r = unit_full_printf(UNIT(s), rvalue, &k); + r = unit_path_printf(UNIT(s), rvalue, &k); if (r < 0) { log_syntax(unit, LOG_WARNING, filename, line, r, "Failed to resolve unit specifiers in '%s', ignoring: %m", rvalue); return 0; @@ -769,7 +761,7 @@ int config_parse_exec( f++; } - r = unit_full_printf(u, f, &path); + r = unit_path_printf(u, f, &path); if (r < 0) { log_syntax(unit, ignore ? LOG_WARNING : LOG_ERR, filename, line, r, "Failed to resolve unit specifiers in '%s'%s: %m", @@ -856,7 +848,7 @@ int config_parse_exec( if (r < 0) return ignore ? 0 : -ENOEXEC; - r = unit_full_printf(u, word, &resolved); + r = unit_path_printf(u, word, &resolved); if (r < 0) { log_syntax(unit, ignore ? LOG_WARNING : LOG_ERR, filename, line, r, "Failed to resolve unit specifiers in %s%s: %m", @@ -956,7 +948,7 @@ int config_parse_exec_input( if (n) { _cleanup_free_ char *resolved = NULL; - r = unit_full_printf(u, n, &resolved); + r = unit_fd_printf(u, n, &resolved); if (r < 0) { log_syntax(unit, LOG_WARNING, filename, line, r, "Failed to resolve unit specifiers in '%s', ignoring: %m", n); return 0; @@ -976,7 +968,7 @@ int config_parse_exec_input( } else if ((n = startswith(rvalue, "file:"))) { _cleanup_free_ char *resolved = NULL; - r = unit_full_printf(u, n, &resolved); + r = unit_path_printf(u, n, &resolved); if (r < 0) { log_syntax(unit, LOG_WARNING, filename, line, r, "Failed to resolve unit specifiers in '%s', ignoring: %m", n); return 0; @@ -1040,7 +1032,7 @@ int config_parse_exec_input_text( return 0; } - r = unit_full_printf(u, unescaped, &resolved); + r = unit_full_printf_full(u, unescaped, EXEC_STDIN_DATA_MAX, &resolved); if (r < 0) { log_syntax(unit, LOG_WARNING, filename, line, r, "Failed to resolve unit specifiers in '%s', ignoring: %m", unescaped); @@ -1155,7 +1147,7 @@ int config_parse_exec_output( n = startswith(rvalue, "fd:"); if (n) { - r = unit_full_printf(u, n, &resolved); + r = unit_fd_printf(u, n, &resolved); if (r < 0) { log_syntax(unit, LOG_WARNING, filename, line, r, "Failed to resolve unit specifiers in %s: %m", n); return 0; @@ -1180,7 +1172,7 @@ int config_parse_exec_output( } else if ((n = startswith(rvalue, "file:"))) { - r = unit_full_printf(u, n, &resolved); + r = unit_path_printf(u, n, &resolved); if (r < 0) { log_syntax(unit, LOG_WARNING, filename, line, r, "Failed to resolve unit specifiers in %s, ignoring: %m", n); return 0; @@ -1194,7 +1186,7 @@ int config_parse_exec_output( } else if ((n = startswith(rvalue, "append:"))) { - r = unit_full_printf(u, n, &resolved); + r = unit_path_printf(u, n, &resolved); if (r < 0) { log_syntax(unit, LOG_WARNING, filename, line, r, "Failed to resolve unit specifiers in %s, ignoring: %m", n); return 0; @@ -1208,7 +1200,7 @@ int config_parse_exec_output( } else if ((n = startswith(rvalue, "truncate:"))) { - r = unit_full_printf(u, n, &resolved); + r = unit_path_printf(u, n, &resolved); if (r < 0) { log_syntax(unit, LOG_WARNING, filename, line, r, "Failed to resolve unit specifiers in %s, ignoring: %m", n); return 0; @@ -2080,7 +2072,7 @@ int config_parse_path_spec(const char *unit, return 0; } - r = unit_full_printf(UNIT(p), rvalue, &k); + r = unit_path_printf(UNIT(p), rvalue, &k); if (r < 0) { log_syntax(unit, LOG_WARNING, filename, line, r, "Failed to resolve unit specifiers in %s, ignoring: %m", rvalue); return 0; @@ -2175,7 +2167,7 @@ int config_parse_fdname( return 0; } - r = unit_full_printf(UNIT(s), rvalue, &p); + r = unit_fd_printf(UNIT(s), rvalue, &p); if (r < 0) { log_syntax(unit, LOG_WARNING, filename, line, r, "Failed to resolve unit specifiers in '%s', ignoring: %m", rvalue); return 0; @@ -2264,7 +2256,7 @@ int config_parse_bus_name( assert(rvalue); assert(u); - r = unit_full_printf(u, rvalue, &k); + r = unit_full_printf_full(u, rvalue, SD_BUS_MAXIMUM_NAME_LENGTH, &k); if (r < 0) { log_syntax(unit, LOG_WARNING, filename, line, r, "Failed to resolve unit specifiers in %s, ignoring: %m", rvalue); return 0; @@ -2557,7 +2549,7 @@ int config_parse_working_directory( } else { _cleanup_free_ char *k = NULL; - r = unit_full_printf(u, rvalue, &k); + r = unit_path_printf(u, rvalue, &k); if (r < 0) { log_syntax(unit, missing_ok ? LOG_WARNING : LOG_ERR, filename, line, r, "Failed to resolve unit specifiers in working directory path '%s'%s: %m", @@ -2604,7 +2596,7 @@ int config_parse_unit_env_file(const char *unit, return 0; } - r = unit_full_printf(u, rvalue, &n); + r = unit_full_printf_full(u, rvalue, PATH_MAX, &n); if (r < 0) { log_syntax(unit, LOG_WARNING, filename, line, r, "Failed to resolve unit specifiers in '%s', ignoring: %m", rvalue); return 0; @@ -2665,7 +2657,7 @@ int config_parse_environ( return 0; if (u) { - r = unit_full_printf(u, word, &resolved); + r = unit_env_printf(u, word, &resolved); if (r < 0) { log_syntax(unit, LOG_WARNING, filename, line, r, "Failed to resolve unit specifiers in %s, ignoring: %m", word); @@ -2730,7 +2722,7 @@ int config_parse_pass_environ( break; if (u) { - r = unit_full_printf(u, word, &k); + r = unit_env_printf(u, word, &k); if (r < 0) { log_syntax(unit, LOG_WARNING, filename, line, r, "Failed to resolve specifiers in %s, ignoring: %m", word); @@ -2805,7 +2797,7 @@ int config_parse_unset_environ( break; if (u) { - r = unit_full_printf(u, word, &k); + r = unit_env_printf(u, word, &k); if (r < 0) { log_syntax(unit, LOG_WARNING, filename, line, r, "Failed to resolve unit specifiers in %s, ignoring: %m", word); @@ -2932,7 +2924,7 @@ int config_parse_log_namespace( return 0; } - r = unit_full_printf(u, rvalue, &k); + r = unit_full_printf_full(u, rvalue, NAME_MAX, &k); if (r < 0) { log_syntax(unit, LOG_WARNING, filename, line, r, "Failed to resolve unit specifiers in %s, ignoring: %m", rvalue); return 0; @@ -2985,7 +2977,7 @@ int config_parse_unit_condition_path( if (negate) rvalue++; - r = unit_full_printf(u, rvalue, &p); + r = unit_path_printf(u, rvalue, &p); if (r < 0) { log_syntax(unit, LOG_WARNING, filename, line, r, "Failed to resolve unit specifiers in %s, ignoring: %m", rvalue); return 0; @@ -3090,7 +3082,7 @@ int config_parse_unit_requires_mounts_for( if (r == 0) return 0; - r = unit_full_printf(u, word, &resolved); + r = unit_path_printf(u, word, &resolved); if (r < 0) { log_syntax(unit, LOG_WARNING, filename, line, r, "Failed to resolve unit specifiers in '%s', ignoring: %m", word); continue; @@ -3960,7 +3952,7 @@ int config_parse_device_allow( return 0; } - r = unit_full_printf(userdata, path, &resolved); + r = unit_path_printf(userdata, path, &resolved); if (r < 0) { log_syntax(unit, LOG_WARNING, filename, line, r, "Failed to resolve unit specifiers in '%s', ignoring: %m", path); @@ -4026,7 +4018,7 @@ int config_parse_io_device_weight( return 0; } - r = unit_full_printf(userdata, path, &resolved); + r = unit_path_printf(userdata, path, &resolved); if (r < 0) { log_syntax(unit, LOG_WARNING, filename, line, r, "Failed to resolve unit specifiers in '%s', ignoring: %m", path); @@ -4095,7 +4087,7 @@ int config_parse_io_device_latency( return 0; } - r = unit_full_printf(userdata, path, &resolved); + r = unit_path_printf(userdata, path, &resolved); if (r < 0) { log_syntax(unit, LOG_WARNING, filename, line, r, "Failed to resolve unit specifiers in '%s', ignoring: %m", path); @@ -4165,7 +4157,7 @@ int config_parse_io_limit( return 0; } - r = unit_full_printf(userdata, path, &resolved); + r = unit_path_printf(userdata, path, &resolved); if (r < 0) { log_syntax(unit, LOG_WARNING, filename, line, r, "Failed to resolve unit specifiers in '%s', ignoring: %m", path); @@ -4251,7 +4243,7 @@ int config_parse_blockio_device_weight( return 0; } - r = unit_full_printf(userdata, path, &resolved); + r = unit_path_printf(userdata, path, &resolved); if (r < 0) { log_syntax(unit, LOG_WARNING, filename, line, r, "Failed to resolve unit specifiers in '%s', ignoring: %m", path); @@ -4324,7 +4316,7 @@ int config_parse_blockio_bandwidth( return 0; } - r = unit_full_printf(userdata, path, &resolved); + r = unit_path_printf(userdata, path, &resolved); if (r < 0) { log_syntax(unit, LOG_WARNING, filename, line, r, "Failed to resolve unit specifiers in '%s', ignoring: %m", path); @@ -4440,7 +4432,7 @@ int config_parse_exec_directories( if (r == 0) return 0; - r = unit_full_printf(u, word, &k); + r = unit_path_printf(u, word, &k); if (r < 0) { log_syntax(unit, LOG_WARNING, filename, line, r, "Failed to resolve unit specifiers in \"%s\", ignoring: %m", word); @@ -4503,7 +4495,7 @@ int config_parse_set_credential( return 0; } - r = unit_full_printf(u, word, &k); + r = unit_cred_printf(u, word, &k); if (r < 0) { log_syntax(unit, LOG_WARNING, filename, line, r, "Failed to resolve unit specifiers in \"%s\", ignoring: %m", word); return 0; @@ -4588,7 +4580,7 @@ int config_parse_load_credential( return 0; } - r = unit_full_printf(u, word, &k); + r = unit_cred_printf(u, word, &k); if (r < 0) { log_syntax(unit, LOG_WARNING, filename, line, r, "Failed to resolve unit specifiers in \"%s\", ignoring: %m", word); return 0; @@ -4605,7 +4597,7 @@ int config_parse_load_credential( if (!q) return log_oom(); } else { - r = unit_full_printf(u, p, &q); + r = unit_path_printf(u, p, &q); if (r < 0) { log_syntax(unit, LOG_WARNING, filename, line, r, "Failed to resolve unit specifiers in \"%s\", ignoring: %m", p); return 0; @@ -4740,7 +4732,7 @@ int config_parse_namespace_path_strv( w++; } - r = unit_full_printf(u, w, &resolved); + r = unit_path_printf(u, w, &resolved); if (r < 0) { log_syntax(unit, LOG_WARNING, filename, line, r, "Failed to resolve unit specifiers in %s: %m", w); continue; @@ -4820,7 +4812,7 @@ int config_parse_temporary_filesystems( continue; } - r = unit_full_printf(u, path, &resolved); + r = unit_path_printf(u, path, &resolved); if (r < 0) { log_syntax(unit, LOG_WARNING, filename, line, r, "Failed to resolve unit specifiers in %s, ignoring: %m", path); continue; @@ -4881,7 +4873,7 @@ int config_parse_bind_paths( if (r == 0) break; - r = unit_full_printf(u, source, &sresolved); + r = unit_full_printf_full(u, source, PATH_MAX, &sresolved); if (r < 0) { log_syntax(unit, LOG_WARNING, filename, line, r, "Failed to resolve unit specifiers in \"%s\", ignoring: %m", source); @@ -4912,7 +4904,7 @@ int config_parse_bind_paths( continue; } - r = unit_full_printf(u, destination, &dresolved); + r = unit_path_printf(u, destination, &dresolved); if (r < 0) { log_syntax(unit, LOG_WARNING, filename, line, r, "Failed to resolve specifiers in \"%s\", ignoring: %m", destination); @@ -5028,7 +5020,7 @@ int config_parse_mount_images( s++; } - r = unit_full_printf(u, s, &sresolved); + r = unit_path_printf(u, s, &sresolved); if (r < 0) { log_syntax(unit, LOG_WARNING, filename, line, r, "Failed to resolve unit specifiers in \"%s\", ignoring: %m", s); @@ -5044,7 +5036,7 @@ int config_parse_mount_images( continue; } - r = unit_full_printf(u, second, &dresolved); + r = unit_path_printf(u, second, &dresolved); if (r < 0) { log_syntax(unit, LOG_WARNING, filename, line, r, "Failed to resolve specifiers in \"%s\", ignoring: %m", second); @@ -5187,7 +5179,7 @@ int config_parse_extension_images( s++; } - r = unit_full_printf(u, s, &sresolved); + r = unit_path_printf(u, s, &sresolved); if (r < 0) { log_syntax(unit, LOG_WARNING, filename, line, r, "Failed to resolve unit specifiers in \"%s\", ignoring: %m", s); @@ -5416,7 +5408,7 @@ int config_parse_pid_file( return 0; } - r = unit_full_printf(u, rvalue, &k); + r = unit_path_printf(u, rvalue, &k); if (r < 0) { log_syntax(unit, LOG_WARNING, filename, line, r, "Failed to resolve unit specifiers in '%s', ignoring: %m", rvalue); return 0; @@ -5537,7 +5529,7 @@ int config_parse_ip_filter_bpf_progs( return 0; } - r = unit_full_printf(u, rvalue, &resolved); + r = unit_path_printf(u, rvalue, &resolved); if (r < 0) { log_syntax(unit, LOG_WARNING, filename, line, r, "Failed to resolve unit specifiers in '%s', ignoring: %m", rvalue); return 0; @@ -5611,7 +5603,7 @@ int config_parse_bpf_foreign_program( return 0; } - r = unit_full_printf(u, rvalue, &resolved); + r = unit_path_printf(u, rvalue, &resolved); if (r < 0) { log_syntax(unit, LOG_WARNING, filename, line, r, "Failed to resolve unit specifiers in '%s', ignoring: %m", rvalue); return 0; diff --git a/src/core/unit-printf.c b/src/core/unit-printf.c index 8e50a81b97..ee8b0b3de8 100644 --- a/src/core/unit-printf.c +++ b/src/core/unit-printf.c @@ -201,10 +201,10 @@ int unit_name_printf(const Unit *u, const char* format, char **ret) { assert(format); assert(ret); - return specifier_printf(format, table, u, ret); + return specifier_printf(format, UNIT_NAME_MAX, table, u, ret); } -int unit_full_printf(const Unit *u, const char *format, char **ret) { +int unit_full_printf_full(const Unit *u, const char *format, size_t max_length, char **ret) { /* This is similar to unit_name_printf() but also supports unescaping. Also, adds a couple of additional codes * (which are likely not suitable for unescaped inclusion in unit names): * @@ -265,5 +265,5 @@ int unit_full_printf(const Unit *u, const char *format, char **ret) { {} }; - return specifier_printf(format, table, u, ret); + return specifier_printf(format, max_length, table, u, ret); } diff --git a/src/core/unit-printf.h b/src/core/unit-printf.h index de5183c113..2df07db26d 100644 --- a/src/core/unit-printf.h +++ b/src/core/unit-printf.h @@ -1,7 +1,26 @@ /* SPDX-License-Identifier: LGPL-2.1-or-later */ #pragma once +#include "creds-util.h" +#include "env-util.h" +#include "fd-util.h" +#include "fileio.h" #include "unit.h" int unit_name_printf(const Unit *u, const char* text, char **ret); -int unit_full_printf(const Unit *u, const char *text, char **ret); +int unit_full_printf_full(const Unit *u, const char *text, size_t max_length, char **ret); +static inline int unit_full_printf(const Unit *u, const char *text, char **ret) { + return unit_full_printf_full(u, text, LONG_LINE_MAX, ret); +} +static inline int unit_path_printf(const Unit *u, const char *text, char **ret) { + return unit_full_printf_full(u, text, PATH_MAX-1, ret); +} +static inline int unit_fd_printf(const Unit *u, const char *text, char **ret) { + return unit_full_printf_full(u, text, FDNAME_MAX, ret); +} +static inline int unit_cred_printf(const Unit *u, const char *text, char **ret) { + return unit_full_printf_full(u, text, CREDENTIAL_NAME_MAX, ret); +} +static inline int unit_env_printf(const Unit *u, const char *text, char **ret) { + return unit_full_printf_full(u, text, sc_arg_max(), ret); +} diff --git a/src/libsystemd-network/network-internal.h b/src/libsystemd-network/network-internal.h index 9e7a67cbe3..e5b853c0cd 100644 --- a/src/libsystemd-network/network-internal.h +++ b/src/libsystemd-network/network-internal.h @@ -27,5 +27,5 @@ int deserialize_dhcp_routes(struct sd_dhcp_route **ret, size_t *ret_size, size_t /* It is not necessary to add deserialize_dhcp_option(). Use unhexmem() instead. */ int serialize_dhcp_option(FILE *f, const char *key, const void *data, size_t size); -int dhcp_lease_save(const sd_dhcp_lease *lease, const char *lease_file); +int dhcp_lease_save(sd_dhcp_lease *lease, const char *lease_file); int dhcp_lease_load(sd_dhcp_lease **ret, const char *lease_file); diff --git a/src/libsystemd-network/sd-dhcp-client.c b/src/libsystemd-network/sd-dhcp-client.c index 11492bca97..a15ff8af33 100644 --- a/src/libsystemd-network/sd-dhcp-client.c +++ b/src/libsystemd-network/sd-dhcp-client.c @@ -2052,7 +2052,7 @@ int sd_dhcp_client_send_renew(sd_dhcp_client *client) { return client_initialize_time_events(client); } -int sd_dhcp_client_is_running(const sd_dhcp_client *client) { +int sd_dhcp_client_is_running(sd_dhcp_client *client) { if (!client) return 0; diff --git a/src/libsystemd-network/sd-dhcp-lease.c b/src/libsystemd-network/sd-dhcp-lease.c index 37e37ef780..6d88c88e6b 100644 --- a/src/libsystemd-network/sd-dhcp-lease.c +++ b/src/libsystemd-network/sd-dhcp-lease.c @@ -31,7 +31,7 @@ #include "tmpfile-util.h" #include "unaligned.h" -int sd_dhcp_lease_get_address(const sd_dhcp_lease *lease, struct in_addr *addr) { +int sd_dhcp_lease_get_address(sd_dhcp_lease *lease, struct in_addr *addr) { assert_return(lease, -EINVAL); assert_return(addr, -EINVAL); @@ -42,7 +42,7 @@ int sd_dhcp_lease_get_address(const sd_dhcp_lease *lease, struct in_addr *addr) return 0; } -int sd_dhcp_lease_get_broadcast(const sd_dhcp_lease *lease, struct in_addr *addr) { +int sd_dhcp_lease_get_broadcast(sd_dhcp_lease *lease, struct in_addr *addr) { assert_return(lease, -EINVAL); assert_return(addr, -EINVAL); @@ -53,7 +53,7 @@ int sd_dhcp_lease_get_broadcast(const sd_dhcp_lease *lease, struct in_addr *addr return 0; } -int sd_dhcp_lease_get_lifetime(const sd_dhcp_lease *lease, uint32_t *lifetime) { +int sd_dhcp_lease_get_lifetime(sd_dhcp_lease *lease, uint32_t *lifetime) { assert_return(lease, -EINVAL); assert_return(lifetime, -EINVAL); @@ -64,7 +64,7 @@ int sd_dhcp_lease_get_lifetime(const sd_dhcp_lease *lease, uint32_t *lifetime) { return 0; } -int sd_dhcp_lease_get_t1(const sd_dhcp_lease *lease, uint32_t *t1) { +int sd_dhcp_lease_get_t1(sd_dhcp_lease *lease, uint32_t *t1) { assert_return(lease, -EINVAL); assert_return(t1, -EINVAL); @@ -75,7 +75,7 @@ int sd_dhcp_lease_get_t1(const sd_dhcp_lease *lease, uint32_t *t1) { return 0; } -int sd_dhcp_lease_get_t2(const sd_dhcp_lease *lease, uint32_t *t2) { +int sd_dhcp_lease_get_t2(sd_dhcp_lease *lease, uint32_t *t2) { assert_return(lease, -EINVAL); assert_return(t2, -EINVAL); @@ -86,7 +86,7 @@ int sd_dhcp_lease_get_t2(const sd_dhcp_lease *lease, uint32_t *t2) { return 0; } -int sd_dhcp_lease_get_mtu(const sd_dhcp_lease *lease, uint16_t *mtu) { +int sd_dhcp_lease_get_mtu(sd_dhcp_lease *lease, uint16_t *mtu) { assert_return(lease, -EINVAL); assert_return(mtu, -EINVAL); @@ -98,7 +98,7 @@ int sd_dhcp_lease_get_mtu(const sd_dhcp_lease *lease, uint16_t *mtu) { } int sd_dhcp_lease_get_servers( - const sd_dhcp_lease *lease, + sd_dhcp_lease *lease, sd_dhcp_lease_server_type_t what, const struct in_addr **addr) { @@ -114,26 +114,26 @@ int sd_dhcp_lease_get_servers( return (int) lease->servers[what].size; } -int sd_dhcp_lease_get_dns(const sd_dhcp_lease *lease, const struct in_addr **addr) { +int sd_dhcp_lease_get_dns(sd_dhcp_lease *lease, const struct in_addr **addr) { return sd_dhcp_lease_get_servers(lease, SD_DHCP_LEASE_DNS, addr); } -int sd_dhcp_lease_get_ntp(const sd_dhcp_lease *lease, const struct in_addr **addr) { +int sd_dhcp_lease_get_ntp(sd_dhcp_lease *lease, const struct in_addr **addr) { return sd_dhcp_lease_get_servers(lease, SD_DHCP_LEASE_NTP, addr); } -int sd_dhcp_lease_get_sip(const sd_dhcp_lease *lease, const struct in_addr **addr) { +int sd_dhcp_lease_get_sip(sd_dhcp_lease *lease, const struct in_addr **addr) { return sd_dhcp_lease_get_servers(lease, SD_DHCP_LEASE_SIP, addr); } -int sd_dhcp_lease_get_pop3(const sd_dhcp_lease *lease, const struct in_addr **addr) { +int sd_dhcp_lease_get_pop3(sd_dhcp_lease *lease, const struct in_addr **addr) { return sd_dhcp_lease_get_servers(lease, SD_DHCP_LEASE_POP3, addr); } -int sd_dhcp_lease_get_smtp(const sd_dhcp_lease *lease, const struct in_addr **addr) { +int sd_dhcp_lease_get_smtp(sd_dhcp_lease *lease, const struct in_addr **addr) { return sd_dhcp_lease_get_servers(lease, SD_DHCP_LEASE_SMTP, addr); } -int sd_dhcp_lease_get_lpr(const sd_dhcp_lease *lease, const struct in_addr **addr) { +int sd_dhcp_lease_get_lpr(sd_dhcp_lease *lease, const struct in_addr **addr) { return sd_dhcp_lease_get_servers(lease, SD_DHCP_LEASE_LPR, addr); } -int sd_dhcp_lease_get_domainname(const sd_dhcp_lease *lease, const char **domainname) { +int sd_dhcp_lease_get_domainname(sd_dhcp_lease *lease, const char **domainname) { assert_return(lease, -EINVAL); assert_return(domainname, -EINVAL); @@ -144,7 +144,7 @@ int sd_dhcp_lease_get_domainname(const sd_dhcp_lease *lease, const char **domain return 0; } -int sd_dhcp_lease_get_hostname(const sd_dhcp_lease *lease, const char **hostname) { +int sd_dhcp_lease_get_hostname(sd_dhcp_lease *lease, const char **hostname) { assert_return(lease, -EINVAL); assert_return(hostname, -EINVAL); @@ -155,7 +155,7 @@ int sd_dhcp_lease_get_hostname(const sd_dhcp_lease *lease, const char **hostname return 0; } -int sd_dhcp_lease_get_root_path(const sd_dhcp_lease *lease, const char **root_path) { +int sd_dhcp_lease_get_root_path(sd_dhcp_lease *lease, const char **root_path) { assert_return(lease, -EINVAL); assert_return(root_path, -EINVAL); @@ -166,7 +166,7 @@ int sd_dhcp_lease_get_root_path(const sd_dhcp_lease *lease, const char **root_pa return 0; } -int sd_dhcp_lease_get_router(const sd_dhcp_lease *lease, const struct in_addr **addr) { +int sd_dhcp_lease_get_router(sd_dhcp_lease *lease, const struct in_addr **addr) { assert_return(lease, -EINVAL); assert_return(addr, -EINVAL); @@ -177,7 +177,7 @@ int sd_dhcp_lease_get_router(const sd_dhcp_lease *lease, const struct in_addr ** return (int) lease->router_size; } -int sd_dhcp_lease_get_netmask(const sd_dhcp_lease *lease, struct in_addr *addr) { +int sd_dhcp_lease_get_netmask(sd_dhcp_lease *lease, struct in_addr *addr) { assert_return(lease, -EINVAL); assert_return(addr, -EINVAL); @@ -188,7 +188,7 @@ int sd_dhcp_lease_get_netmask(const sd_dhcp_lease *lease, struct in_addr *addr) return 0; } -int sd_dhcp_lease_get_server_identifier(const sd_dhcp_lease *lease, struct in_addr *addr) { +int sd_dhcp_lease_get_server_identifier(sd_dhcp_lease *lease, struct in_addr *addr) { assert_return(lease, -EINVAL); assert_return(addr, -EINVAL); @@ -199,7 +199,7 @@ int sd_dhcp_lease_get_server_identifier(const sd_dhcp_lease *lease, struct in_ad return 0; } -int sd_dhcp_lease_get_next_server(const sd_dhcp_lease *lease, struct in_addr *addr) { +int sd_dhcp_lease_get_next_server(sd_dhcp_lease *lease, struct in_addr *addr) { assert_return(lease, -EINVAL); assert_return(addr, -EINVAL); @@ -214,7 +214,7 @@ int sd_dhcp_lease_get_next_server(const sd_dhcp_lease *lease, struct in_addr *ad * The returned routes array must be freed by the caller. * Route objects have the same lifetime of the lease and must not be freed. */ -int sd_dhcp_lease_get_routes(const sd_dhcp_lease *lease, sd_dhcp_route ***routes) { +int sd_dhcp_lease_get_routes(sd_dhcp_lease *lease, sd_dhcp_route ***routes) { sd_dhcp_route **ret; unsigned i; @@ -235,7 +235,7 @@ int sd_dhcp_lease_get_routes(const sd_dhcp_lease *lease, sd_dhcp_route ***routes return (int) lease->static_route_size; } -int sd_dhcp_lease_get_search_domains(const sd_dhcp_lease *lease, char ***domains) { +int sd_dhcp_lease_get_search_domains(sd_dhcp_lease *lease, char ***domains) { size_t r; assert_return(lease, -EINVAL); @@ -250,7 +250,7 @@ int sd_dhcp_lease_get_search_domains(const sd_dhcp_lease *lease, char ***domains return -ENODATA; } -int sd_dhcp_lease_get_vendor_specific(const sd_dhcp_lease *lease, const void **data, size_t *data_len) { +int sd_dhcp_lease_get_vendor_specific(sd_dhcp_lease *lease, const void **data, size_t *data_len) { assert_return(lease, -EINVAL); assert_return(data, -EINVAL); assert_return(data_len, -EINVAL); @@ -868,7 +868,7 @@ int dhcp_lease_new(sd_dhcp_lease **ret) { return 0; } -int dhcp_lease_save(const sd_dhcp_lease *lease, const char *lease_file) { +int dhcp_lease_save(sd_dhcp_lease *lease, const char *lease_file) { _cleanup_(unlink_and_freep) char *temp_path = NULL; _cleanup_fclose_ FILE *f = NULL; struct sd_dhcp_raw_option *option; @@ -1313,7 +1313,7 @@ int dhcp_lease_set_default_subnet_mask(sd_dhcp_lease *lease) { return 0; } -int sd_dhcp_lease_get_client_id(const sd_dhcp_lease *lease, const void **client_id, size_t *client_id_len) { +int sd_dhcp_lease_get_client_id(sd_dhcp_lease *lease, const void **client_id, size_t *client_id_len) { assert_return(lease, -EINVAL); assert_return(client_id, -EINVAL); assert_return(client_id_len, -EINVAL); @@ -1348,7 +1348,7 @@ int dhcp_lease_set_client_id(sd_dhcp_lease *lease, const void *client_id, size_t return 0; } -int sd_dhcp_lease_get_timezone(const sd_dhcp_lease *lease, const char **tz) { +int sd_dhcp_lease_get_timezone(sd_dhcp_lease *lease, const char **tz) { assert_return(lease, -EINVAL); assert_return(tz, -EINVAL); @@ -1359,7 +1359,7 @@ int sd_dhcp_lease_get_timezone(const sd_dhcp_lease *lease, const char **tz) { return 0; } -int sd_dhcp_route_get_destination(const sd_dhcp_route *route, struct in_addr *destination) { +int sd_dhcp_route_get_destination(sd_dhcp_route *route, struct in_addr *destination) { assert_return(route, -EINVAL); assert_return(destination, -EINVAL); @@ -1367,7 +1367,7 @@ int sd_dhcp_route_get_destination(const sd_dhcp_route *route, struct in_addr *de return 0; } -int sd_dhcp_route_get_destination_prefix_length(const sd_dhcp_route *route, uint8_t *length) { +int sd_dhcp_route_get_destination_prefix_length(sd_dhcp_route *route, uint8_t *length) { assert_return(route, -EINVAL); assert_return(length, -EINVAL); @@ -1375,7 +1375,7 @@ int sd_dhcp_route_get_destination_prefix_length(const sd_dhcp_route *route, uint return 0; } -int sd_dhcp_route_get_gateway(const sd_dhcp_route *route, struct in_addr *gateway) { +int sd_dhcp_route_get_gateway(sd_dhcp_route *route, struct in_addr *gateway) { assert_return(route, -EINVAL); assert_return(gateway, -EINVAL); @@ -1383,7 +1383,7 @@ int sd_dhcp_route_get_gateway(const sd_dhcp_route *route, struct in_addr *gatewa return 0; } -int sd_dhcp_route_get_option(const sd_dhcp_route *route) { +int sd_dhcp_route_get_option(sd_dhcp_route *route) { assert_return(route, -EINVAL); return route->option; diff --git a/src/libsystemd/sd-netlink/generic-netlink.c b/src/libsystemd/sd-netlink/generic-netlink.c index a939d65569..3d1ee585c7 100644 --- a/src/libsystemd/sd-netlink/generic-netlink.c +++ b/src/libsystemd/sd-netlink/generic-netlink.c @@ -152,7 +152,7 @@ int nlmsg_type_to_genl_family(const sd_netlink *nl, uint16_t type, sd_genl_famil return 0; } -int sd_genl_message_get_family(const sd_netlink *nl, const sd_netlink_message *m, sd_genl_family_t *family) { +int sd_genl_message_get_family(sd_netlink *nl, sd_netlink_message *m, sd_genl_family_t *family) { uint16_t type; int r; diff --git a/src/libsystemd/sd-netlink/netlink-message.c b/src/libsystemd/sd-netlink/netlink-message.c index 90915fd155..d7bc1ce14d 100644 --- a/src/libsystemd/sd-netlink/netlink-message.c +++ b/src/libsystemd/sd-netlink/netlink-message.c @@ -114,7 +114,7 @@ sd_netlink_message *sd_netlink_message_unref(sd_netlink_message *m) { return NULL; } -int sd_netlink_message_get_type(const sd_netlink_message *m, uint16_t *type) { +int sd_netlink_message_get_type(sd_netlink_message *m, uint16_t *type) { assert_return(m, -EINVAL); assert_return(type, -EINVAL); @@ -132,7 +132,7 @@ int sd_netlink_message_set_flags(sd_netlink_message *m, uint16_t flags) { return 0; } -int sd_netlink_message_is_broadcast(const sd_netlink_message *m) { +int sd_netlink_message_is_broadcast(sd_netlink_message *m) { assert_return(m, -EINVAL); return m->broadcast; @@ -1235,14 +1235,14 @@ uint32_t rtnl_message_get_serial(sd_netlink_message *m) { return m->hdr->nlmsg_seq; } -int sd_netlink_message_is_error(const sd_netlink_message *m) { +int sd_netlink_message_is_error(sd_netlink_message *m) { assert_return(m, 0); assert_return(m->hdr, 0); return m->hdr->nlmsg_type == NLMSG_ERROR; } -int sd_netlink_message_get_errno(const sd_netlink_message *m) { +int sd_netlink_message_get_errno(sd_netlink_message *m) { struct nlmsgerr *err; assert_return(m, -EINVAL); diff --git a/src/libsystemd/sd-netlink/netlink-slot.c b/src/libsystemd/sd-netlink/netlink-slot.c index fa951bf941..b6de545fe2 100644 --- a/src/libsystemd/sd-netlink/netlink-slot.c +++ b/src/libsystemd/sd-netlink/netlink-slot.c @@ -142,7 +142,7 @@ void *sd_netlink_slot_set_userdata(sd_netlink_slot *slot, void *userdata) { return ret; } -int sd_netlink_slot_get_destroy_callback(const sd_netlink_slot *slot, sd_netlink_destroy_t *callback) { +int sd_netlink_slot_get_destroy_callback(sd_netlink_slot *slot, sd_netlink_destroy_t *callback) { assert_return(slot, -EINVAL); if (callback) @@ -158,7 +158,7 @@ int sd_netlink_slot_set_destroy_callback(sd_netlink_slot *slot, sd_netlink_destr return 0; } -int sd_netlink_slot_get_floating(const sd_netlink_slot *slot) { +int sd_netlink_slot_get_floating(sd_netlink_slot *slot) { assert_return(slot, -EINVAL); return slot->floating; @@ -186,7 +186,7 @@ int sd_netlink_slot_set_floating(sd_netlink_slot *slot, int b) { return 1; } -int sd_netlink_slot_get_description(const sd_netlink_slot *slot, const char **description) { +int sd_netlink_slot_get_description(sd_netlink_slot *slot, const char **description) { assert_return(slot, -EINVAL); if (description) diff --git a/src/libsystemd/sd-netlink/rtnl-message.c b/src/libsystemd/sd-netlink/rtnl-message.c index ead1967258..6b4c213e1e 100644 --- a/src/libsystemd/sd-netlink/rtnl-message.c +++ b/src/libsystemd/sd-netlink/rtnl-message.c @@ -81,7 +81,7 @@ int sd_rtnl_message_route_set_flags(sd_netlink_message *m, unsigned flags) { return 0; } -int sd_rtnl_message_route_get_flags(const sd_netlink_message *m, unsigned *flags) { +int sd_rtnl_message_route_get_flags(sd_netlink_message *m, unsigned *flags) { struct rtmsg *rtm; assert_return(m, -EINVAL); @@ -110,7 +110,7 @@ int sd_rtnl_message_route_set_table(sd_netlink_message *m, unsigned char table) return 0; } -int sd_rtnl_message_route_get_family(const sd_netlink_message *m, int *family) { +int sd_rtnl_message_route_get_family(sd_netlink_message *m, int *family) { struct rtmsg *rtm; assert_return(m, -EINVAL); @@ -125,7 +125,7 @@ int sd_rtnl_message_route_get_family(const sd_netlink_message *m, int *family) { return 0; } -int sd_rtnl_message_route_get_type(const sd_netlink_message *m, unsigned char *type) { +int sd_rtnl_message_route_get_type(sd_netlink_message *m, unsigned char *type) { struct rtmsg *rtm; assert_return(m, -EINVAL); @@ -154,7 +154,7 @@ int sd_rtnl_message_route_set_type(sd_netlink_message *m, unsigned char type) { return 0; } -int sd_rtnl_message_route_get_protocol(const sd_netlink_message *m, unsigned char *protocol) { +int sd_rtnl_message_route_get_protocol(sd_netlink_message *m, unsigned char *protocol) { struct rtmsg *rtm; assert_return(m, -EINVAL); @@ -169,7 +169,7 @@ int sd_rtnl_message_route_get_protocol(const sd_netlink_message *m, unsigned cha return 0; } -int sd_rtnl_message_route_get_scope(const sd_netlink_message *m, unsigned char *scope) { +int sd_rtnl_message_route_get_scope(sd_netlink_message *m, unsigned char *scope) { struct rtmsg *rtm; assert_return(m, -EINVAL); @@ -184,7 +184,7 @@ int sd_rtnl_message_route_get_scope(const sd_netlink_message *m, unsigned char * return 0; } -int sd_rtnl_message_route_get_tos(const sd_netlink_message *m, uint8_t *tos) { +int sd_rtnl_message_route_get_tos(sd_netlink_message *m, uint8_t *tos) { struct rtmsg *rtm; assert_return(m, -EINVAL); @@ -199,7 +199,7 @@ int sd_rtnl_message_route_get_tos(const sd_netlink_message *m, uint8_t *tos) { return 0; } -int sd_rtnl_message_route_get_table(const sd_netlink_message *m, unsigned char *table) { +int sd_rtnl_message_route_get_table(sd_netlink_message *m, unsigned char *table) { struct rtmsg *rtm; assert_return(m, -EINVAL); @@ -214,7 +214,7 @@ int sd_rtnl_message_route_get_table(const sd_netlink_message *m, unsigned char * return 0; } -int sd_rtnl_message_route_get_dst_prefixlen(const sd_netlink_message *m, unsigned char *dst_len) { +int sd_rtnl_message_route_get_dst_prefixlen(sd_netlink_message *m, unsigned char *dst_len) { struct rtmsg *rtm; assert_return(m, -EINVAL); @@ -229,7 +229,7 @@ int sd_rtnl_message_route_get_dst_prefixlen(const sd_netlink_message *m, unsigne return 0; } -int sd_rtnl_message_route_get_src_prefixlen(const sd_netlink_message *m, unsigned char *src_len) { +int sd_rtnl_message_route_get_src_prefixlen(sd_netlink_message *m, unsigned char *src_len) { struct rtmsg *rtm; assert_return(m, -EINVAL); @@ -324,7 +324,7 @@ int sd_rtnl_message_nexthop_set_flags(sd_netlink_message *m, uint8_t flags) { return 0; } -int sd_rtnl_message_nexthop_get_family(const sd_netlink_message *m, uint8_t *family) { +int sd_rtnl_message_nexthop_get_family(sd_netlink_message *m, uint8_t *family) { struct nhmsg *nhm; assert_return(m, -EINVAL); @@ -338,7 +338,7 @@ int sd_rtnl_message_nexthop_get_family(const sd_netlink_message *m, uint8_t *fam return 0; } -int sd_rtnl_message_nexthop_get_protocol(const sd_netlink_message *m, uint8_t *protocol) { +int sd_rtnl_message_nexthop_get_protocol(sd_netlink_message *m, uint8_t *protocol) { struct nhmsg *nhm; assert_return(m, -EINVAL); @@ -378,7 +378,7 @@ int sd_rtnl_message_neigh_set_state(sd_netlink_message *m, uint16_t state) { return 0; } -int sd_rtnl_message_neigh_get_flags(const sd_netlink_message *m, uint8_t *flags) { +int sd_rtnl_message_neigh_get_flags(sd_netlink_message *m, uint8_t *flags) { struct ndmsg *ndm; assert_return(m, -EINVAL); @@ -391,7 +391,7 @@ int sd_rtnl_message_neigh_get_flags(const sd_netlink_message *m, uint8_t *flags) return 0; } -int sd_rtnl_message_neigh_get_state(const sd_netlink_message *m, uint16_t *state) { +int sd_rtnl_message_neigh_get_state(sd_netlink_message *m, uint16_t *state) { struct ndmsg *ndm; assert_return(m, -EINVAL); @@ -404,7 +404,7 @@ int sd_rtnl_message_neigh_get_state(const sd_netlink_message *m, uint16_t *state return 0; } -int sd_rtnl_message_neigh_get_family(const sd_netlink_message *m, int *family) { +int sd_rtnl_message_neigh_get_family(sd_netlink_message *m, int *family) { struct ndmsg *ndm; assert_return(m, -EINVAL); @@ -419,7 +419,7 @@ int sd_rtnl_message_neigh_get_family(const sd_netlink_message *m, int *family) { return 0; } -int sd_rtnl_message_neigh_get_ifindex(const sd_netlink_message *m, int *index) { +int sd_rtnl_message_neigh_get_ifindex(sd_netlink_message *m, int *index) { struct ndmsg *ndm; assert_return(m, -EINVAL); @@ -572,7 +572,7 @@ int sd_rtnl_message_addr_set_scope(sd_netlink_message *m, unsigned char scope) { return 0; } -int sd_rtnl_message_addr_get_family(const sd_netlink_message *m, int *family) { +int sd_rtnl_message_addr_get_family(sd_netlink_message *m, int *family) { struct ifaddrmsg *ifa; assert_return(m, -EINVAL); @@ -587,7 +587,7 @@ int sd_rtnl_message_addr_get_family(const sd_netlink_message *m, int *family) { return 0; } -int sd_rtnl_message_addr_get_prefixlen(const sd_netlink_message *m, unsigned char *prefixlen) { +int sd_rtnl_message_addr_get_prefixlen(sd_netlink_message *m, unsigned char *prefixlen) { struct ifaddrmsg *ifa; assert_return(m, -EINVAL); @@ -602,7 +602,7 @@ int sd_rtnl_message_addr_get_prefixlen(const sd_netlink_message *m, unsigned cha return 0; } -int sd_rtnl_message_addr_get_scope(const sd_netlink_message *m, unsigned char *scope) { +int sd_rtnl_message_addr_get_scope(sd_netlink_message *m, unsigned char *scope) { struct ifaddrmsg *ifa; assert_return(m, -EINVAL); @@ -617,7 +617,7 @@ int sd_rtnl_message_addr_get_scope(const sd_netlink_message *m, unsigned char *s return 0; } -int sd_rtnl_message_addr_get_flags(const sd_netlink_message *m, unsigned char *flags) { +int sd_rtnl_message_addr_get_flags(sd_netlink_message *m, unsigned char *flags) { struct ifaddrmsg *ifa; assert_return(m, -EINVAL); @@ -632,7 +632,7 @@ int sd_rtnl_message_addr_get_flags(const sd_netlink_message *m, unsigned char *f return 0; } -int sd_rtnl_message_addr_get_ifindex(const sd_netlink_message *m, int *ifindex) { +int sd_rtnl_message_addr_get_ifindex(sd_netlink_message *m, int *ifindex) { struct ifaddrmsg *ifa; assert_return(m, -EINVAL); @@ -692,7 +692,7 @@ int sd_rtnl_message_new_addr_update(sd_netlink *rtnl, sd_netlink_message **ret, return 0; } -int sd_rtnl_message_link_get_ifindex(const sd_netlink_message *m, int *ifindex) { +int sd_rtnl_message_link_get_ifindex(sd_netlink_message *m, int *ifindex) { struct ifinfomsg *ifi; assert_return(m, -EINVAL); @@ -707,7 +707,7 @@ int sd_rtnl_message_link_get_ifindex(const sd_netlink_message *m, int *ifindex) return 0; } -int sd_rtnl_message_link_get_flags(const sd_netlink_message *m, unsigned *flags) { +int sd_rtnl_message_link_get_flags(sd_netlink_message *m, unsigned *flags) { struct ifinfomsg *ifi; assert_return(m, -EINVAL); @@ -722,7 +722,7 @@ int sd_rtnl_message_link_get_flags(const sd_netlink_message *m, unsigned *flags) return 0; } -int sd_rtnl_message_link_get_type(const sd_netlink_message *m, unsigned short *type) { +int sd_rtnl_message_link_get_type(sd_netlink_message *m, unsigned short *type) { struct ifinfomsg *ifi; assert_return(m, -EINVAL); @@ -737,7 +737,7 @@ int sd_rtnl_message_link_get_type(const sd_netlink_message *m, unsigned short *t return 0; } -int sd_rtnl_message_get_family(const sd_netlink_message *m, int *family) { +int sd_rtnl_message_get_family(sd_netlink_message *m, int *family) { assert_return(m, -EINVAL); assert_return(family, -EINVAL); @@ -835,7 +835,7 @@ int sd_rtnl_message_addrlabel_set_prefixlen(sd_netlink_message *m, unsigned char return 0; } -int sd_rtnl_message_addrlabel_get_prefixlen(const sd_netlink_message *m, unsigned char *prefixlen) { +int sd_rtnl_message_addrlabel_get_prefixlen(sd_netlink_message *m, unsigned char *prefixlen) { struct ifaddrlblmsg *addrlabel; assert_return(m, -EINVAL); @@ -884,7 +884,7 @@ int sd_rtnl_message_routing_policy_rule_set_tos(sd_netlink_message *m, uint8_t t return 0; } -int sd_rtnl_message_routing_policy_rule_get_tos(const sd_netlink_message *m, uint8_t *tos) { +int sd_rtnl_message_routing_policy_rule_get_tos(sd_netlink_message *m, uint8_t *tos) { struct fib_rule_hdr *frh; assert_return(m, -EINVAL); @@ -912,7 +912,7 @@ int sd_rtnl_message_routing_policy_rule_set_table(sd_netlink_message *m, uint8_t return 0; } -int sd_rtnl_message_routing_policy_rule_get_table(const sd_netlink_message *m, uint8_t *table) { +int sd_rtnl_message_routing_policy_rule_get_table(sd_netlink_message *m, uint8_t *table) { struct fib_rule_hdr *frh; assert_return(m, -EINVAL); @@ -939,7 +939,7 @@ int sd_rtnl_message_routing_policy_rule_set_flags(sd_netlink_message *m, uint32_ return 0; } -int sd_rtnl_message_routing_policy_rule_get_flags(const sd_netlink_message *m, uint32_t *flags) { +int sd_rtnl_message_routing_policy_rule_get_flags(sd_netlink_message *m, uint32_t *flags) { struct fib_rule_hdr *frh; assert_return(m, -EINVAL); @@ -966,7 +966,7 @@ int sd_rtnl_message_routing_policy_rule_set_fib_type(sd_netlink_message *m, uint return 0; } -int sd_rtnl_message_routing_policy_rule_get_fib_type(const sd_netlink_message *m, uint8_t *type) { +int sd_rtnl_message_routing_policy_rule_get_fib_type(sd_netlink_message *m, uint8_t *type) { struct fib_rule_hdr *frh; assert_return(m, -EINVAL); @@ -994,7 +994,7 @@ int sd_rtnl_message_routing_policy_rule_set_fib_dst_prefixlen(sd_netlink_message return 0; } -int sd_rtnl_message_routing_policy_rule_get_fib_dst_prefixlen(const sd_netlink_message *m, uint8_t *len) { +int sd_rtnl_message_routing_policy_rule_get_fib_dst_prefixlen(sd_netlink_message *m, uint8_t *len) { struct fib_rule_hdr *frh; assert_return(m, -EINVAL); @@ -1022,7 +1022,7 @@ int sd_rtnl_message_routing_policy_rule_set_fib_src_prefixlen(sd_netlink_message return 0; } -int sd_rtnl_message_routing_policy_rule_get_fib_src_prefixlen(const sd_netlink_message *m, uint8_t *len) { +int sd_rtnl_message_routing_policy_rule_get_fib_src_prefixlen(sd_netlink_message *m, uint8_t *len) { struct fib_rule_hdr *frh; assert_return(m, -EINVAL); diff --git a/src/libsystemd/sd-netlink/sd-netlink.c b/src/libsystemd/sd-netlink/sd-netlink.c index f862d48253..a003c25719 100644 --- a/src/libsystemd/sd-netlink/sd-netlink.c +++ b/src/libsystemd/sd-netlink/sd-netlink.c @@ -742,7 +742,7 @@ int sd_netlink_call(sd_netlink *rtnl, return sd_netlink_read(rtnl, serial, usec, ret); } -int sd_netlink_get_events(const sd_netlink *rtnl) { +int sd_netlink_get_events(sd_netlink *rtnl) { assert_return(rtnl, -EINVAL); assert_return(!rtnl_pid_changed(rtnl), -ECHILD); @@ -752,7 +752,7 @@ int sd_netlink_get_events(const sd_netlink *rtnl) { return 0; } -int sd_netlink_get_timeout(const sd_netlink *rtnl, uint64_t *timeout_usec) { +int sd_netlink_get_timeout(sd_netlink *rtnl, uint64_t *timeout_usec) { struct reply_callback *c; assert_return(rtnl, -EINVAL); diff --git a/src/partition/repart.c b/src/partition/repart.c index 51b8f20dbc..1ecd9ffea4 100644 --- a/src/partition/repart.c +++ b/src/partition/repart.c @@ -977,7 +977,7 @@ static int config_parse_label( /* Nota bene: the empty label is a totally valid one. Let's hence not follow our usual rule of * assigning the empty string to reset to default here, but really accept it as label to set. */ - r = specifier_printf(rvalue, specifier_table, NULL, &resolved); + r = specifier_printf(rvalue, GPT_LABEL_MAX, specifier_table, NULL, &resolved); if (r < 0) { log_syntax(unit, LOG_WARNING, filename, line, r, "Failed to expand specifiers in Label=, ignoring: %s", rvalue); @@ -1142,7 +1142,7 @@ static int config_parse_copy_files( if (!isempty(p)) return log_syntax(unit, LOG_ERR, filename, line, SYNTHETIC_ERRNO(EINVAL), "Too many arguments: %s", rvalue); - r = specifier_printf(source, specifier_table, NULL, &resolved_source); + r = specifier_printf(source, PATH_MAX-1, specifier_table, NULL, &resolved_source); if (r < 0) { log_syntax(unit, LOG_WARNING, filename, line, r, "Failed to expand specifiers in CopyFiles= source, ignoring: %s", rvalue); @@ -1153,7 +1153,7 @@ static int config_parse_copy_files( if (r < 0) return 0; - r = specifier_printf(target, specifier_table, NULL, &resolved_target); + r = specifier_printf(target, PATH_MAX-1, specifier_table, NULL, &resolved_target); if (r < 0) { log_syntax(unit, LOG_WARNING, filename, line, r, "Failed to expand specifiers in CopyFiles= target, ignoring: %s", resolved_target); @@ -1202,7 +1202,7 @@ static int config_parse_copy_blocks( return 0; } - r = specifier_printf(rvalue, specifier_table, NULL, &d); + r = specifier_printf(rvalue, PATH_MAX-1, specifier_table, NULL, &d); if (r < 0) { log_syntax(unit, LOG_WARNING, filename, line, r, "Failed to expand specifiers in CopyBlocks= source path, ignoring: %s", rvalue); @@ -1250,7 +1250,7 @@ static int config_parse_make_dirs( if (r == 0) return 0; - r = specifier_printf(word, specifier_table, NULL, &d); + r = specifier_printf(word, PATH_MAX-1, specifier_table, NULL, &d); if (r < 0) { log_syntax(unit, LOG_WARNING, filename, line, r, "Failed to expand specifiers in MakeDirectories= parameter, ignoring: %s", word); diff --git a/src/resolve/resolved-conf.c b/src/resolve/resolved-conf.c index 87d1794a74..9b7f7f9ba2 100644 --- a/src/resolve/resolved-conf.c +++ b/src/resolve/resolved-conf.c @@ -255,7 +255,7 @@ int config_parse_dnssd_service_name( return 0; } - r = specifier_printf(rvalue, specifier_table, NULL, &name); + r = specifier_printf(rvalue, DNS_LABEL_MAX, specifier_table, NULL, &name); if (r < 0) { log_syntax(unit, LOG_WARNING, filename, line, r, "Invalid service instance name template '%s', ignoring assignment: %m", rvalue); diff --git a/src/resolve/resolved-dnssd.c b/src/resolve/resolved-dnssd.c index aed9c5c1cd..1c7f16c4d2 100644 --- a/src/resolve/resolved-dnssd.c +++ b/src/resolve/resolved-dnssd.c @@ -170,7 +170,7 @@ int dnssd_render_instance_name(DnssdService *s, char **ret_name) { assert(s); assert(s->name_template); - r = specifier_printf(s->name_template, specifier_table, s, &name); + r = specifier_printf(s->name_template, DNS_LABEL_MAX, specifier_table, s, &name); if (r < 0) return log_debug_errno(r, "Failed to replace specifiers: %m"); diff --git a/src/shared/dns-domain.c b/src/shared/dns-domain.c index e43aa12882..ec3021d602 100644 --- a/src/shared/dns-domain.c +++ b/src/shared/dns-domain.c @@ -985,7 +985,7 @@ bool dns_service_name_is_valid(const char *name) { l = strlen(name); if (l <= 0) return false; - if (l > 63) + if (l > DNS_LABEL_MAX) return false; return true; diff --git a/src/shared/gpt.c b/src/shared/gpt.c index 558b69c487..bd1f43ffdd 100644 --- a/src/shared/gpt.c +++ b/src/shared/gpt.c @@ -104,7 +104,7 @@ int gpt_partition_label_valid(const char *s) { if (!recoded) return -ENOMEM; - return char16_strlen(recoded) <= 36; + return char16_strlen(recoded) <= GPT_LABEL_MAX; } bool gpt_partition_type_is_root(sd_id128_t id) { diff --git a/src/shared/gpt.h b/src/shared/gpt.h index 6581973793..c92d9c0974 100644 --- a/src/shared/gpt.h +++ b/src/shared/gpt.h @@ -115,6 +115,9 @@ #define GPT_FLAG_NO_AUTO (1ULL << 63) #define GPT_FLAG_GROWFS (1ULL << 59) +/* maximum length of gpt label */ +#define GPT_LABEL_MAX 36 + const char *gpt_partition_type_uuid_to_string(sd_id128_t id); const char *gpt_partition_type_uuid_to_string_harder( sd_id128_t id, diff --git a/src/shared/install-printf.c b/src/shared/install-printf.c index 6bc3f15def..a697b5c4e7 100644 --- a/src/shared/install-printf.c +++ b/src/shared/install-printf.c @@ -103,7 +103,7 @@ static int specifier_last_component(char specifier, const void *data, const void return 0; } -int install_full_printf(const UnitFileInstallInfo *i, const char *format, char **ret) { +int install_full_printf_internal(const UnitFileInstallInfo *i, const char *format, size_t max_length, char **ret) { /* This is similar to unit_name_printf() */ const Specifier table[] = { @@ -123,5 +123,5 @@ int install_full_printf(const UnitFileInstallInfo *i, const char *format, char * assert(format); assert(ret); - return specifier_printf(format, table, i, ret); + return specifier_printf(format, max_length, table, i, ret); } diff --git a/src/shared/install-printf.h b/src/shared/install-printf.h index 34e129413e..13a39829e9 100644 --- a/src/shared/install-printf.h +++ b/src/shared/install-printf.h @@ -2,5 +2,12 @@ #pragma once #include "install.h" +#include "unit-name.h" -int install_full_printf(const UnitFileInstallInfo *i, const char *format, char **ret); +int install_full_printf_internal(const UnitFileInstallInfo *i, const char *format, size_t max_length, char **ret); +static inline int install_name_printf(const UnitFileInstallInfo *i, const char *format, char **ret) { + return install_full_printf_internal(i, format, UNIT_NAME_MAX, ret); +} +static inline int install_path_printf(const UnitFileInstallInfo *i, const char *format, char **ret) { + return install_full_printf_internal(i, format, PATH_MAX-1, ret); +} diff --git a/src/shared/install.c b/src/shared/install.c index 3e9f6a3df3..407de0af5e 100644 --- a/src/shared/install.c +++ b/src/shared/install.c @@ -1143,7 +1143,7 @@ static int config_parse_also( if (r == 0) break; - r = install_full_printf(info, word, &printed); + r = install_name_printf(info, word, &printed); if (r < 0) return r; @@ -1190,7 +1190,7 @@ static int config_parse_default_instance( return log_syntax(unit, LOG_WARNING, filename, line, 0, "DefaultInstance= only makes sense for template units, ignoring."); - r = install_full_printf(i, rvalue, &printed); + r = install_name_printf(i, rvalue, &printed); if (r < 0) return r; @@ -1816,7 +1816,7 @@ static int install_info_symlink_alias( STRV_FOREACH(s, i->aliases) { _cleanup_free_ char *alias_path = NULL, *dst = NULL, *dst_updated = NULL; - q = install_full_printf(i, *s, &dst); + q = install_path_printf(i, *s, &dst); if (q < 0) return q; @@ -1891,7 +1891,7 @@ static int install_info_symlink_wants( STRV_FOREACH(s, list) { _cleanup_free_ char *path = NULL, *dst = NULL; - q = install_full_printf(i, *s, &dst); + q = install_name_printf(i, *s, &dst); if (q < 0) return q; diff --git a/src/shared/specifier.c b/src/shared/specifier.c index 6edf4a215c..ef164b3942 100644 --- a/src/shared/specifier.c +++ b/src/shared/specifier.c @@ -29,9 +29,9 @@ * and "%" used for escaping. */ #define POSSIBLE_SPECIFIERS ALPHANUMERICAL "%" -int specifier_printf(const char *text, const Specifier table[], const void *userdata, char **_ret) { +int specifier_printf(const char *text, size_t max_length, const Specifier table[], const void *userdata, char **ret) { size_t l, allocated = 0; - _cleanup_free_ char *ret = NULL; + _cleanup_free_ char *result = NULL; char *t; const char *f; bool percent = false; @@ -41,11 +41,11 @@ int specifier_printf(const char *text, const Specifier table[], const void *user assert(table); l = strlen(text); - if (!GREEDY_REALLOC(ret, allocated, l + 1)) + if (!GREEDY_REALLOC(result, allocated, l + 1)) return -ENOMEM; - t = ret; + t = result; - for (f = text; *f; f++, l--) + for (f = text; *f != '\0'; f++, l--) { if (percent) { if (*f == '%') *(t++) = '%'; @@ -64,13 +64,13 @@ int specifier_printf(const char *text, const Specifier table[], const void *user if (r < 0) return r; - j = t - ret; + j = t - result; k = strlen(w); - if (!GREEDY_REALLOC(ret, allocated, j + k + l + 1)) + if (!GREEDY_REALLOC(result, allocated, j + k + l + 1)) return -ENOMEM; - memcpy(ret + j, w, k); - t = ret + j + k; + memcpy(result + j, w, k); + t = result + j + k; } else if (strchr(POSSIBLE_SPECIFIERS, *f)) /* Oops, an unknown specifier. */ return -EBADSLT; @@ -86,19 +86,26 @@ int specifier_printf(const char *text, const Specifier table[], const void *user else *(t++) = *f; + if ((size_t) (t - result) > max_length) + return -ENAMETOOLONG; + } + /* If string ended with a stray %, also end with % */ - if (percent) + if (percent) { *(t++) = '%'; + if ((size_t) (t - result) > max_length) + return -ENAMETOOLONG; + } *(t++) = 0; /* Try to deallocate unused bytes, but don't sweat it too much */ - if ((size_t)(t - ret) < allocated) { - t = realloc(ret, t - ret); + if ((size_t)(t - result) < allocated) { + t = realloc(result, t - result); if (t) - ret = t; + result = t; } - *_ret = TAKE_PTR(ret); + *ret = TAKE_PTR(result); return 0; } @@ -124,7 +131,7 @@ int specifier_machine_id(char specifier, const void *data, const void *userdata, if (r < 0) return r; - n = new(char, 33); + n = new(char, SD_ID128_STRING_MAX); if (!n) return -ENOMEM; @@ -141,7 +148,7 @@ int specifier_boot_id(char specifier, const void *data, const void *userdata, ch if (r < 0) return r; - n = new(char, 33); + n = new(char, SD_ID128_STRING_MAX); if (!n) return -ENOMEM; diff --git a/src/shared/specifier.h b/src/shared/specifier.h index 6735a7a363..0c5bb3d0c4 100644 --- a/src/shared/specifier.h +++ b/src/shared/specifier.h @@ -11,7 +11,7 @@ typedef struct Specifier { const void *data; } Specifier; -int specifier_printf(const char *text, const Specifier table[], const void *userdata, char **ret); +int specifier_printf(const char *text, size_t max_length, const Specifier table[], const void *userdata, char **ret); int specifier_string(char specifier, const void *data, const void *userdata, char **ret); diff --git a/src/systemd/sd-dhcp-client.h b/src/systemd/sd-dhcp-client.h index 0877a6b9a9..5300234098 100644 --- a/src/systemd/sd-dhcp-client.h +++ b/src/systemd/sd-dhcp-client.h @@ -206,7 +206,7 @@ int sd_dhcp_client_set_fallback_lease_lifetime( int sd_dhcp_client_add_option(sd_dhcp_client *client, sd_dhcp_option *v); int sd_dhcp_client_add_vendor_option(sd_dhcp_client *client, sd_dhcp_option *v); -int sd_dhcp_client_is_running(const sd_dhcp_client *client); +int sd_dhcp_client_is_running(sd_dhcp_client *client); int sd_dhcp_client_stop(sd_dhcp_client *client); int sd_dhcp_client_start(sd_dhcp_client *client); int sd_dhcp_client_send_release(sd_dhcp_client *client); diff --git a/src/systemd/sd-dhcp-lease.h b/src/systemd/sd-dhcp-lease.h index 9cf36d896b..5abf9a406c 100644 --- a/src/systemd/sd-dhcp-lease.h +++ b/src/systemd/sd-dhcp-lease.h @@ -46,36 +46,36 @@ typedef enum sd_dhcp_lease_server_type_t { _SD_ENUM_FORCE_S64(DHCP_LEASE_SERVER_TYPE), } sd_dhcp_lease_server_type_t; -int sd_dhcp_lease_get_address(const sd_dhcp_lease *lease, struct in_addr *addr); -int sd_dhcp_lease_get_lifetime(const sd_dhcp_lease *lease, uint32_t *lifetime); -int sd_dhcp_lease_get_t1(const sd_dhcp_lease *lease, uint32_t *t1); -int sd_dhcp_lease_get_t2(const sd_dhcp_lease *lease, uint32_t *t2); -int sd_dhcp_lease_get_broadcast(const sd_dhcp_lease *lease, struct in_addr *addr); -int sd_dhcp_lease_get_netmask(const sd_dhcp_lease *lease, struct in_addr *addr); -int sd_dhcp_lease_get_router(const sd_dhcp_lease *lease, const struct in_addr **addr); -int sd_dhcp_lease_get_next_server(const sd_dhcp_lease *lease, struct in_addr *addr); -int sd_dhcp_lease_get_server_identifier(const sd_dhcp_lease *lease, struct in_addr *addr); -int sd_dhcp_lease_get_servers(const sd_dhcp_lease *lease, sd_dhcp_lease_server_type_t what, const struct in_addr **addr); -int sd_dhcp_lease_get_dns(const sd_dhcp_lease *lease, const struct in_addr **addr); -int sd_dhcp_lease_get_ntp(const sd_dhcp_lease *lease, const struct in_addr **addr); -int sd_dhcp_lease_get_sip(const sd_dhcp_lease *lease, const struct in_addr **addr); -int sd_dhcp_lease_get_pop3(const sd_dhcp_lease *lease, const struct in_addr **addr); -int sd_dhcp_lease_get_smtp(const sd_dhcp_lease *lease, const struct in_addr **addr); -int sd_dhcp_lease_get_lpr(const sd_dhcp_lease *lease, const struct in_addr **addr); -int sd_dhcp_lease_get_mtu(const sd_dhcp_lease *lease, uint16_t *mtu); -int sd_dhcp_lease_get_domainname(const sd_dhcp_lease *lease, const char **domainname); -int sd_dhcp_lease_get_search_domains(const sd_dhcp_lease *lease, char ***domains); -int sd_dhcp_lease_get_hostname(const sd_dhcp_lease *lease, const char **hostname); -int sd_dhcp_lease_get_root_path(const sd_dhcp_lease *lease, const char **root_path); -int sd_dhcp_lease_get_routes(const sd_dhcp_lease *lease, sd_dhcp_route ***routes); -int sd_dhcp_lease_get_vendor_specific(const sd_dhcp_lease *lease, const void **data, size_t *data_len); -int sd_dhcp_lease_get_client_id(const sd_dhcp_lease *lease, const void **client_id, size_t *client_id_len); -int sd_dhcp_lease_get_timezone(const sd_dhcp_lease *lease, const char **timezone); +int sd_dhcp_lease_get_address(sd_dhcp_lease *lease, struct in_addr *addr); +int sd_dhcp_lease_get_lifetime(sd_dhcp_lease *lease, uint32_t *lifetime); +int sd_dhcp_lease_get_t1(sd_dhcp_lease *lease, uint32_t *t1); +int sd_dhcp_lease_get_t2(sd_dhcp_lease *lease, uint32_t *t2); +int sd_dhcp_lease_get_broadcast(sd_dhcp_lease *lease, struct in_addr *addr); +int sd_dhcp_lease_get_netmask(sd_dhcp_lease *lease, struct in_addr *addr); +int sd_dhcp_lease_get_router(sd_dhcp_lease *lease, const struct in_addr **addr); +int sd_dhcp_lease_get_next_server(sd_dhcp_lease *lease, struct in_addr *addr); +int sd_dhcp_lease_get_server_identifier(sd_dhcp_lease *lease, struct in_addr *addr); +int sd_dhcp_lease_get_servers(sd_dhcp_lease *lease, sd_dhcp_lease_server_type_t what, const struct in_addr **addr); +int sd_dhcp_lease_get_dns(sd_dhcp_lease *lease, const struct in_addr **addr); +int sd_dhcp_lease_get_ntp(sd_dhcp_lease *lease, const struct in_addr **addr); +int sd_dhcp_lease_get_sip(sd_dhcp_lease *lease, const struct in_addr **addr); +int sd_dhcp_lease_get_pop3(sd_dhcp_lease *lease, const struct in_addr **addr); +int sd_dhcp_lease_get_smtp(sd_dhcp_lease *lease, const struct in_addr **addr); +int sd_dhcp_lease_get_lpr(sd_dhcp_lease *lease, const struct in_addr **addr); +int sd_dhcp_lease_get_mtu(sd_dhcp_lease *lease, uint16_t *mtu); +int sd_dhcp_lease_get_domainname(sd_dhcp_lease *lease, const char **domainname); +int sd_dhcp_lease_get_search_domains(sd_dhcp_lease *lease, char ***domains); +int sd_dhcp_lease_get_hostname(sd_dhcp_lease *lease, const char **hostname); +int sd_dhcp_lease_get_root_path(sd_dhcp_lease *lease, const char **root_path); +int sd_dhcp_lease_get_routes(sd_dhcp_lease *lease, sd_dhcp_route ***routes); +int sd_dhcp_lease_get_vendor_specific(sd_dhcp_lease *lease, const void **data, size_t *data_len); +int sd_dhcp_lease_get_client_id(sd_dhcp_lease *lease, const void **client_id, size_t *client_id_len); +int sd_dhcp_lease_get_timezone(sd_dhcp_lease *lease, const char **timezone); -int sd_dhcp_route_get_destination(const sd_dhcp_route *route, struct in_addr *destination); -int sd_dhcp_route_get_destination_prefix_length(const sd_dhcp_route *route, uint8_t *length); -int sd_dhcp_route_get_gateway(const sd_dhcp_route *route, struct in_addr *gateway); -int sd_dhcp_route_get_option(const sd_dhcp_route *route); +int sd_dhcp_route_get_destination(sd_dhcp_route *route, struct in_addr *destination); +int sd_dhcp_route_get_destination_prefix_length(sd_dhcp_route *route, uint8_t *length); +int sd_dhcp_route_get_gateway(sd_dhcp_route *route, struct in_addr *gateway); +int sd_dhcp_route_get_option(sd_dhcp_route *route); _SD_DEFINE_POINTER_CLEANUP_FUNC(sd_dhcp_lease, sd_dhcp_lease_unref); diff --git a/src/systemd/sd-netlink.h b/src/systemd/sd-netlink.h index bc572f9b84..fb406169de 100644 --- a/src/systemd/sd-netlink.h +++ b/src/systemd/sd-netlink.h @@ -73,8 +73,8 @@ int sd_netlink_call(sd_netlink *nl, sd_netlink_message *message, uint64_t timeou sd_netlink_message **reply); int sd_netlink_read(sd_netlink *nl, uint32_t serial, uint64_t timeout, sd_netlink_message **reply); -int sd_netlink_get_events(const sd_netlink *nl); -int sd_netlink_get_timeout(const sd_netlink *nl, uint64_t *timeout); +int sd_netlink_get_events(sd_netlink *nl); +int sd_netlink_get_timeout(sd_netlink *nl, uint64_t *timeout); int sd_netlink_process(sd_netlink *nl, sd_netlink_message **ret); int sd_netlink_wait(sd_netlink *nl, uint64_t timeout); @@ -137,33 +137,33 @@ sd_netlink_message *sd_netlink_message_ref(sd_netlink_message *m); sd_netlink_message *sd_netlink_message_unref(sd_netlink_message *m); int sd_netlink_message_request_dump(sd_netlink_message *m, int dump); -int sd_netlink_message_is_error(const sd_netlink_message *m); -int sd_netlink_message_get_errno(const sd_netlink_message *m); -int sd_netlink_message_get_type(const sd_netlink_message *m, uint16_t *type); +int sd_netlink_message_is_error(sd_netlink_message *m); +int sd_netlink_message_get_errno(sd_netlink_message *m); +int sd_netlink_message_get_type(sd_netlink_message *m, uint16_t *type); int sd_netlink_message_set_flags(sd_netlink_message *m, uint16_t flags); -int sd_netlink_message_is_broadcast(const sd_netlink_message *m); +int sd_netlink_message_is_broadcast(sd_netlink_message *m); /* rtnl */ -int sd_rtnl_message_get_family(const sd_netlink_message *m, int *family); +int sd_rtnl_message_get_family(sd_netlink_message *m, int *family); int sd_rtnl_message_new_addr(sd_netlink *nl, sd_netlink_message **ret, uint16_t msg_type, int index, int family); int sd_rtnl_message_new_addr_update(sd_netlink *nl, sd_netlink_message **ret, int index, int family); int sd_rtnl_message_addr_set_prefixlen(sd_netlink_message *m, unsigned char prefixlen); int sd_rtnl_message_addr_set_scope(sd_netlink_message *m, unsigned char scope); int sd_rtnl_message_addr_set_flags(sd_netlink_message *m, unsigned char flags); -int sd_rtnl_message_addr_get_family(const sd_netlink_message *m, int *family); -int sd_rtnl_message_addr_get_prefixlen(const sd_netlink_message *m, unsigned char *prefixlen); -int sd_rtnl_message_addr_get_scope(const sd_netlink_message *m, unsigned char *scope); -int sd_rtnl_message_addr_get_flags(const sd_netlink_message *m, unsigned char *flags); -int sd_rtnl_message_addr_get_ifindex(const sd_netlink_message *m, int *ifindex); +int sd_rtnl_message_addr_get_family(sd_netlink_message *m, int *family); +int sd_rtnl_message_addr_get_prefixlen(sd_netlink_message *m, unsigned char *prefixlen); +int sd_rtnl_message_addr_get_scope(sd_netlink_message *m, unsigned char *scope); +int sd_rtnl_message_addr_get_flags(sd_netlink_message *m, unsigned char *flags); +int sd_rtnl_message_addr_get_ifindex(sd_netlink_message *m, int *ifindex); int sd_rtnl_message_new_link(sd_netlink *nl, sd_netlink_message **ret, uint16_t msg_type, int index); int sd_rtnl_message_link_set_flags(sd_netlink_message *m, unsigned flags, unsigned change); int sd_rtnl_message_link_set_type(sd_netlink_message *m, unsigned type); int sd_rtnl_message_link_set_family(sd_netlink_message *m, unsigned family); -int sd_rtnl_message_link_get_ifindex(const sd_netlink_message *m, int *ifindex); -int sd_rtnl_message_link_get_flags(const sd_netlink_message *m, unsigned *flags); -int sd_rtnl_message_link_get_type(const sd_netlink_message *m, unsigned short *type); +int sd_rtnl_message_link_get_ifindex(sd_netlink_message *m, int *ifindex); +int sd_rtnl_message_link_get_flags(sd_netlink_message *m, unsigned *flags); +int sd_rtnl_message_link_get_type(sd_netlink_message *m, unsigned short *type); int sd_rtnl_message_new_route(sd_netlink *nl, sd_netlink_message **ret, uint16_t nlmsg_type, int rtm_family, unsigned char rtm_protocol); int sd_rtnl_message_route_set_dst_prefixlen(sd_netlink_message *m, unsigned char prefixlen); @@ -172,46 +172,46 @@ int sd_rtnl_message_route_set_scope(sd_netlink_message *m, unsigned char scope); int sd_rtnl_message_route_set_flags(sd_netlink_message *m, unsigned flags); int sd_rtnl_message_route_set_table(sd_netlink_message *m, unsigned char table); int sd_rtnl_message_route_set_type(sd_netlink_message *m, unsigned char type); -int sd_rtnl_message_route_get_flags(const sd_netlink_message *m, unsigned *flags); -int sd_rtnl_message_route_get_family(const sd_netlink_message *m, int *family); -int sd_rtnl_message_route_get_protocol(const sd_netlink_message *m, unsigned char *protocol); -int sd_rtnl_message_route_get_scope(const sd_netlink_message *m, unsigned char *scope); -int sd_rtnl_message_route_get_tos(const sd_netlink_message *m, unsigned char *tos); -int sd_rtnl_message_route_get_table(const sd_netlink_message *m, unsigned char *table); -int sd_rtnl_message_route_get_dst_prefixlen(const sd_netlink_message *m, unsigned char *dst_len); -int sd_rtnl_message_route_get_src_prefixlen(const sd_netlink_message *m, unsigned char *src_len); -int sd_rtnl_message_route_get_type(const sd_netlink_message *m, unsigned char *type); +int sd_rtnl_message_route_get_flags(sd_netlink_message *m, unsigned *flags); +int sd_rtnl_message_route_get_family(sd_netlink_message *m, int *family); +int sd_rtnl_message_route_get_protocol(sd_netlink_message *m, unsigned char *protocol); +int sd_rtnl_message_route_get_scope(sd_netlink_message *m, unsigned char *scope); +int sd_rtnl_message_route_get_tos(sd_netlink_message *m, unsigned char *tos); +int sd_rtnl_message_route_get_table(sd_netlink_message *m, unsigned char *table); +int sd_rtnl_message_route_get_dst_prefixlen(sd_netlink_message *m, unsigned char *dst_len); +int sd_rtnl_message_route_get_src_prefixlen(sd_netlink_message *m, unsigned char *src_len); +int sd_rtnl_message_route_get_type(sd_netlink_message *m, unsigned char *type); int sd_rtnl_message_new_nexthop(sd_netlink *rtnl, sd_netlink_message **ret, uint16_t nhmsg_type, int nh_family, unsigned char nh_protocol); int sd_rtnl_message_nexthop_set_flags(sd_netlink_message *m, uint8_t flags); -int sd_rtnl_message_nexthop_get_family(const sd_netlink_message *m, uint8_t *family); -int sd_rtnl_message_nexthop_get_protocol(const sd_netlink_message *m, uint8_t *protocol); +int sd_rtnl_message_nexthop_get_family(sd_netlink_message *m, uint8_t *family); +int sd_rtnl_message_nexthop_get_protocol(sd_netlink_message *m, uint8_t *protocol); int sd_rtnl_message_new_neigh(sd_netlink *nl, sd_netlink_message **ret, uint16_t msg_type, int index, int nda_family); int sd_rtnl_message_neigh_set_flags(sd_netlink_message *m, uint8_t flags); int sd_rtnl_message_neigh_set_state(sd_netlink_message *m, uint16_t state); -int sd_rtnl_message_neigh_get_family(const sd_netlink_message *m, int *family); -int sd_rtnl_message_neigh_get_ifindex(const sd_netlink_message *m, int *index); -int sd_rtnl_message_neigh_get_state(const sd_netlink_message *m, uint16_t *state); -int sd_rtnl_message_neigh_get_flags(const sd_netlink_message *m, uint8_t *flags); +int sd_rtnl_message_neigh_get_family(sd_netlink_message *m, int *family); +int sd_rtnl_message_neigh_get_ifindex(sd_netlink_message *m, int *index); +int sd_rtnl_message_neigh_get_state(sd_netlink_message *m, uint16_t *state); +int sd_rtnl_message_neigh_get_flags(sd_netlink_message *m, uint8_t *flags); int sd_rtnl_message_new_addrlabel(sd_netlink *rtnl, sd_netlink_message **ret, uint16_t nlmsg_type, int ifindex, int ifal_family); int sd_rtnl_message_addrlabel_set_prefixlen(sd_netlink_message *m, unsigned char prefixlen); -int sd_rtnl_message_addrlabel_get_prefixlen(const sd_netlink_message *m, unsigned char *prefixlen); +int sd_rtnl_message_addrlabel_get_prefixlen(sd_netlink_message *m, unsigned char *prefixlen); int sd_rtnl_message_new_routing_policy_rule(sd_netlink *rtnl, sd_netlink_message **ret, uint16_t nlmsg_type, int ifal_family); int sd_rtnl_message_routing_policy_rule_set_tos(sd_netlink_message *m, uint8_t tos); -int sd_rtnl_message_routing_policy_rule_get_tos(const sd_netlink_message *m, uint8_t *tos); +int sd_rtnl_message_routing_policy_rule_get_tos(sd_netlink_message *m, uint8_t *tos); int sd_rtnl_message_routing_policy_rule_set_table(sd_netlink_message *m, uint8_t table); -int sd_rtnl_message_routing_policy_rule_get_table(const sd_netlink_message *m, uint8_t *table); +int sd_rtnl_message_routing_policy_rule_get_table(sd_netlink_message *m, uint8_t *table); int sd_rtnl_message_routing_policy_rule_set_fib_src_prefixlen(sd_netlink_message *m, uint8_t len); -int sd_rtnl_message_routing_policy_rule_get_fib_src_prefixlen(const sd_netlink_message *m, uint8_t *len); +int sd_rtnl_message_routing_policy_rule_get_fib_src_prefixlen(sd_netlink_message *m, uint8_t *len); int sd_rtnl_message_routing_policy_rule_set_fib_dst_prefixlen(sd_netlink_message *m, uint8_t len); -int sd_rtnl_message_routing_policy_rule_get_fib_dst_prefixlen(const sd_netlink_message *m, uint8_t *len); +int sd_rtnl_message_routing_policy_rule_get_fib_dst_prefixlen(sd_netlink_message *m, uint8_t *len); int sd_rtnl_message_routing_policy_rule_set_fib_type(sd_netlink_message *m, uint8_t type); -int sd_rtnl_message_routing_policy_rule_get_fib_type(const sd_netlink_message *m, uint8_t *type); +int sd_rtnl_message_routing_policy_rule_get_fib_type(sd_netlink_message *m, uint8_t *type); int sd_rtnl_message_routing_policy_rule_set_flags(sd_netlink_message *m, uint32_t flags); -int sd_rtnl_message_routing_policy_rule_get_flags(const sd_netlink_message *m, uint32_t *flags); +int sd_rtnl_message_routing_policy_rule_get_flags(sd_netlink_message *m, uint32_t *flags); int sd_rtnl_message_new_qdisc(sd_netlink *rtnl, sd_netlink_message **ret, uint16_t nlmsg_type, int tcm_family, int tcm_ifindex); int sd_rtnl_message_set_qdisc_parent(sd_netlink_message *m, uint32_t parent); @@ -252,7 +252,7 @@ int sd_nfnl_nft_message_add_setelem_end(sd_netlink_message *m); /* genl */ int sd_genl_socket_open(sd_netlink **nl); int sd_genl_message_new(sd_netlink *nl, sd_genl_family_t family, uint8_t cmd, sd_netlink_message **m); -int sd_genl_message_get_family(const sd_netlink *nl, const sd_netlink_message *m, sd_genl_family_t *family); +int sd_genl_message_get_family(sd_netlink *nl, sd_netlink_message *m, sd_genl_family_t *family); /* slot */ sd_netlink_slot *sd_netlink_slot_ref(sd_netlink_slot *nl); @@ -261,11 +261,11 @@ sd_netlink_slot *sd_netlink_slot_unref(sd_netlink_slot *nl); sd_netlink *sd_netlink_slot_get_netlink(sd_netlink_slot *slot); void *sd_netlink_slot_get_userdata(sd_netlink_slot *slot); void *sd_netlink_slot_set_userdata(sd_netlink_slot *slot, void *userdata); -int sd_netlink_slot_get_destroy_callback(const sd_netlink_slot *slot, sd_netlink_destroy_t *callback); +int sd_netlink_slot_get_destroy_callback(sd_netlink_slot *slot, sd_netlink_destroy_t *callback); int sd_netlink_slot_set_destroy_callback(sd_netlink_slot *slot, sd_netlink_destroy_t callback); -int sd_netlink_slot_get_floating(const sd_netlink_slot *slot); +int sd_netlink_slot_get_floating(sd_netlink_slot *slot); int sd_netlink_slot_set_floating(sd_netlink_slot *slot, int b); -int sd_netlink_slot_get_description(const sd_netlink_slot *slot, const char **description); +int sd_netlink_slot_get_description(sd_netlink_slot *slot, const char **description); int sd_netlink_slot_set_description(sd_netlink_slot *slot, const char *description); _SD_DEFINE_POINTER_CLEANUP_FUNC(sd_netlink, sd_netlink_unref); diff --git a/src/sysusers/sysusers.c b/src/sysusers/sysusers.c index 848e5e867c..dd55360ee5 100644 --- a/src/sysusers/sysusers.c +++ b/src/sysusers/sysusers.c @@ -1492,7 +1492,7 @@ static int parse_line(const char *fname, unsigned line, const char *buffer) { name = mfree(name); if (name) { - r = specifier_printf(name, specifier_table, NULL, &resolved_name); + r = specifier_printf(name, NAME_MAX, specifier_table, NULL, &resolved_name); if (r < 0) return log_error_errno(r, "[%s:%u] Failed to replace specifiers in '%s': %m", fname, line, name); @@ -1507,7 +1507,7 @@ static int parse_line(const char *fname, unsigned line, const char *buffer) { id = mfree(id); if (id) { - r = specifier_printf(id, specifier_table, NULL, &resolved_id); + r = specifier_printf(id, PATH_MAX-1, specifier_table, NULL, &resolved_id); if (r < 0) return log_error_errno(r, "[%s:%u] Failed to replace specifiers in '%s': %m", fname, line, name); @@ -1518,7 +1518,7 @@ static int parse_line(const char *fname, unsigned line, const char *buffer) { description = mfree(description); if (description) { - r = specifier_printf(description, specifier_table, NULL, &resolved_description); + r = specifier_printf(description, LONG_LINE_MAX, specifier_table, NULL, &resolved_description); if (r < 0) return log_error_errno(r, "[%s:%u] Failed to replace specifiers in '%s': %m", fname, line, description); @@ -1534,7 +1534,7 @@ static int parse_line(const char *fname, unsigned line, const char *buffer) { home = mfree(home); if (home) { - r = specifier_printf(home, specifier_table, NULL, &resolved_home); + r = specifier_printf(home, PATH_MAX-1, specifier_table, NULL, &resolved_home); if (r < 0) return log_error_errno(r, "[%s:%u] Failed to replace specifiers in '%s': %m", fname, line, home); @@ -1550,7 +1550,7 @@ static int parse_line(const char *fname, unsigned line, const char *buffer) { shell = mfree(shell); if (shell) { - r = specifier_printf(shell, specifier_table, NULL, &resolved_shell); + r = specifier_printf(shell, PATH_MAX-1, specifier_table, NULL, &resolved_shell); if (r < 0) return log_error_errno(r, "[%s:%u] Failed to replace specifiers in '%s': %m", fname, line, shell); diff --git a/src/test/test-load-fragment.c b/src/test/test-load-fragment.c index 40c1fd0532..50345b7b1e 100644 --- a/src/test/test-load-fragment.c +++ b/src/test/test-load-fragment.c @@ -512,7 +512,7 @@ static void test_install_printf(void) { _cleanup_free_ char \ *d1 = strdup(i.name), \ *d2 = strdup(i.path); \ - assert_se(install_full_printf(&src, pattern, &t) >= 0 || !result); \ + assert_se(install_name_printf(&src, pattern, &t) >= 0 || !result); \ memzero(i.name, strlen(i.name)); \ memzero(i.path, strlen(i.path)); \ assert_se(d1 && d2); \ diff --git a/src/test/test-specifier.c b/src/test/test-specifier.c index 2648c1c3f5..e9d501955c 100644 --- a/src/test/test-specifier.c +++ b/src/test/test-specifier.c @@ -56,6 +56,38 @@ static const Specifier specifier_table[] = { {} }; +static void test_specifier_printf(void) { + static const Specifier table[] = { + { 'X', specifier_string, (char*) "AAAA" }, + { 'Y', specifier_string, (char*) "BBBB" }, + COMMON_SYSTEM_SPECIFIERS, + {} + }; + + _cleanup_free_ char *w = NULL; + int r; + + log_info("/* %s */", __func__); + + r = specifier_printf("xxx a=%X b=%Y yyy", SIZE_MAX, table, NULL, &w); + assert_se(r >= 0); + assert_se(w); + + puts(w); + assert_se(streq(w, "xxx a=AAAA b=BBBB yyy")); + + free(w); + r = specifier_printf("machine=%m, boot=%b, host=%H, version=%v, arch=%a", SIZE_MAX, table, NULL, &w); + assert_se(r >= 0); + assert_se(w); + puts(w); + + w = mfree(w); + specifier_printf("os=%o, os-version=%w, build=%B, variant=%W", SIZE_MAX, table, NULL, &w); + if (w) + puts(w); +} + static void test_specifiers(void) { log_info("/* %s */", __func__); @@ -65,7 +97,7 @@ static void test_specifiers(void) { xsprintf(spec, "%%%c", s->specifier); - assert_se(specifier_printf(spec, specifier_table, NULL, &resolved) >= 0); + assert_se(specifier_printf(spec, SIZE_MAX, specifier_table, NULL, &resolved) >= 0); log_info("%%%c → %s", s->specifier, resolved); } @@ -76,6 +108,7 @@ int main(int argc, char *argv[]) { test_specifier_escape(); test_specifier_escape_strv(); + test_specifier_printf(); test_specifiers(); return 0; diff --git a/src/test/test-strv.c b/src/test/test-strv.c index 039bb2c78a..134525288f 100644 --- a/src/test/test-strv.c +++ b/src/test/test-strv.c @@ -3,42 +3,9 @@ #include "alloc-util.h" #include "escape.h" #include "nulstr-util.h" -#include "specifier.h" #include "string-util.h" #include "strv.h" -static void test_specifier_printf(void) { - static const Specifier table[] = { - { 'X', specifier_string, (char*) "AAAA" }, - { 'Y', specifier_string, (char*) "BBBB" }, - COMMON_SYSTEM_SPECIFIERS, - {} - }; - - _cleanup_free_ char *w = NULL; - int r; - - log_info("/* %s */", __func__); - - r = specifier_printf("xxx a=%X b=%Y yyy", table, NULL, &w); - assert_se(r >= 0); - assert_se(w); - - puts(w); - assert_se(streq(w, "xxx a=AAAA b=BBBB yyy")); - - free(w); - r = specifier_printf("machine=%m, boot=%b, host=%H, version=%v, arch=%a", table, NULL, &w); - assert_se(r >= 0); - assert_se(w); - puts(w); - - w = mfree(w); - specifier_printf("os=%o, os-version=%w, build=%B, variant=%W", table, NULL, &w); - if (w) - puts(w); -} - static void test_str_in_set(void) { log_info("/* %s */", __func__); @@ -1022,7 +989,6 @@ static void test_strv_fnmatch(void) { } int main(int argc, char *argv[]) { - test_specifier_printf(); test_str_in_set(); test_strptr_in_set(); test_startswith_set(); diff --git a/src/tmpfiles/tmpfiles.c b/src/tmpfiles/tmpfiles.c index 9529b09b3f..1e09c256b0 100644 --- a/src/tmpfiles/tmpfiles.c +++ b/src/tmpfiles/tmpfiles.c @@ -2522,7 +2522,7 @@ static int specifier_expansion_from_arg(Item *i) { if (r < 0) return log_error_errno(r, "Failed to unescape parameter to write: %s", i->argument); - r = specifier_printf(unescaped, specifier_table, NULL, &resolved); + r = specifier_printf(unescaped, PATH_MAX-1, specifier_table, NULL, &resolved); if (r < 0) return r; @@ -2532,7 +2532,7 @@ static int specifier_expansion_from_arg(Item *i) { case SET_XATTR: case RECURSIVE_SET_XATTR: STRV_FOREACH(xattr, i->xattrs) { - r = specifier_printf(*xattr, specifier_table, NULL, &resolved); + r = specifier_printf(*xattr, SIZE_MAX, specifier_table, NULL, &resolved); if (r < 0) return r; @@ -2706,7 +2706,7 @@ static int parse_line( i.append_or_force = append_or_force; i.allow_failure = allow_failure; - r = specifier_printf(path, specifier_table, NULL, &i.path); + r = specifier_printf(path, PATH_MAX-1, specifier_table, NULL, &i.path); if (r == -ENXIO) return log_unresolvable_specifier(fname, line); if (r < 0) { |