mirror of
https://github.com/FreeRTOS/FreeRTOS-Kernel.git
synced 2025-04-19 21:11:57 -04:00
Backport PR 839 to FreeRTOS-Kernel V10.6.1 (#840)
* Fix size alignment in the integer overflow issue * Remove CORTEX_M3_MPS2_QEMU demo in the V10.6.x branch to sync with the main branch.
This commit is contained in:
parent
7003ba73ed
commit
d9fc48bced
14
.github/workflows/kernel-demos.yml
vendored
14
.github/workflows/kernel-demos.yml
vendored
|
@ -161,20 +161,6 @@ jobs:
|
|||
working-directory: FreeRTOS/Demo/CORTEX_LM3S102_GCC
|
||||
run: make -j
|
||||
|
||||
- name: Build CORTEX_M3_MPS2_QEMU_GCC Demo
|
||||
shell: bash
|
||||
working-directory: FreeRTOS/Demo/CORTEX_M3_MPS2_QEMU_GCC
|
||||
run: |
|
||||
make clean
|
||||
make -j
|
||||
|
||||
- name: Build CORTEX_M3_MPS2_QEMU_GCC Demo
|
||||
shell: bash
|
||||
working-directory: FreeRTOS/Demo/CORTEX_M3_MPS2_QEMU_GCC
|
||||
run: |
|
||||
make clean
|
||||
make FULL_DEMO=1 -j
|
||||
|
||||
- name: Build CORTEX_LM3S811_GCC Demo
|
||||
shell: bash
|
||||
working-directory: FreeRTOS/Demo/CORTEX_LM3S811_GCC
|
||||
|
|
|
@ -113,14 +113,14 @@
|
|||
#define CONVERT_TO_INTERNAL_INDEX( lIndex ) ( ( lIndex ) - INDEX_OFFSET )
|
||||
|
||||
/**
|
||||
* @brief Max value that fits in a size_t type.
|
||||
* @brief Max value that fits in a uint32_t type.
|
||||
*/
|
||||
#define mpuSIZE_MAX ( ~( ( size_t ) 0 ) )
|
||||
#define mpuUINT32_MAX ( ~( ( uint32_t ) 0 ) )
|
||||
|
||||
/**
|
||||
* @brief Check if multiplying a and b will result in overflow.
|
||||
*/
|
||||
#define mpuMULTIPLY_WILL_OVERFLOW( a, b ) ( ( ( a ) > 0 ) && ( ( b ) > ( mpuSIZE_MAX / ( a ) ) ) )
|
||||
#define mpuMULTIPLY_UINT32_WILL_OVERFLOW( a, b ) ( ( ( a ) > 0 ) && ( ( b ) > ( mpuUINT32_MAX / ( a ) ) ) )
|
||||
|
||||
/**
|
||||
* @brief Get the index of a free slot in the kernel object pool.
|
||||
|
@ -937,11 +937,13 @@
|
|||
UBaseType_t uxReturn = 0;
|
||||
UBaseType_t xIsTaskStatusArrayWriteable = pdFALSE;
|
||||
UBaseType_t xIsTotalRunTimeWriteable = pdFALSE;
|
||||
uint32_t ulArraySize = ( uint32_t ) uxArraySize;
|
||||
uint32_t ulTaskStatusSize = ( uint32_t ) sizeof( TaskStatus_t );
|
||||
|
||||
if( mpuMULTIPLY_WILL_OVERFLOW( sizeof( TaskStatus_t ), uxArraySize ) == 0 )
|
||||
if( mpuMULTIPLY_UINT32_WILL_OVERFLOW( ulTaskStatusSize, ulArraySize ) == 0 )
|
||||
{
|
||||
xIsTaskStatusArrayWriteable = xPortIsAuthorizedToAccessBuffer( pxTaskStatusArray,
|
||||
sizeof( TaskStatus_t ) * uxArraySize,
|
||||
ulTaskStatusSize * ulArraySize,
|
||||
tskMPU_WRITE_PERMISSION );
|
||||
|
||||
if( pulTotalRunTime != NULL )
|
||||
|
@ -954,7 +956,7 @@
|
|||
if( ( xIsTaskStatusArrayWriteable == pdTRUE ) &&
|
||||
( ( pulTotalRunTime == NULL ) || ( xIsTotalRunTimeWriteable == pdTRUE ) ) )
|
||||
{
|
||||
uxReturn = uxTaskGetSystemState( pxTaskStatusArray, uxArraySize, pulTotalRunTime );
|
||||
uxReturn = uxTaskGetSystemState( pxTaskStatusArray, ( UBaseType_t ) ulArraySize, pulTotalRunTime );
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue