1
0
Fork 0
util-linux/debian/patches/upstream-stable/lsblk-avoid-strcasecmp-for-ASCII-only-strings.patch
Daniel Baumann 070ab789ab
Adding debian version 2.41-5.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
2025-06-21 11:26:36 +02:00

93 lines
3.1 KiB
Diff

From: Karel Zak <kzak@redhat.com>
Date: Tue, 1 Apr 2025 17:45:01 +0200
Subject: lsblk: avoid strcasecmp() for ASCII-only strings
Use cctype.h for locale-independent string comparison and to avoid
tricky string conversions like in tr_TR locales.
Fixes: https://github.com/util-linux/util-linux/issues/3490
Signed-off-by: Karel Zak <kzak@redhat.com>
(cherry picked from commit b5ae9e8d0234738f381c56aa797aeba81a05d587)
---
misc-utils/lsblk-properties.c | 11 ++++++-----
misc-utils/lsblk.c | 7 ++++---
2 files changed, 10 insertions(+), 8 deletions(-)
diff --git a/misc-utils/lsblk-properties.c b/misc-utils/lsblk-properties.c
index 66a6df6..21e764b 100644
--- a/misc-utils/lsblk-properties.c
+++ b/misc-utils/lsblk-properties.c
@@ -6,6 +6,7 @@
#endif
#include "c.h"
+#include "cctype.h"
#include "xalloc.h"
#include "mangle.h"
#include "path.h"
@@ -352,13 +353,13 @@ done:
static int name2method(const char *name, size_t namesz)
{
- if (namesz == 4 && strncasecmp(name, "none", namesz) == 0)
+ if (namesz == 4 && c_strncasecmp(name, "none", namesz) == 0)
return LSBLK_METHOD_NONE;
- if (namesz == 4 && strncasecmp(name, "udev", namesz) == 0)
+ if (namesz == 4 && c_strncasecmp(name, "udev", namesz) == 0)
return LSBLK_METHOD_UDEV;
- if (namesz == 5 && strncasecmp(name, "blkid", namesz) == 0)
+ if (namesz == 5 && c_strncasecmp(name, "blkid", namesz) == 0)
return LSBLK_METHOD_BLKID;
- if (namesz == 4 && strncasecmp(name, "file", namesz) == 0)
+ if (namesz == 4 && c_strncasecmp(name, "file", namesz) == 0)
return LSBLK_METHOD_FILE;
warnx(_("unknown properties probing method: %s"), name);
@@ -472,7 +473,7 @@ const char *lsblk_parttype_code_to_string(const char *code, const char *pttype)
const struct lsblk_parttype *t = &gpt_types[i];
if (t->name && t->typestr &&
- strcasecmp(code, t->typestr) == 0)
+ c_strcasecmp(code, t->typestr) == 0)
return t->name;
}
}
diff --git a/misc-utils/lsblk.c b/misc-utils/lsblk.c
index 6a8dc50..bd2621c 100644
--- a/misc-utils/lsblk.c
+++ b/misc-utils/lsblk.c
@@ -40,6 +40,7 @@
#include <blkid.h>
#include "c.h"
+#include "cctype.h"
#include "pathnames.h"
#include "blkdev.h"
#include "canonicalize.h"
@@ -350,7 +351,7 @@ static int column_name_to_id(const char *name, size_t namesz)
for (i = 0; i < ARRAY_SIZE(infos); i++) {
const char *cn = infos[i].name;
- if (!strncasecmp(name, cn, namesz) && !*(cn + namesz))
+ if (!c_strncasecmp(name, cn, namesz) && !*(cn + namesz))
return i;
}
@@ -362,7 +363,7 @@ static int column_name_to_id(const char *name, size_t namesz)
for (i = 0; i < ARRAY_SIZE(infos); i++) {
if (scols_shellvar_name(infos[i].name, &buf, &bufsz) != 0)
continue;
- if (!strncasecmp(name, buf, namesz) && !*(buf + namesz)) {
+ if (!c_strncasecmp(name, buf, namesz) && !*(buf + namesz)) {
free(buf);
return i;
}
@@ -463,7 +464,7 @@ static char *get_type(struct lsblk_device *dev)
if (dm_uuid_prefix) {
/* kpartx hack to remove partition number */
- if (strncasecmp(dm_uuid_prefix, "part", 4) == 0)
+ if (c_strncasecmp(dm_uuid_prefix, "part", 4) == 0)
dm_uuid_prefix[4] = '\0';
res = xstrdup(dm_uuid_prefix);