From cd44d1200d6a894c8e9405a5e128f626ca8b831c Mon Sep 17 00:00:00 2001 From: Hans de Goede Date: Mar 20 2009 14:49:24 +0000 Subject: - libiscsi: use fwparam_ibft_sysfs() instead of fw_get_entry(), as the latter causes stack corruption (workaround #490515) --- diff --git a/iscsi-initiator-utils.spec b/iscsi-initiator-utils.spec index a2afdd3..9dc5372 100644 --- a/iscsi-initiator-utils.spec +++ b/iscsi-initiator-utils.spec @@ -3,7 +3,7 @@ Summary: iSCSI daemon and utility programs Name: iscsi-initiator-utils Version: 6.2.0.870 -Release: 6%{?dist} +Release: 7%{?dist} Source0: http://www.open-iscsi.org/bits/open-iscsi-2.0-870.1.tar.gz Source1: iscsid.init Source2: iscsidevs.init @@ -19,6 +19,7 @@ Patch7: open-iscsi-2.0-870.1-add-libiscsi.patch Patch8: open-iscsi-2.0-870.1-no-exit.patch Patch9: open-iscsi-2.0-870.1-ibft-newer-kernel.patch Patch10: open-iscsi-2.0-870.1-485217.patch +Patch11: open-iscsi-2.0-870.1-490515-workaround.patch Group: System Environment/Daemons License: GPLv2+ @@ -57,6 +58,7 @@ developing applications that use %{name}. %patch8 -p1 %patch9 -p1 %patch10 -p1 +%patch11 -p1 %build @@ -160,6 +162,10 @@ fi %{_includedir}/libiscsi.h %changelog +* Fri Mar 20 2009 Hans de Goede 6.2.0.870-7 +- libiscsi: use fwparam_ibft_sysfs() instead of fw_get_entry(), as + the latter causes stack corruption (workaround #490515) + * Sat Mar 14 2009 Terje Rosten - 6.2.0.870-6 - Add glibc-static to buildreq to build in F11 diff --git a/open-iscsi-2.0-870.1-490515-workaround.patch b/open-iscsi-2.0-870.1-490515-workaround.patch index 1f9ccde..970461d 100644 --- a/open-iscsi-2.0-870.1-490515-workaround.patch +++ b/open-iscsi-2.0-870.1-490515-workaround.patch @@ -1,6 +1,18 @@ ---- open-iscsi-2.0-870.1/libiscsi/libiscsi.c 2009-03-20 15:21:24.000000000 +0100 -+++ new/libiscsi/libiscsi.c 2009-03-20 15:21:11.000000000 +0100 -@@ -196,10 +196,10 @@ +diff -up open-iscsi-2.0-870.1/include/fw_context.h.workaround open-iscsi-2.0-870.1/include/fw_context.h +--- open-iscsi-2.0-870.1/include/fw_context.h.workaround 2009-03-20 15:47:16.000000000 +0100 ++++ open-iscsi-2.0-870.1/include/fw_context.h 2009-03-20 15:48:03.000000000 +0100 +@@ -51,5 +51,7 @@ struct boot_context { + + extern int fw_get_entry(struct boot_context *context, const char *filepath); + extern void fw_print_entry(struct boot_context *context); ++extern int fwparam_ibft_sysfs(struct boot_context *context, ++ const char *filepath); + + #endif /* FWPARAM_CONTEXT_H_ */ +diff -up open-iscsi-2.0-870.1/libiscsi/libiscsi.c.workaround open-iscsi-2.0-870.1/libiscsi/libiscsi.c +--- open-iscsi-2.0-870.1/libiscsi/libiscsi.c.workaround 2009-03-20 15:45:28.000000000 +0100 ++++ open-iscsi-2.0-870.1/libiscsi/libiscsi.c 2009-03-20 15:47:03.000000000 +0100 +@@ -196,10 +196,10 @@ int libiscsi_discover_firmware(struct li *found_nodes = NULL; memset(&fw_entry, 0, sizeof fw_entry); @@ -13,27 +25,21 @@ } memset(&rec, 0, sizeof rec); -@@ -535,8 +535,10 @@ +@@ -535,7 +535,7 @@ int libiscsi_get_firmware_network_config memset(config, 0, sizeof *config); memset(&fw_entry, 0, sizeof fw_entry); - if (fw_get_entry(&fw_entry, NULL)) -+ if (fwparam_ibft_sysfs(&fw_entry, NULL)) { -+ strcpy(context->error_str, "Could not read fw values."); ++ if (fwparam_ibft_sysfs(&fw_entry, NULL)) return ENODEV; -+ } config->dhcp = strlen(fw_entry.dhcp) ? 1 : 0; - strncpy(config->iface_name, fw_entry.iface, sizeof fw_entry.iface); -@@ -557,8 +559,10 @@ +@@ -557,7 +557,7 @@ int libiscsi_get_firmware_initiator_name memset(initiatorname, 0, LIBISCSI_VALUE_MAXLEN); memset(&fw_entry, 0, sizeof fw_entry); - if (fw_get_entry(&fw_entry, NULL)) -+ if (fwparam_ibft_sysfs(&fw_entry, NULL)) { -+ strcpy(context->error_str, "Could not read fw values."); ++ if (fwparam_ibft_sysfs(&fw_entry, NULL)) return ENODEV; -+ } strncpy(initiatorname, fw_entry.initiatorname, - sizeof fw_entry.initiatorname);