From: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
Date: Thu, 29 Dec 2022 13:44:05 +0000 (+0100)
Subject: efi_loader: adjust sorting of capsules
X-Git-Tag: v2025.01-rc5-pxa1908~1167^2~1
X-Git-Url: http://git.dujemihanovic.xyz/%22http:/www.sics.se/static/login.html?a=commitdiff_plain;h=93cdb952382b3fa0110245e1fa34dadd7a52df45;p=u-boot.git

efi_loader: adjust sorting of capsules

Up to now we only compared the first letter of the capsule name to sort
them alphabetically. Properly sort by the Unicode alphabet.

Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
---

diff --git a/lib/efi_loader/efi_capsule.c b/lib/efi_loader/efi_capsule.c
index 1163a2ee30..0997cd248f 100644
--- a/lib/efi_loader/efi_capsule.c
+++ b/lib/efi_loader/efi_capsule.c
@@ -1108,10 +1108,13 @@ static efi_status_t efi_capsule_scan_dir(u16 ***files, unsigned int *num)
 	/* ignore an error */
 	EFI_CALL((*dirh->close)(dirh));
 
-	/* in ascii order */
-	/* FIXME: u16 version of strcasecmp */
+	/*
+	 * Capsule files are applied in case insensitive alphabetic order
+	 *
+	 * TODO: special handling of rightmost period
+	 */
 	qsort(tmp_files, count, sizeof(*tmp_files),
-	      (int (*)(const void *, const void *))strcasecmp);
+	      (int (*)(const void *, const void *))u16_strcasecmp);
 	*files = tmp_files;
 	*num = count;
 	ret = EFI_SUCCESS;