mirror of https://github.com/xzeldon/htop.git
Add array bounds checking for the Process_fields array (covscan)
Coverity scan reports there may be a code path that would cause an overrun in the (relatively new) ScreenSettings code where it evaluates default sort direction. Add bounds check and default to descending instead of a potentially invalid array access.
This commit is contained in:
parent
ae518e20b7
commit
cb61865bb9
|
@ -271,12 +271,18 @@ static void ScreenSettings_readFields(ScreenSettings* ss, Hashtable* columns, co
|
||||||
|
|
||||||
ScreenSettings* Settings_newScreen(Settings* this, const ScreenDefaults* defaults) {
|
ScreenSettings* Settings_newScreen(Settings* this, const ScreenDefaults* defaults) {
|
||||||
int sortKey = defaults->sortKey ? toFieldIndex(this->dynamicColumns, defaults->sortKey) : PID;
|
int sortKey = defaults->sortKey ? toFieldIndex(this->dynamicColumns, defaults->sortKey) : PID;
|
||||||
|
int sortDesc;
|
||||||
|
if (sortKey >= 0 && sortKey < LAST_PROCESSFIELD)
|
||||||
|
sortDesc = Process_fields[sortKey].defaultSortDesc;
|
||||||
|
else
|
||||||
|
sortDesc = 1;
|
||||||
|
|
||||||
ScreenSettings* ss = xMalloc(sizeof(ScreenSettings));
|
ScreenSettings* ss = xMalloc(sizeof(ScreenSettings));
|
||||||
*ss = (ScreenSettings) {
|
*ss = (ScreenSettings) {
|
||||||
.name = xStrdup(defaults->name),
|
.name = xStrdup(defaults->name),
|
||||||
.fields = xCalloc(LAST_PROCESSFIELD, sizeof(ProcessField)),
|
.fields = xCalloc(LAST_PROCESSFIELD, sizeof(ProcessField)),
|
||||||
.flags = 0,
|
.flags = 0,
|
||||||
.direction = (Process_fields[sortKey].defaultSortDesc) ? -1 : 1,
|
.direction = sortDesc ? -1 : 1,
|
||||||
.treeDirection = 1,
|
.treeDirection = 1,
|
||||||
.sortKey = sortKey,
|
.sortKey = sortKey,
|
||||||
.treeSortKey = PID,
|
.treeSortKey = PID,
|
||||||
|
|
Loading…
Reference in New Issue