From 3999e62a72f46d525ee4cc10b18781468ace9b9c Mon Sep 17 00:00:00 2001 From: =?utf8?q?Pali=20Roh=C3=A1r?= Date: Mon, 20 Nov 2017 18:16:59 +0100 Subject: [PATCH] libblkid: udf: Fix parsing UDF revision MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit UDF revision is stored as decimal number in hexadecimal format. E.g. number 0x0150 is revision 1.50, number 0x0201 is revision 2.01. Apparently all UDF test images have number which has same representation in decimal and hexadecimal format, so problem was not detected. This patch adds new test image with UDF revision 1.50. Internally number is stored as 0x0150. In decimal format it is (incorrectly) 1.80, but in hexadecimal correct 1.50. $ dd if=/dev/zero of=udf-hdd-mkudffs-1.3-8.img bs=1M count=10 $ mkudffs -r 0x150 -b 512 udf-hdd-mkudffs-1.3-8.img Signed-off-by: Pali Rohár --- libblkid/src/superblocks/udf.c | 4 +++- .../blkid/low-probe-udf-hdd-mkudffs-1.3-8 | 10 ++++++++++ .../blkid/images-fs/udf-hdd-mkudffs-1.3-8.img.xz | Bin 0 -> 2328 bytes 3 files changed, 13 insertions(+), 1 deletion(-) create mode 100644 tests/expected/blkid/low-probe-udf-hdd-mkudffs-1.3-8 create mode 100644 tests/ts/blkid/images-fs/udf-hdd-mkudffs-1.3-8.img.xz diff --git a/libblkid/src/superblocks/udf.c b/libblkid/src/superblocks/udf.c index 756fbcf63b..bd8e0a5c25 100644 --- a/libblkid/src/superblocks/udf.c +++ b/libblkid/src/superblocks/udf.c @@ -450,7 +450,9 @@ real_blksz: } if (udf_rev) - blkid_probe_sprintf_version(pr, "%d.%02d", (int)(udf_rev >> 8), (int)(udf_rev & 0xFF)); + /* UDF revision is stored as decimal number in hexadecimal format. + * E.g. number 0x0150 is revision 1.50, number 0x0201 is revision 2.01. */ + blkid_probe_sprintf_version(pr, "%x.%02x", (unsigned int)(udf_rev >> 8), (unsigned int)(udf_rev & 0xFF)); return 0; } diff --git a/tests/expected/blkid/low-probe-udf-hdd-mkudffs-1.3-8 b/tests/expected/blkid/low-probe-udf-hdd-mkudffs-1.3-8 new file mode 100644 index 0000000000..448c8f90ba --- /dev/null +++ b/tests/expected/blkid/low-probe-udf-hdd-mkudffs-1.3-8 @@ -0,0 +1,10 @@ +ID_FS_LABEL=LinuxUDF +ID_FS_LABEL_ENC=LinuxUDF +ID_FS_LOGICAL_VOLUME_ID=LinuxUDF +ID_FS_TYPE=udf +ID_FS_USAGE=filesystem +ID_FS_UUID=5a11940936fe76a8 +ID_FS_UUID_ENC=5a11940936fe76a8 +ID_FS_VERSION=1.50 +ID_FS_VOLUME_ID=LinuxUDF +ID_FS_VOLUME_SET_ID=5a11940936fe76a8LinuxUDF diff --git a/tests/ts/blkid/images-fs/udf-hdd-mkudffs-1.3-8.img.xz b/tests/ts/blkid/images-fs/udf-hdd-mkudffs-1.3-8.img.xz new file mode 100644 index 0000000000000000000000000000000000000000..b91180cbcd16599278a2106d1a0d19f5ba8cc07d GIT binary patch literal 2328 zc-s4GUKJ6=z`*kC+7>q^21Q001_lO!^ATtM|956S7|Xzr|M&m@#oPb8+j)o)*Cu62j*8fnk{Lm7V0{&n=U0aua5X-$tVm4o@w#(-&KYLAJ65ln z#N#u4N6XZ22cJ!|xbZ-EQbeqe{7vP=4vy-8H(MKjKa_lX+0Av{CjVDHCEizjl=|-6 z+;G)NKz%`4$m$x_<$o`iZ;t%7MfmpP{~r&psNS-~;79qLdAqlAH>>qIH%#NtmFY<{ z7jY}td7(WxTXIrqtbyaj)hS&+%P#Kv&$jdTh1%k9tHV?8);Im0_F?s_N1K(LBX22Y zZLbZjnz8oWuMN+CC8Zs?>Ami$eDkDrKSEVEpIf>k>sjCm$+CYO8&+(%{B^RFL0m)f z`Bmu$zP}0MefXd+{q(NFyRByKN3NZ{Vs`gw)XuQq!MnS%gP1GsoxWuJ%q%&CZ^@Pm zq6Zka&#W@uzQFBGGSAcRv)FU)3)h`p-)-1?@uvRfT(6g_3;E`5mYIAZA)5QJ-PB0K z`5mivYW#{_{(P^V+48~-TavRI+@{JOJ|e17^s8ao%(Ub{P_uPB=E%%oG( zL+}jePg$!C8YDxLp*r zjrY=_ z8s-(uTdo}cM&oqr#i=v8>a-?)QZM~3d4O$(?~K1U)?b~#Kj?fyC#wVb?Kh1E*l2*! zI>2r)W{w6JHme^!*7@o8famJXqvB6wXMAwq-Pcg6V{rRWK*&U;>8zg*H%#`bU%dFn zo{u+Wm~G#uY8z@NSp^!GO#MDXN{5Rv;rPmJED>Etms%X0k!SbN`o2O~k*!k$^Lhq; zhQ|Dlu@g5qbHu+=OfXr_z;IN!vi;2ZGdT>5Uj!Q(8d&Fl2oB$PB>guNu>Hfp5*Y;m DU>l7# literal 0 Hc-jL100001 -- 2.47.3