Kexec Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] x86-linux-setup.c: Use POSIX basename API
@ 2024-05-16  4:35 Khem Raj
  2024-06-18 16:32 ` Simon Horman
  0 siblings, 1 reply; 2+ messages in thread
From: Khem Raj @ 2024-05-16  4:35 UTC (permalink / raw)
  To: kexec; +Cc: Khem Raj

Musl C library only supports POSIX basename function. while glibc has
both GNU extention as well as POSIX basename implemented. Switch to
using posix version, so it can work across musl and glibc

basename prototype has been removed from string.h from latest musl [1]
compilers e.g. clang-18/GCC-14 flags the absense of prototype as error.
therefore include libgen.h for providing it.

[1] https://git.musl-libc.org/cgit/musl/commit/?id=725e17ed6dff4d0cd22487bb64470881e86a92e7

Upstream-Status: Pending
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
 kexec/arch/i386/x86-linux-setup.c | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/kexec/arch/i386/x86-linux-setup.c b/kexec/arch/i386/x86-linux-setup.c
index 9a281dc..73251b9 100644
--- a/kexec/arch/i386/x86-linux-setup.c
+++ b/kexec/arch/i386/x86-linux-setup.c
@@ -14,6 +14,7 @@
  *
  */
 #define _GNU_SOURCE
+#include <libgen.h>
 #include <stdint.h>
 #include <stdio.h>
 #include <string.h>
@@ -329,12 +330,14 @@ static int add_edd_entry(struct x86_linux_param_header *real_mode,
 	memset(edd_info, 0, sizeof(struct edd_info));
 
 	/* extract the device number */
-	if (sscanf(basename(sysfs_name), "int13_dev%hhx", &devnum) != 1) {
+	char* sysfs_name_copy = strdup(sysfs_name);
+	if (sscanf(basename(sysfs_name_copy), "int13_dev%hhx", &devnum) != 1) {
 		fprintf(stderr, "Invalid format of int13_dev dir "
-				"entry: %s\n", basename(sysfs_name));
+				"entry: %s\n", basename(sysfs_name_copy));
+		free(sysfs_name_copy);
 		return -1;
 	}
-
+	free(sysfs_name_copy);
 	/* if there's a MBR signature, then add it */
 	if (file_scanf(sysfs_name, "mbr_signature", "0x%x", &mbr_sig) == 1) {
 		real_mode->edd_mbr_sig_buffer[*current_mbr] = mbr_sig;
-- 
2.45.1


_______________________________________________
kexec mailing list
kexec@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/kexec

^ permalink raw reply related	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2024-06-18 16:32 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-05-16  4:35 [PATCH] x86-linux-setup.c: Use POSIX basename API Khem Raj
2024-06-18 16:32 ` Simon Horman

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox