Skip to content

Commit

Permalink
Avoid UB for deep nested processes
Browse files Browse the repository at this point in the history
ProcessList.c:242:36: runtime error: left shift of 1 by 31 places cannot be represented in type 'int'
    #0 0x561cfec000a8 in ProcessList_buildTreeBranch ProcessList.c:242:36
    #1 0x561cfebffec2 in ProcessList_buildTreeBranch ProcessList.c:243:7
    #2 0x561cfebffec2 in ProcessList_buildTreeBranch ProcessList.c:243:7
    htop-dev#3 0x561cfebffec2 in ProcessList_buildTreeBranch ProcessList.c:243:7
    htop-dev#4 0x561cfebffec2 in ProcessList_buildTreeBranch ProcessList.c:243:7
    htop-dev#5 0x561cfebffec2 in ProcessList_buildTreeBranch ProcessList.c:243:7
    htop-dev#6 0x561cfebffec2 in ProcessList_buildTreeBranch ProcessList.c:243:7
    htop-dev#7 0x561cfebffec2 in ProcessList_buildTreeBranch ProcessList.c:243:7
    htop-dev#8 0x561cfebffec2 in ProcessList_buildTreeBranch ProcessList.c:243:7
    htop-dev#9 0x561cfebffec2 in ProcessList_buildTreeBranch ProcessList.c:243:7
    htop-dev#10 0x561cfebffec2 in ProcessList_buildTreeBranch ProcessList.c:243:7
    htop-dev#11 0x561cfebffec2 in ProcessList_buildTreeBranch ProcessList.c:243:7
    htop-dev#12 0x561cfebffec2 in ProcessList_buildTreeBranch ProcessList.c:243:7
    htop-dev#13 0x561cfebffec2 in ProcessList_buildTreeBranch ProcessList.c:243:7
    htop-dev#14 0x561cfebffec2 in ProcessList_buildTreeBranch ProcessList.c:243:7
    htop-dev#15 0x561cfebffec2 in ProcessList_buildTreeBranch ProcessList.c:243:7
    htop-dev#16 0x561cfebffec2 in ProcessList_buildTreeBranch ProcessList.c:243:7
    htop-dev#17 0x561cfebffec2 in ProcessList_buildTreeBranch ProcessList.c:243:7
    htop-dev#18 0x561cfebffec2 in ProcessList_buildTreeBranch ProcessList.c:243:7
    htop-dev#19 0x561cfebffec2 in ProcessList_buildTreeBranch ProcessList.c:243:7
    htop-dev#20 0x561cfebffec2 in ProcessList_buildTreeBranch ProcessList.c:243:7
    htop-dev#21 0x561cfebffec2 in ProcessList_buildTreeBranch ProcessList.c:243:7
    htop-dev#22 0x561cfebffec2 in ProcessList_buildTreeBranch ProcessList.c:243:7
    htop-dev#23 0x561cfebffec2 in ProcessList_buildTreeBranch ProcessList.c:243:7
    htop-dev#24 0x561cfebffec2 in ProcessList_buildTreeBranch ProcessList.c:243:7
    htop-dev#25 0x561cfebffec2 in ProcessList_buildTreeBranch ProcessList.c:243:7
    htop-dev#26 0x561cfebffec2 in ProcessList_buildTreeBranch ProcessList.c:243:7
    htop-dev#27 0x561cfebffec2 in ProcessList_buildTreeBranch ProcessList.c:243:7
    htop-dev#28 0x561cfebffec2 in ProcessList_buildTreeBranch ProcessList.c:243:7
    htop-dev#29 0x561cfebffec2 in ProcessList_buildTreeBranch ProcessList.c:243:7
    htop-dev#30 0x561cfebffec2 in ProcessList_buildTreeBranch ProcessList.c:243:7
    htop-dev#31 0x561cfebffec2 in ProcessList_buildTreeBranch ProcessList.c:243:7
    htop-dev#32 0x561cfebfb734 in ProcessList_buildTree ProcessList.c:312:10
    htop-dev#33 0x561cfebfb050 in ProcessList_updateDisplayList ProcessList.c:326:10
    htop-dev#34 0x561cfebfc58b in ProcessList_rebuildPanel ProcessList.c:374:4
    htop-dev#35 0x561cfec07953 in checkRecalculation ScreenManager.c:139:7
    htop-dev#36 0x561cfec07953 in ScreenManager_run ScreenManager.c:226:10
    htop-dev#37 0x561cfeb8899a in CommandLine_run CommandLine.c:378:4
    htop-dev#38 0x561cfeb6d6d4 in main htop.c:15:11
    htop-dev#39 0x7f14860291e9 in __libc_start_call_main csu/../sysdeps/nptl/libc_start_call_main.h:58:16
    htop-dev#40 0x7f148602929b in __libc_start_main csu/../csu/libc-start.c:392:3
    htop-dev#41 0x561cfeaafb20 in _start (htop+0x105b20) (BuildId: fc4b9e52ffc111ca8b4cd53136a238414120a858)
  • Loading branch information
cgzones committed Jun 28, 2022
1 parent be40560 commit 1af5055
Showing 1 changed file with 1 addition and 1 deletion.
2 changes: 1 addition & 1 deletion ProcessList.c
Original file line number Diff line number Diff line change
Expand Up @@ -239,7 +239,7 @@ static void ProcessList_buildTreeBranch(ProcessList* this, pid_t pid, int level,

Vector_add(this->displayList, process);

int nextIndent = indent | (1 << level);
int nextIndent = indent | (1 << MINIMUM(level, 30));
ProcessList_buildTreeBranch(this, process->pid, level + 1, (i < lastShown) ? nextIndent : indent, process->show && process->showChildren);
if (i == lastShown) {
process->indent = -nextIndent;
Expand Down

0 comments on commit 1af5055

Please sign in to comment.