summaryrefslogtreecommitdiff
path: root/src/shared/install-printf.h
diff options
context:
space:
mode:
authorYu Watanabe <watanabe.yu+github@gmail.com>2021-05-10 01:46:48 +0900
committerYu Watanabe <watanabe.yu+github@gmail.com>2021-05-12 10:26:07 +0900
commit065364920281e1cf59cab989e17aff21790505c4 (patch)
treeeb7c2c1045de0b868d706a1b68d6d3e4e0aac394 /src/shared/install-printf.h
parent678d6b4f9280cb0dcee50d5011dd9b904a42ed6a (diff)
downloadsystemd-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.h9
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);
+}