From: Emil Velikov Date: Sat, 5 Apr 2025 10:39:42 +0000 (+0100) Subject: Use sizeof() over PATH_MAX in snprintf() contexts X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0fd84a53abf5af8621b1fbd420622a85dc3297e4;p=thirdparty%2Fkmod.git Use sizeof() over PATH_MAX in snprintf() contexts 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 f354d455..b32848d9 100644 --- a/libkmod/libkmod-builtin.c +++ b/libkmod/libkmod-builtin.c @@ -44,7 +44,7 @@ static bool kmod_builtin_info_init(struct kmod_builtin_info *info, struct kmod_c errno = ENAMETOOLONG; return false; } - snprintf(path, PATH_MAX, "%s/" MODULES_BUILTIN_MODINFO, dirname); + snprintf(path, sizeof(path), "%s/" MODULES_BUILTIN_MODINFO, dirname); fp = fopen(path, "r"); if (fp == NULL) diff --git a/shared/tmpfile-util.c b/shared/tmpfile-util.c index 4d6fc557..c9c20d23 100644 --- a/shared/tmpfile-util.c +++ b/shared/tmpfile-util.c @@ -31,8 +31,8 @@ FILE *tmpfile_openat(int dirfd, mode_t mode, struct tmpfile *file) if (targetdir == NULL) goto create_fail; - n = snprintf(tmpfile_path, PATH_MAX, "%s/%s", targetdir, tmpname_tmpl); - if (n < 0 || n >= PATH_MAX) + n = snprintf(tmpfile_path, sizeof(tmpfile_path), "%s/%s", targetdir, tmpname_tmpl); + if (n < 0 || n >= (int)sizeof(tmpfile_path)) goto create_fail; fd = mkstemp(tmpfile_path); diff --git a/tools/depmod.c b/tools/depmod.c index fb5d426a..cd29bf4f 100644 --- a/tools/depmod.c +++ b/tools/depmod.c @@ -3011,17 +3011,17 @@ static int do_depmod(int argc, char *argv[]) while (module_directory[0] == '/') module_directory++; - cfg.dirnamelen = snprintf(cfg.dirname, PATH_MAX, "%s/%s/%s", root, + cfg.dirnamelen = snprintf(cfg.dirname, sizeof(cfg.dirname), "%s/%s/%s", root, module_directory, cfg.kversion); - if (cfg.dirnamelen >= PATH_MAX) { + if (cfg.dirnamelen >= sizeof(cfg.dirname)) { ERR("Bad directory %s/%s/%s: path too long\n", root, module_directory, cfg.kversion); goto cmdline_failed; } - cfg.outdirnamelen = snprintf(cfg.outdirname, PATH_MAX, "%s/%s/%s", + cfg.outdirnamelen = snprintf(cfg.outdirname, sizeof(cfg.outdirname), "%s/%s/%s", out_root ?: root, module_directory, cfg.kversion); - if (cfg.outdirnamelen >= PATH_MAX) { + if (cfg.outdirnamelen >= sizeof(cfg.outdirname)) { ERR("Bad directory %s/%s/%s: path too long\n", out_root ?: root, module_directory, cfg.kversion); goto cmdline_failed;