From: Emil Velikov Date: Sat, 5 Apr 2025 10:39:42 +0000 (+0100) Subject: Use sizeof() over PATH_MAX for bounds handling X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=6c5e7997a13d3950414b8112a54c1ef8a4aaa22f;p=thirdparty%2Fkmod.git Use sizeof() over PATH_MAX for bounds handling Bunch of our codebase uses sizeof() while the rest hard-coded length for the destination buffer. Converge on the former since it makes for more obvious and less error prone code. Signed-off-by: Emil Velikov Link: https://github.com/kmod-project/kmod/pull/345 Signed-off-by: Lucas De Marchi --- diff --git a/libkmod/libkmod-builtin.c b/libkmod/libkmod-builtin.c index b32848d9..2012239a 100644 --- a/libkmod/libkmod-builtin.c +++ b/libkmod/libkmod-builtin.c @@ -40,7 +40,7 @@ static bool kmod_builtin_info_init(struct kmod_builtin_info *info, struct kmod_c const char *dirname = kmod_get_dirname(ctx); size_t len = strlen(dirname); - if ((len + 1 + strlen(MODULES_BUILTIN_MODINFO) + 1) >= PATH_MAX) { + if ((len + 1 + strlen(MODULES_BUILTIN_MODINFO) + 1) >= sizeof(path)) { errno = ENAMETOOLONG; return false; } diff --git a/libkmod/libkmod-module.c b/libkmod/libkmod-module.c index ff04ee19..fbfbd7b9 100644 --- a/libkmod/libkmod-module.c +++ b/libkmod/libkmod-module.c @@ -127,7 +127,7 @@ void kmod_module_parse_depline(struct kmod_module *mod, char *line) *p = '\0'; dirname = kmod_get_dirname(mod->ctx); dirnamelen = strlen(dirname); - if (dirnamelen + 2 >= PATH_MAX) + if (dirnamelen + 2 >= sizeof(buf)) return; memcpy(buf, dirname, dirnamelen); @@ -301,7 +301,7 @@ int kmod_module_new_from_alias(struct kmod_ctx *ctx, const char *alias, const ch size_t namelen = strlen(name); size_t aliaslen = strlen(alias); - if (namelen + aliaslen + 2 > PATH_MAX) + if (namelen + aliaslen + 2 > sizeof(key)) return -ENAMETOOLONG; memcpy(key, name, namelen); diff --git a/shared/tmpfile-util.c b/shared/tmpfile-util.c index c9c20d23..1548d2d0 100644 --- a/shared/tmpfile-util.c +++ b/shared/tmpfile-util.c @@ -69,7 +69,7 @@ int tmpfile_publish(struct tmpfile *file, const char *targetname) file->fd = -1; file->dirfd = -1; - memset(file->tmpname, 0, PATH_MAX); + memset(file->tmpname, 0, sizeof(file->tmpname)); return 0; }