diff options
author | Yu Watanabe <watanabe.yu+github@gmail.com> | 2021-05-10 01:46:48 +0900 |
---|---|---|
committer | Yu Watanabe <watanabe.yu+github@gmail.com> | 2021-05-12 10:26:07 +0900 |
commit | 065364920281e1cf59cab989e17aff21790505c4 (patch) | |
tree | eb7c2c1045de0b868d706a1b68d6d3e4e0aac394 /src/shared/install-printf.h | |
parent | 678d6b4f9280cb0dcee50d5011dd9b904a42ed6a (diff) | |
download | systemd-065364920281e1cf59cab989e17aff21790505c4.tar.gz |
tree-wide: refuse too long strings earlier in specifier_printf()
We usually call specifier_printf() and then check the validity of
the result. In many cases, validity checkers, e.g. path_is_valid(),
refuse too long strings. This makes specifier_printf() refuse such
long results earlier.
Moreover, unit_full_string() and description field in sysuser now
refuse results longer than LONG_LINE_MAX. config_parse() already
refuses the line longer than LONG_LINE_MAX. Hence, it should be ok
to set the same value as the maximum length of the resolved string.
Diffstat (limited to 'src/shared/install-printf.h')
-rw-r--r-- | src/shared/install-printf.h | 9 |
1 files changed, 8 insertions, 1 deletions
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); +} |