diff options
author | Jean-Baptiste Queru <jbq@google.com> | 2010-10-11 09:06:04 -0700 |
---|---|---|
committer | Android Code Review <code-review@android.com> | 2010-10-11 09:06:04 -0700 |
commit | 3031e475e1f9c7f7eacf131e37e6d4a3a929d3b4 (patch) | |
tree | 44850eed13dd166f8c345b75c6d6437eb121c4a3 | |
parent | 220a991976c5a029a6b8463c10040c322218934b (diff) | |
parent | 44ed630233afb3f334bf6e21f95027a3bf19971e (diff) | |
download | extras-3031e475e1f9c7f7eacf131e37e6d4a3a929d3b4.tar.gz |
Merge "Fixed buffer overflow in procrank."
-rw-r--r-- | procrank/procrank.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/procrank/procrank.c b/procrank/procrank.c index 585fddcd..bd5192d2 100644 --- a/procrank/procrank.c +++ b/procrank/procrank.c @@ -43,13 +43,11 @@ declare_sort(uss); int (*compfn)(const void *a, const void *b); static int order; -#define MAX_PROCS 256 - int main(int argc, char *argv[]) { pm_kernel_t *ker; pm_process_t *proc; pid_t *pids; - struct proc_info *procs[MAX_PROCS]; + struct proc_info **procs; size_t num_procs; char cmdline[256]; int error; @@ -92,6 +90,12 @@ int main(int argc, char *argv[]) { exit(EXIT_FAILURE); } + procs = malloc(num_procs * sizeof(struct proc_info*)); + if (!procs) { + fprintf(stderr, "malloc: %s\n", strerror(errno)); + exit(EXIT_FAILURE); + } + for (i = 0; i < num_procs; i++) { procs[i] = malloc(sizeof(struct proc_info)); if (!procs[i]) { |