libvirt-dbus/SOURCES/libvirt-dbus-util-fix-virtD...

45 lines
1.4 KiB
Diff

From 68b2ff91b88fd2588db1770addab2f2ccf5a1aa8 Mon Sep 17 00:00:00 2001
Message-Id: <68b2ff91b88fd2588db1770addab2f2ccf5a1aa8@dist-git>
From: Pavel Hrdina <phrdina@redhat.com>
Date: Mon, 7 Jan 2019 14:12:15 +0100
Subject: [PATCH] util: fix virtDBusUtilDecodeUUID
This function is supposed to convert ASCII character into its hex
representation, however the current implementation was wrong because
the first comparison would be false for all printable characters. In
most cases it worked but for example '$' which is 0x24 in HEX would be
incorrectly converted to 0x2[ which is obviously wrong.
Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1647823
Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
(cherry picked from commit f70ba7cb4dc08052f025f0217cc54a2ff36bc69d)
Reviewed-by: Andrea Bolognani <abologna@redhat.com>
Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
---
src/util.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/src/util.c b/src/util.c
index 8c822f2..31ee959 100644
--- a/src/util.c
+++ b/src/util.c
@@ -182,11 +182,12 @@ virtDBusUtilDecodeUUID(const gchar *uuid)
}
static guchar
-virtDBusUtilNumToHexchar(const guchar c)
+virtDBusUtilNumToHexchar(const guchar n)
{
+ guchar c = n & 0x0f;
if (c < 10)
return '0' + c;
- return 'a' + (c & 0x0f) - 10;
+ return 'a' + c - 10;
}
static guchar
--
2.20.1