From dac2924e821ab15f5779d1d60d1608f75dd081c4 Mon Sep 17 00:00:00 2001 From: Greg Haerr Date: Sun, 3 Sep 2023 18:47:31 -0700 Subject: [PATCH] [cmds] Enhance ps to better recognize task struct size mismatches --- elkscmd/sys_utils/ps.c | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/elkscmd/sys_utils/ps.c b/elkscmd/sys_utils/ps.c index 8a4203ada..c03a37303 100644 --- a/elkscmd/sys_utils/ps.c +++ b/elkscmd/sys_utils/ps.c @@ -188,20 +188,12 @@ int main(int argc, char **argv) printf(" "); if (f_listall) printf("CSEG DSEG "); printf(" HEAP FREE SIZE COMMAND\n"); - for (j = 1; j <= MAX_TASKS; j++) { + for (j = 1; j < MAX_TASKS; j++) { if (!memread(fd, off + j*sizeof(struct task_struct), ds, &task_table, sizeof(task_table))) { printf("ps: memread\n"); return 1; } - if (task_table.kstack_magic != KSTACK_MAGIC) { - if (task_table.kstack_magic == 0) continue; - printf("Recompile ps, mismatched task structure\n"); - return 1; - } - if (task_table.t_regs.ss == 0) - continue; - switch (task_table.state) { case TASK_UNUSED: continue; case TASK_RUNNING: c = 'R'; break; @@ -212,6 +204,12 @@ int main(int argc, char **argv) case TASK_EXITING: c = 'E'; break; default: c = '?'; break; } + + if (task_table.kstack_magic != KSTACK_MAGIC) { + printf("Recompile ps, mismatched task structure\n"); + return 1; + } + pwent = getpwuid(task_table.uid); /* pid grp tty user stat*/