if (hyphen)
return false;
- if (p-s > HOST_NAME_MAX) /* Note that HOST_NAME_MAX is 64 on Linux, but DNS allows domain names up to
- * 255 characters */
+ /* Note that host name max is 64 on Linux, but DNS allows domain names up to 255 characters. */
+ if (p - s > (ssize_t) LINUX_HOST_NAME_MAX)
return false;
return true;
assert(s);
- for (p = s, d = s, dot = hyphen = true; *p && d - s < HOST_NAME_MAX; p++)
+ for (p = s, d = s, dot = hyphen = true; *p && d - s < (ssize_t) LINUX_HOST_NAME_MAX; p++)
if (*p == '.') {
if (dot || hyphen)
continue;
#include "basic-forward.h"
#include "strv.h"
+/* HOST_NAME_MAX should be 64 on linux, but musl uses the one by POSIX (255). */
+#define LINUX_HOST_NAME_MAX CONST_MIN((size_t) HOST_NAME_MAX, (size_t) 64)
+
char* get_default_hostname_raw(void);
bool valid_ldh_char(char c) _const_;
const char *colon = strchr(rvalue, ':');
if (colon) {
- r = unit_full_printf_full(u, colon + 1, HOST_NAME_MAX, &h);
+ r = unit_full_printf_full(u, colon + 1, LINUX_HOST_NAME_MAX, &h);
if (r < 0) {
log_syntax(unit, LOG_WARNING, filename, line, r,
"Failed to resolve unit specifiers in '%s', ignoring: %m", colon + 1);
assert_return(lldp_tx, -EINVAL);
/* An empty string unset the previously set hostname. */
- if (!isempty(hostname)) {
- assert_cc(HOST_NAME_MAX < 512);
-
- if (!hostname_is_valid(hostname, 0))
- return -EINVAL;
- }
+ if (!isempty(hostname) && !hostname_is_valid(hostname, /* flags= */ 0))
+ return -EINVAL;
return free_and_strdup(&lldp_tx->hostname, empty_to_null(hostname));
}
int shorten_overlong(const char *s, char **ret) {
_cleanup_free_ char *h = NULL;
- /* Shorten an overlong name to HOST_NAME_MAX or to the first dot,
+ /* Shorten an overlong name to LINUX_HOST_NAME_MAX or to the first dot,
* whatever comes earlier. */
assert(s);
if (p)
*p = 0;
- strshorten(h, HOST_NAME_MAX);
+ strshorten(h, LINUX_HOST_NAME_MAX);
if (!hostname_is_valid(h, /* flags= */ 0))
return -EDOM;
if (r < 0)
return r;
- char buf[HOST_NAME_MAX+1];
+ char buf[LINUX_HOST_NAME_MAX+1];
ssize_t n = loop_read(result_pipe[0], buf, sizeof(buf), /* do_poll = */ false);
if (n < 0)
return n;