summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJean-Baptiste Queru <jbq@google.com>2010-10-11 09:06:04 -0700
committerAndroid Code Review <code-review@android.com>2010-10-11 09:06:04 -0700
commit3031e475e1f9c7f7eacf131e37e6d4a3a929d3b4 (patch)
tree44850eed13dd166f8c345b75c6d6437eb121c4a3
parent220a991976c5a029a6b8463c10040c322218934b (diff)
parent44ed630233afb3f334bf6e21f95027a3bf19971e (diff)
downloadextras-3031e475e1f9c7f7eacf131e37e6d4a3a929d3b4.tar.gz
Merge "Fixed buffer overflow in procrank."
-rw-r--r--procrank/procrank.c10
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]) {