From: Ben Gras Date: Wed, 22 Jun 2011 13:46:33 +0000 (+0200) Subject: top: one sanity check endpoint->slot number X-Git-Tag: v3.2.0~532 X-Git-Url: http://zhaoyanbai.com/repos/?a=commitdiff_plain;h=fa0fe45103725c7a78bbcefccf277d6ad131009c;p=minix.git top: one sanity check endpoint->slot number --- diff --git a/commands/top/top.c b/commands/top/top.c index 0e6d0d246..4f64902ff 100644 --- a/commands/top/top.c +++ b/commands/top/top.c @@ -88,6 +88,7 @@ void parse_file(pid_t pid) unsigned long cycles_hi, cycles_lo; FILE *fp; struct proc *p; + int slot; int i; sprintf(path, "%d/psinfo", pid); @@ -110,7 +111,15 @@ void parse_file(pid_t pid) return; } - p = &proc[SLOT_NR(endpt)]; + slot = SLOT_NR(endpt); + + if(slot < 0 || slot >= nr_total) { + fprintf(stderr, "top: unreasonable endpoint number %d\n", endpt); + fclose(fp); + return; + } + + p = &proc[slot]; if (type == TYPE_TASK) p->p_flags |= IS_TASK;