From 6585841587c4664ee0941611b682c28d3f36c7a2 Mon Sep 17 00:00:00 2001 From: Karel Zak Date: Wed, 27 Aug 2025 12:39:03 +0200 Subject: [PATCH] lib/canonicalize: use ul_ prefix Signed-off-by: Karel Zak --- disk-utils/fdisk-list.c | 2 +- include/canonicalize.h | 10 +++++----- lib/canonicalize.c | 21 ++++++++++++--------- lib/loopdev.c | 4 ++-- libblkid/src/devname.c | 4 ++-- libblkid/src/evaluate.c | 4 ++-- libfdisk/src/utils.c | 2 +- libmount/src/cache.c | 2 +- libmount/src/tab.c | 2 +- libmount/src/utils.c | 4 ++-- login-utils/sulogin-consoles.c | 2 +- misc-utils/lsblk.c | 2 +- misc-utils/whereis.c | 2 +- sys-utils/losetup.c | 4 ++-- sys-utils/mount.c | 4 ++-- sys-utils/umount.c | 2 +- 16 files changed, 37 insertions(+), 34 deletions(-) diff --git a/disk-utils/fdisk-list.c b/disk-utils/fdisk-list.c index 24c4e0404..04ee2b431 100644 --- a/disk-utils/fdisk-list.c +++ b/disk-utils/fdisk-list.c @@ -421,7 +421,7 @@ char *next_proc_partition(FILE **f) if (!sysfs_devno_to_devpath(devno, buf, sizeof(buf))) continue; - cn = canonicalize_path(buf); + cn = ul_canonicalize_path(buf); if (!cn) continue; diff --git a/include/canonicalize.h b/include/canonicalize.h index 81a30ed12..08cdb37ec 100644 --- a/include/canonicalize.h +++ b/include/canonicalize.h @@ -15,14 +15,14 @@ #include "c.h" /* for PATH_MAX */ #include "strutils.h" -extern char *canonicalize_path(const char *path); -extern char *canonicalize_path_restricted(const char *path); -extern char *canonicalize_dm_name(const char *ptname); -extern char *__canonicalize_dm_name(const char *prefix, const char *ptname); +extern char *ul_canonicalize_path(const char *path); +extern char *ul_canonicalize_path_restricted(const char *path); +extern char *ul_canonicalize_dm_name(const char *ptname); +extern char *ul_canonicalize_dm_name_prefixed(const char *prefix, const char *ptname); extern char *ul_absolute_path(const char *path); -static inline int is_relative_path(const char *path) +static inline int ul_is_relative_path(const char *path) { if (!path || *path == '/') return 0; diff --git a/lib/canonicalize.c b/lib/canonicalize.c index ab86a7483..854e61146 100644 --- a/lib/canonicalize.c +++ b/lib/canonicalize.c @@ -26,8 +26,11 @@ * * Since 2.6.29 (patch 784aae735d9b0bba3f8b9faef4c8b30df3bf0128) kernel sysfs * provides the real DM device names in /sys/block//dm/name + * + * The @prefix allows /sys to be mounted or stored outside the system root + * (/prefix/sys/...). */ -char *__canonicalize_dm_name(const char *prefix, const char *ptname) +char *ul_canonicalize_dm_name_prefixed(const char *prefix, const char *ptname) { FILE *f; size_t sz; @@ -55,9 +58,9 @@ char *__canonicalize_dm_name(const char *prefix, const char *ptname) return res; } -char *canonicalize_dm_name(const char *ptname) +char *ul_canonicalize_dm_name(const char *ptname) { - return __canonicalize_dm_name(NULL, ptname); + return ul_canonicalize_dm_name_prefixed(NULL, ptname); } static int is_dm_devname(char *canonical, char **name) @@ -88,7 +91,7 @@ char *ul_absolute_path(const char *path) char cwd[PATH_MAX], *res, *p; size_t psz, csz; - if (!is_relative_path(path)) { + if (!ul_is_relative_path(path)) { errno = EINVAL; return NULL; } @@ -140,7 +143,7 @@ do_canonicalize(const char *path, char **result, return 1; if (is_dm_devname(canonical, &dmname)) { - char *dm = canonicalize_dm_name(dmname); + char *dm = ul_canonicalize_dm_name(dmname); if (dm) { free(canonical); canonical = dm; @@ -157,7 +160,7 @@ do_canonicalize(const char *path, char **result, * unreachable path is not an error (!), and in this case, it just duplicates * @path. */ -char *canonicalize_path(const char *path) +char *ul_canonicalize_path(const char *path) { char *canonical = NULL; @@ -171,7 +174,7 @@ char *canonicalize_path(const char *path) * Drop permissions (e.g., suid) and canonicalize the path. If the path is * unreadable (for example, due to missing permissions), it returns NULL. */ -char *canonicalize_path_restricted(const char *path) +char *ul_canonicalize_path_restricted(const char *path) { return ul_restricted_path_oper(path, do_canonicalize, NULL); } @@ -188,11 +191,11 @@ int main(int argc, char **argv) fprintf(stdout, "orig: %s\n", argv[1]); - p = canonicalize_path(argv[1]); + p = ul_canonicalize_path(argv[1]); fprintf(stdout, "real: %s\n", p); free(p); - p = canonicalize_path_restricted(argv[1]); + p = ul_canonicalize_path_restricted(argv[1]); fprintf(stdout, "real-restricted: %s\n", p); free(p); diff --git a/lib/loopdev.c b/lib/loopdev.c index 8c5beaeb7..8a51e5e5f 100644 --- a/lib/loopdev.c +++ b/lib/loopdev.c @@ -692,7 +692,7 @@ int is_loopdev(const char *device) snprintf(name, sizeof(name), _PATH_SYS_DEVBLOCK "/%d:%d", major(st.st_rdev), minor(st.st_rdev)); - cn = canonicalize_path(name); + cn = ul_canonicalize_path(name); if (cn) p = stripoff_last_component(cn); rc = p && ul_startswith(p, "loop"); @@ -1257,7 +1257,7 @@ int loopcxt_set_backing_file(struct loopdev_cxt *lc, const char *filename) if (!lc) return -EINVAL; - lc->filename = canonicalize_path(filename); + lc->filename = ul_canonicalize_path(filename); if (!lc->filename) return -errno; diff --git a/libblkid/src/devname.c b/libblkid/src/devname.c index 0fb25325e..b9717e23a 100644 --- a/libblkid/src/devname.c +++ b/libblkid/src/devname.c @@ -66,7 +66,7 @@ blkid_dev blkid_get_dev(blkid_cache cache, const char *devname, int flags) } /* try canonicalize the name */ - if (!dev && (cn = canonicalize_path(devname))) { + if (!dev && (cn = ul_canonicalize_path(devname))) { if (strcmp(cn, devname) != 0) { DBG(DEVNAME, ul_debug("search canonical %s", cn)); list_for_each(p, &cache->bic_devs) { @@ -200,7 +200,7 @@ static void probe_one(blkid_cache cache, const char *ptname, * to standard /dev/mapper/. */ if (!strncmp(ptname, "dm-", 3) && isdigit(ptname[3])) { - devname = canonicalize_dm_name(ptname); + devname = ul_canonicalize_dm_name(ptname); if (!devname) blkid__scan_dir("/dev/mapper", devno, NULL, &devname); if (devname) diff --git a/libblkid/src/evaluate.c b/libblkid/src/evaluate.c index 26e556c08..a4d04bca9 100644 --- a/libblkid/src/evaluate.c +++ b/libblkid/src/evaluate.c @@ -171,7 +171,7 @@ static char *evaluate_by_udev(const char *token, const char *value, int uevent) if (!S_ISBLK(st.st_mode)) return NULL; - path = canonicalize_path(dev); + path = ul_canonicalize_path(dev); if (!path) return NULL; @@ -298,7 +298,7 @@ char *blkid_evaluate_spec(const char *spec, blkid_cache *cache) if (v) res = blkid_evaluate_tag(t, v, cache); else - res = canonicalize_path(spec); + res = ul_canonicalize_path(spec); free(t); free(v); diff --git a/libfdisk/src/utils.c b/libfdisk/src/utils.c index ef2663737..a3397ab52 100644 --- a/libfdisk/src/utils.c +++ b/libfdisk/src/utils.c @@ -128,7 +128,7 @@ char *fdisk_partname(const char *dev, size_t partno) /* It is impossible to predict /dev/dm-N partition names. */ if (strncmp(dev, "/dev/dm-", sizeof("/dev/dm-") - 1) == 0) { - dev_mapped = canonicalize_dm_name (dev + 5); + dev_mapped = ul_canonicalize_dm_name (dev + 5); if (dev_mapped) dev = dev_mapped; } diff --git a/libmount/src/cache.c b/libmount/src/cache.c index b7956346f..294265449 100644 --- a/libmount/src/cache.c +++ b/libmount/src/cache.c @@ -518,7 +518,7 @@ static char *canonicalize_path_and_cache(const char *path, char *value; DBG(CACHE, ul_debugobj(cache, "canonicalize path %s", path)); - p = canonicalize_path(path); + p = ul_canonicalize_path(path); if (p && cache) { value = p; diff --git a/libmount/src/tab.c b/libmount/src/tab.c index 9535dd751..9a8033c25 100644 --- a/libmount/src/tab.c +++ b/libmount/src/tab.c @@ -1161,7 +1161,7 @@ struct libmnt_fs *mnt_table_find_target(struct libmnt_table *tb, const char *pat } /* try absolute path */ - if (is_relative_path(path) && (cn = ul_absolute_path(path))) { + if (ul_is_relative_path(path) && (cn = ul_absolute_path(path))) { DBG(TAB, ul_debugobj(tb, "lookup absolute TARGET: '%s'", cn)); mnt_reset_iter(&itr, direction); while (mnt_table_next_fs(tb, &itr, &fs) == 0) { diff --git a/libmount/src/utils.c b/libmount/src/utils.c index 46050ff51..7626b6f91 100644 --- a/libmount/src/utils.c +++ b/libmount/src/utils.c @@ -1416,7 +1416,7 @@ static int test_mountpoint(struct libmnt_test *ts __attribute__((unused)), if (argc != 2) return -1; - char *path = canonicalize_path(argv[1]), + char *path = ul_canonicalize_path(argv[1]), *mnt = path ? mnt_get_mountpoint(path) : NULL; printf("%s: %s\n", argv[1], mnt ? : "unknown"); @@ -1451,7 +1451,7 @@ static int test_chdir(struct libmnt_test *ts __attribute__((unused)), return -1; int rc; - char *path = canonicalize_path(argv[1]), + char *path = ul_canonicalize_path(argv[1]), *last = NULL; if (!path) diff --git a/login-utils/sulogin-consoles.c b/login-utils/sulogin-consoles.c index cb9eb02bb..93eeab111 100644 --- a/login-utils/sulogin-consoles.c +++ b/login-utils/sulogin-consoles.c @@ -227,7 +227,7 @@ dev_t devattr(const char * const tty) /* * Search below /dev for the character device in `dev_t comparedev' variable. * Note that realpath(3) is used here to avoid not existent devices due the - * strdup(3) used in our canonicalize_path()! + * strdup(3) used in our ul_canonicalize_path()! */ static #ifdef __GNUC__ diff --git a/misc-utils/lsblk.c b/misc-utils/lsblk.c index 4690083cd..39a8ca83f 100644 --- a/misc-utils/lsblk.c +++ b/misc-utils/lsblk.c @@ -401,7 +401,7 @@ static char *get_device_path(struct lsblk_device *dev) assert(dev->name); if (is_dm(dev->name)) - return __canonicalize_dm_name(lsblk->sysroot, dev->name); + return ul_canonicalize_dm_name_prefixed(lsblk->sysroot, dev->name); snprintf(path, sizeof(path), "/dev/%s", dev->name); sysfs_devname_sys_to_dev(path); diff --git a/misc-utils/whereis.c b/misc-utils/whereis.c index b575e57ae..8e500c009 100644 --- a/misc-utils/whereis.c +++ b/misc-utils/whereis.c @@ -251,7 +251,7 @@ static void dirlist_add_dir(struct wh_dirlist **ls0, int type, const char *dir) ls->st_ino = st.st_ino; ls->st_dev = st.st_dev; ls->type = type; - ls->path = canonicalize_path(dir); + ls->path = ul_canonicalize_path(dir); if (!*ls0) *ls0 = ls; /* first in the list */ diff --git a/sys-utils/losetup.c b/sys-utils/losetup.c index 1a6617386..f35bd79fc 100644 --- a/sys-utils/losetup.c +++ b/sys-utils/losetup.c @@ -209,7 +209,7 @@ static int show_all_loops(struct loopdev_cxt *lc, const char *file, used = loopcxt_is_used(lc, st, bf, offset, 0, flags); if (!used && !cn_file) { - bf = cn_file = canonicalize_path(file); + bf = cn_file = ul_canonicalize_path(file); used = loopcxt_is_used(lc, st, bf, offset, 0, flags); } if (!used) @@ -430,7 +430,7 @@ static int show_table(struct loopdev_cxt *lc, used = loopcxt_is_used(lc, st, bf, offset, 0, flags); if (!used && !cn_file) { - bf = cn_file = canonicalize_path(file); + bf = cn_file = ul_canonicalize_path(file); used = loopcxt_is_used(lc, st, bf, offset, 0, flags); } if (!used) diff --git a/sys-utils/mount.c b/sys-utils/mount.c index d6dd2805a..2450228d0 100644 --- a/sys-utils/mount.c +++ b/sys-utils/mount.c @@ -496,7 +496,7 @@ static int sanitize_paths(struct libmnt_context *cxt) p = mnt_fs_get_target(fs); if (p) { - char *np = canonicalize_path_restricted(p); + char *np = ul_canonicalize_path_restricted(p); if (!np) return -EPERM; mnt_fs_set_target(fs, np); @@ -505,7 +505,7 @@ static int sanitize_paths(struct libmnt_context *cxt) p = mnt_fs_get_srcpath(fs); if (p) { - char *np = canonicalize_path_restricted(p); + char *np = ul_canonicalize_path_restricted(p); if (!np) return -EPERM; mnt_fs_set_source(fs, np); diff --git a/sys-utils/umount.c b/sys-utils/umount.c index c115f44a0..18824e09f 100644 --- a/sys-utils/umount.c +++ b/sys-utils/umount.c @@ -446,7 +446,7 @@ static char *sanitize_path(const char *path) if (!path) return NULL; - p = canonicalize_path_restricted(path); + p = ul_canonicalize_path_restricted(path); if (!p) err(MNT_EX_USAGE, "%s", path); -- 2.47.3