summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSamuel Thibault <samuel.thibault@ens-lyon.org>2014-11-02 16:00:03 +0100
committerSamuel Thibault <samuel.thibault@ens-lyon.org>2014-11-02 16:00:03 +0100
commit610c428cf8c9340d955c79cd2daca3ed8657f2b1 (patch)
tree864de76b1d318fa6f1d28cb78ade52461335cf1c
parent673603dae49fd06de782780a38e2914ed8cd8777 (diff)
Fix proc_getprocinfo calls
The deallocation also needs to be fixed. Also, fetch_procinfo already took care of the conversion. * exec/elfcore.c (dump_core): Fix procinfoCnt taken from proc_getprocinfo. * utils/login.c (check_owned): Likewise. * libps/procstat.c (merge_procinfo): Remove conversion between bytes and int, already handled by fetch_procinfo.
-rw-r--r--exec/elfcore.c4
-rw-r--r--libps/procstat.c4
-rw-r--r--utils/login.c4
3 files changed, 6 insertions, 6 deletions
diff --git a/exec/elfcore.c b/exec/elfcore.c
index 033604c9..ff38a3ca 100644
--- a/exec/elfcore.c
+++ b/exec/elfcore.c
@@ -334,7 +334,7 @@ dump_core (task_t task, file_t file, off_t corelimit,
mach_msg_type_number_t num_waits = 0;
char pibuf[offsetof (struct procinfo, threadinfos[2])];
struct procinfo *pi = (void *) &pibuf;
- mach_msg_type_number_t pi_size = sizeof pibuf / sizeof(*(procinfo_t*)0);
+ mach_msg_type_number_t pi_size = sizeof pibuf / sizeof (*(procinfo_t*)0);
memset (&pstatus.data, 0, sizeof pstatus.data);
memset (&psinfo.data, 0, sizeof psinfo.data);
@@ -395,7 +395,7 @@ dump_core (task_t task, file_t file, off_t corelimit,
psinfo.data.pr_wstat = pi->exitstatus;
if ((void *) pi != &pibuf)
- munmap (pi, pi_size);
+ munmap (pi, pi_size * sizeof (*(procinfo_t*) 0));
}
if (err == 0)
{
diff --git a/libps/procstat.c b/libps/procstat.c
index b00c9e41..0d4a565b 100644
--- a/libps/procstat.c
+++ b/libps/procstat.c
@@ -192,7 +192,7 @@ merge_procinfo (struct proc_stat *ps, ps_flags_t need, ps_flags_t have)
return ENOMEM;
}
new_pi = ps->proc_info;
- new_pi_size = ps->proc_info_size / sizeof(*(procinfo_t)0);
+ new_pi_size = ps->proc_info_size;
if (really_need & PSTAT_THREAD_WAITS)
/* We're going to get thread waits info, so make some storage for it too.*/
@@ -240,7 +240,7 @@ merge_procinfo (struct proc_stat *ps, ps_flags_t need, ps_flags_t have)
else
free (ps->proc_info);
ps->proc_info = new_pi;
- ps->proc_info_size = new_pi_size * sizeof(*(procinfo_t)0);
+ ps->proc_info_size = new_pi_size;
ps->proc_info_vm_alloced = 1;
}
diff --git a/utils/login.c b/utils/login.c
index 40bc3f45..a3e05636 100644
--- a/utils/login.c
+++ b/utils/login.c
@@ -263,7 +263,7 @@ check_owned (process_t proc_server, pid_t pid, int *owned)
char *waits = 0;
mach_msg_type_number_t num_waits = 0;
struct procinfo _pi, *pi = &_pi;
- mach_msg_type_number_t pi_size = sizeof _pi / sizeof(*(procinfo_t)0);
+ mach_msg_type_number_t pi_size = sizeof _pi / sizeof (*(procinfo_t)0);
error_t err =
proc_getprocinfo (proc_server, pid, &flags, (procinfo_t *)&pi, &pi_size,
&waits, &num_waits);
@@ -272,7 +272,7 @@ check_owned (process_t proc_server, pid_t pid, int *owned)
{
*owned = !(pi->state & PI_NOTOWNED);
if (pi != &_pi)
- munmap (pi, pi_size);
+ munmap (pi, pi_size * sizeof (*(procinfo_t)0));
}
return err;