diff options
| author | David Gibson <david@gibson.dropbear.id.au> | 2026-05-03 23:55:49 +0200 |
|---|---|---|
| committer | Stefano Brivio <sbrivio@redhat.com> | 2026-05-07 08:06:30 +0200 |
| commit | cbcd4284111f56a233b0c68fba403650c1fb0ccc (patch) | |
| tree | bdc7c2aeb4ffbd769e12a54051f1ec5bbb551712 | |
| parent | 393c87e18498f77023ffc3b902810207c7b6c835 (diff) | |
| download | passt-cbcd4284111f56a233b0c68fba403650c1fb0ccc.tar passt-cbcd4284111f56a233b0c68fba403650c1fb0ccc.tar.gz passt-cbcd4284111f56a233b0c68fba403650c1fb0ccc.tar.bz2 passt-cbcd4284111f56a233b0c68fba403650c1fb0ccc.tar.lz passt-cbcd4284111f56a233b0c68fba403650c1fb0ccc.tar.xz passt-cbcd4284111f56a233b0c68fba403650c1fb0ccc.tar.zst passt-cbcd4284111f56a233b0c68fba403650c1fb0ccc.zip | |
pif: Limit pif names to 128 bytes
All current pif names are quite short, and we expect them to remain short
when/if we allow arbitrary pifs. However, because of the structure of
the current code we don't enforce any limit on the length.
This will become more important with dynamic configuration updates, so
start enforcing a length limit. Specifically we allow pif names to be up
to 128 bytes (PIF_NAME_SIZE), including the terminating \0. This is
more or less arbitrary, but seems like it should be comfortably enough for
all the cases we have in mind.
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Reviewed-by: Laurent Vivier <lvivier@redhat.com>
[sbrivio: Fixed typo in comment, reported by Laurent]
Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
| -rw-r--r-- | pif.c | 2 | ||||
| -rw-r--r-- | pif.h | 5 |
2 files changed, 5 insertions, 2 deletions
@@ -17,7 +17,7 @@ #include "inany.h" #include "epoll_ctl.h" -const char *pif_type_str[] = { +const char pif_type_str[][PIF_NAME_SIZE] = { [PIF_NONE] = "<none>", [PIF_HOST] = "HOST", [PIF_TAP] = "TAP", @@ -35,7 +35,9 @@ enum pif_type { PIF_NUM_TYPES, }; -extern const char *pif_type_str[]; +/* Maximum size of a pif name, including \0 */ +#define PIF_NAME_SIZE (128) +extern const char pif_type_str[][PIF_NAME_SIZE]; static inline const char *pif_type(enum pif_type pt) { @@ -43,6 +45,7 @@ static inline const char *pif_type(enum pif_type pt) return pif_type_str[pt]; else return "?"; + static_assert(sizeof("?") <= PIF_NAME_SIZE); } static inline const char *pif_name(uint8_t pif) |
