]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
lib/canonicalize: use ul_ prefix
authorKarel Zak <kzak@redhat.com>
Wed, 27 Aug 2025 10:39:03 +0000 (12:39 +0200)
committerKarel Zak <kzak@redhat.com>
Mon, 1 Sep 2025 11:49:48 +0000 (13:49 +0200)
Signed-off-by: Karel Zak <kzak@redhat.com>
16 files changed:
disk-utils/fdisk-list.c
include/canonicalize.h
lib/canonicalize.c
lib/loopdev.c
libblkid/src/devname.c
libblkid/src/evaluate.c
libfdisk/src/utils.c
libmount/src/cache.c
libmount/src/tab.c
libmount/src/utils.c
login-utils/sulogin-consoles.c
misc-utils/lsblk.c
misc-utils/whereis.c
sys-utils/losetup.c
sys-utils/mount.c
sys-utils/umount.c

index 24c4e040449f9b2dac6d3db93009159cc30af418..04ee2b431f23eeb210aa07e5354e3e53e92b700b 100644 (file)
@@ -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;
 
index 81a30ed123ab28cda55133acfc7b0114809cb8bb..08cdb37ecc0a11f52704c9c2f77f44d0a807c56f 100644 (file)
 #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;
index ab86a7483c11a04765b0010084170786c14e8354..854e611465b0ed9215da3fcde0087d0cd35b9253 100644 (file)
  *
  * Since 2.6.29 (patch 784aae735d9b0bba3f8b9faef4c8b30df3bf0128) kernel sysfs
  * provides the real DM device names in /sys/block/<ptname>/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);
 
index 8c5beaeb7e1cda0c682ba2b71676236ae0c034a4..8a51e5e5f46f1d1fcecab16fcc7c26110566b6fe 100644 (file)
@@ -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;
 
index 0fb25325efb9e432f2b142fcebbcb7ea1dde45d8..b9717e23ab23cc913293c94b6fd2ed6ef9fd1dd2 100644 (file)
@@ -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/<name>.
         */
        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)
index 26e556c0896654321a6c2cdff8b16f016aef2834..a4d04bca93e3972ed7e681c6abea7e49873d99ce 100644 (file)
@@ -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);
index ef2663737dd705475e897ddd651c17ee792ceca7..a3397ab523f8da1efcc921dc8e056b7dfe2c5f21 100644 (file)
@@ -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;
        }
index b7956346f8b157bdad5546d9f0e2f02c821fa2a6..294265449152b4fb54135d0335aa3c4fecc146ae 100644 (file)
@@ -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;
index 9535dd751565fe96a2b8b7b674d511a1fbe41404..9a8033c2562cdd014f04286ab7e1e2cdf309f1e0 100644 (file)
@@ -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) {
index 46050ff51f5bbe517e464ca019847d08f715acde..7626b6f91ee412e97f40e1f81db8e407a9b8777f 100644 (file)
@@ -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)
index cb9eb02bb8687f793acce7fd94e17b7ccc41d91c..93eeab111ef6bbfb13c0145c437b97b431d3945c 100644 (file)
@@ -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__
index 4690083cdeb73184a626a5e467d686bb68d79b26..39a8ca83f4df00fbcb355243b2b49f55d5966fe4 100644 (file)
@@ -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);
index b575e57aeea561caad38819ada1cf466231c8142..8e500c00983487d4e532c056eb8505a1f3479063 100644 (file)
@@ -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 */
index 1a66173865ca8b0f81e4b2071d3a177fd306f2c3..f35bd79fc4889a6e2294389e3599a62402bfae4f 100644 (file)
@@ -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)
index d6dd2805af576dc9d73602adfce8f3ef72060fcd..2450228d04da6ff98a25d25bcb97d1ea183de89f 100644 (file)
@@ -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);
index c115f44a0efde01d0ca78affb2ca168b5c79c566..18824e09f235d81a50537211e127fc0186557a09 100644 (file)
@@ -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);