Unverified Commit f0c6219a by Stéphane Graber Committed by GitHub

Merge pull request #3773 from brauner/2021-04-06/fixes_2

confile & log: fixes
parents 9d984c3f ae393e13
......@@ -300,12 +300,22 @@ struct lxc_config_t *lxc_get_config_exact(const char *key)
return NULL;
}
static inline bool match_config_item(const struct lxc_config_t *entry,
const char *key)
/* Assume a reasonable subkey size limit. */
#define LXC_SUBKEY_LEN_MAX 256
static inline int match_config_item(const struct lxc_config_t *entry, const char *key)
{
size_t len;
if (entry->strict)
return strequal(entry->name, key);
return strnequal(entry->name, key, strlen(entry->name));
/* There should be no subkey longer than this. */
len = strnlen(entry->name, LXC_SUBKEY_LEN_MAX);
if (len == LXC_SUBKEY_LEN_MAX)
return error_ret(-E2BIG, "Excessive subkey length");
return strnequal(entry->name, key, len);
}
struct lxc_config_t *lxc_get_config(const char *key)
......@@ -313,8 +323,12 @@ struct lxc_config_t *lxc_get_config(const char *key)
for (size_t i = 0; i < ARRAY_SIZE(config_jump_table); i++) {
struct lxc_config_t *cur = &config_jump_table[i];
if (!match_config_item(cur, key))
switch (match_config_item(cur, key)) {
case 0:
continue;
case -E2BIG:
return NULL;
}
return cur;
}
......
......@@ -583,6 +583,13 @@ __lxc_unused static inline void LXC_##LEVEL(struct lxc_log_locinfo* locinfo, \
__internal_ret__; \
})
#define error_ret(__ret__, format, ...) \
({ \
typeof(__ret__) __internal_ret__ = (__ret__); \
ERROR(format, ##__VA_ARGS__); \
__internal_ret__; \
})
#define syswarn(format, ...) \
({ \
SYSWARN(format, ##__VA_ARGS__); \
......
......@@ -663,10 +663,10 @@ enum {
__internal_ret__; \
})
#define ret_errno(__errno__) \
({ \
errno = (__errno__); \
-(__errno__); \
#define ret_errno(__errno__) \
({ \
errno = labs(__errno__); \
-errno; \
})
/* Container's specific file/directory names */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment