Acidanthera UEFI Development Kit based on EDK II edk2-stable202311
Go to file
Karyne Mayer 03805fc376 CryptoPkg: Fix function qsort for non 32-bit machines
Although the function qsort receives as an argument a "compare" function
which returns an "int", QuickSortWorker (the function used internally by
qsort to do its job) receives as an argument a "CompareFunction" which
returns an "INTN". In a 32-bit machine, "INTN" is defined as "INT32",
which is defined as "int" and everything works well. However, when qsort
is compiled for a 64-bit machine, "INTN" is defined as "INT64" and the
return values of the compare functions become incompatible ("int" for
qsort and "INT64" for QuickSortWorker), causing malfunction.

For example, let's assume qsort is being compiled for a 64-bit machine.
As stated before, the "compare" function will be returning an "int",
and "CompareFunction" will be returning an "INT64". When, for example,
the "compare" function (which was passed as an argument to qsort and,
then, re-passed as an argument to QuickSortWorker) returns -1 (or
0xffffffff, in a 32-bit integer, its original return type) from inside
a call to QuickSortWorker, its return value is interpreted as being an
"INT64" value - which turns out to be 4294967295 (or 0x00000000ffffffff,
in a 64-bit integer) -, making the function QuickSortWorker to behave
unexpectedly.

Note that this unexpected (or incorrect) conversion does not happen when
casting an "INT32" to an "INT64" directly, but does happen when casting
function types.

The issue is fixed by changing the return type of SORT_COMPARE (the type
of "CompareFunction", used by QuickSortWorker) from "INTN" to "int".
This way, both qsort and QuickSortWorker use compatible definitions for
their compare functions.

Contributed-under: TianoCore Contribution Agreement 1.0
Acked-by: Paulo Alcantara Cavalcanti <paulo.alc.cavalcanti@hp.com>
Signed-off-by: Karyne Mayer <kmayer@hp.com>
Signed-off-by: Rodrigo Dias Correa <rodrigo.dia.correa@hp.com>
Signed-off-by: Arthur Crippa Burigo <acb@hp.com>
Reviewed-by: Qin Long <qin.long@intel.com>

git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@19748 6f19259b-4bc3-4df7-8a09-765794883524
2016-01-26 08:51:13 +00:00
AppPkg AppPkg/.../Python: Clean up and document how to escape the -# option. 2016-01-06 01:00:19 +00:00
ArmPkg ArmPkg: LinuxLoader: fix typo in help string 2016-01-20 14:55:58 +00:00
ArmPlatformPkg ArmVExpressPkg/ArmVExpress-FVP-AArch64: run GICv3 in v3 mode 2015-12-15 13:08:56 +00:00
ArmVirtPkg ArmVirtPkg/ArmVirtXen: add ARM support 2015-12-17 17:11:33 +00:00
BaseTools BaseTools: Fix the bug when no FD section in the FDF file 2016-01-26 08:45:34 +00:00
BeagleBoardPkg BeagleBoardPkg: remove ArmPlatformGlobalVariableLib resolution 2015-11-27 17:05:24 +00:00
Conf
CorebootModulePkg CorebootModulePkg:Removing EFI_RESOURCE_ATTRIBUTE_TESTED 2015-08-18 16:08:22 +00:00
CorebootPayloadPkg CorebootPayloadPkg PlatformHookLib: Fix GCC build failure 2015-11-30 21:11:29 +00:00
CryptoPkg CryptoPkg: Fix function qsort for non 32-bit machines 2016-01-26 08:51:13 +00:00
DuetPkg DuetPkg: Fix GCC error to avoid the duplicated global variable in SmbiosGenDxe 2015-12-18 02:29:12 +00:00
EdkCompatibilityPkg EdkCompatibilityPkg: Fix wrong guid value of gEfiManagedNetworkProtocolGuid 2016-01-18 03:03:19 +00:00
EdkShellBinPkg */Contributions.txt: Update example email address 2015-02-03 17:29:14 +00:00
EdkShellPkg */Contributions.txt: Update example email address 2015-02-03 17:29:14 +00:00
EmbeddedPkg EmbeddedPkg: Convert all .uni files to utf-8 2015-12-15 04:51:40 +00:00
EmulatorPkg EmulatorPkg: Convert all .uni files to utf-8 2015-12-15 04:51:49 +00:00
FatBinPkg FatBinPkg: Update EBC/IA32/X64/IPF binaries 2015-08-28 03:14:25 +00:00
IntelFrameworkModulePkg IntelFrameworkModulePkg: Add NOOPT target in IntelFrameworkModulePkg.dsc 2016-01-19 04:05:12 +00:00
IntelFrameworkPkg IntelFrameworkPkg: Add NOOPT target in IntelFrameworkPkg.dsc 2016-01-19 04:05:29 +00:00
IntelFspPkg IntelFspPkg: Add NOOPT target in IntelFspPkg.dsc 2016-01-21 02:14:43 +00:00
IntelFspWrapperPkg IntelFspWrapperPkg: Add NOOPT target in IntelFspWrapperPkg.dsc 2016-01-21 02:15:02 +00:00
MdeModulePkg MdeModulePkg/PciHostBridgeDxe: Fix GCC build failure. 2016-01-26 05:49:18 +00:00
MdePkg MdePkg: Add TPM TIS definition. 2016-01-26 01:26:58 +00:00
NetworkPkg NetworkPkg: Add NOOPT target in NetworkPkg.dsc 2016-01-19 04:06:24 +00:00
Nt32Pkg Nt32Pkg: Fix asserts from running Nt32 64-bit on Win8 2016-01-25 04:45:55 +00:00
Omap35xxPkg Omap35xxPkg SerialPortLib: Implement Get(Set)Control/SetAttributes 2015-11-26 08:49:53 +00:00
OptionRomPkg OptionRomPkg: Remove redundant included header file defintion in Ax88772.h and Ax88772b.h files 2015-07-08 02:56:54 +00:00
OvmfPkg OvmfPkg: execute option ROM images regardless of Secure Boot 2016-01-07 18:48:17 +00:00
PcAtChipsetPkg PcAtChipsetPkg: Add NOOPT target in PcAtChipsetPkg.dsc 2016-01-19 04:06:42 +00:00
PerformancePkg PerformancePkg Dp_App: Use Image->FilePath to get name for SMM drivers 2016-01-19 09:19:28 +00:00
QuarkPlatformPkg QuarkPlatformPkg: Add MEASURED_BOOT_ENABLE feature 2016-01-21 19:30:43 +00:00
QuarkSocPkg QuarkSocPkg: Remove X64 from SUPPORTED_ARCHITECTURES 2016-01-07 21:52:53 +00:00
SecurityPkg SecurityPkg: Add TPM PTP support in TCG2 Config. 2016-01-26 01:30:55 +00:00
ShellBinPkg ShellBinPkg: Ia32/X64 Shell binary update. 2015-12-25 04:20:28 +00:00
ShellPkg ShellPkg: Refine the code to avoid use a constant number as offset. 2016-01-26 08:17:19 +00:00
SourceLevelDebugPkg SourceLevelDebugPkg: DebugCommunicationLibUsb3: Update local variable type. 2016-01-25 03:33:45 +00:00
StdLib StdLib: Fix compilation errors caused by previous commit of daConsole.c 2016-01-10 21:23:51 +00:00
StdLibPrivateInternalFiles StdLib: Clarify and improve comments. 2016-01-06 00:31:42 +00:00
UefiCpuPkg UefiCpuPkg: Add NOOPT target in UefiCpuPkg.dsc 2016-01-19 04:08:09 +00:00
UnixPkg
Vlv2DeviceRefCodePkg Vlv2TbltDevicePkg/Vlv2DeviceRefCodePkg: 2015-11-10 07:47:29 +00:00
Vlv2TbltDevicePkg Vlv2TbltDevicePkg: Convert all .uni files to utf-8 2015-12-15 04:59:37 +00:00
.gitignore
BuildNotes2.txt
Edk2Setup.bat BaseTools: Update Edk2Setup.bat to support multiple workspaces 2015-10-08 09:29:36 +00:00
Maintainers.txt Maintainers.txt: Update maintainers for SourceLevelDebugPkg 2016-01-20 04:38:14 +00:00
edksetup.bat BaseTools: Add VS2015 tool chain in tools_def.template 2015-12-03 03:19:01 +00:00
edksetup.sh BaseTools: Update edksetup.sh to support multiple workspaces 2015-10-08 09:29:56 +00:00