[23307] trunk/launchd/src/libvproc.c
Revision: 23307 http://trac.macosforge.org/projects/launchd/changeset/23307 Author: zarzycki@apple.com Date: 2007-07-12 13:05:47 -0700 (Thu, 12 Jul 2007) Log Message: ----------- <rdar://problem/5328938> 9A491: syslogd crashed 12 times in _vprocmgr_log_drain Modified Paths: -------------- trunk/launchd/src/libvproc.c Modified: trunk/launchd/src/libvproc.c =================================================================== --- trunk/launchd/src/libvproc.c 2007-07-11 23:16:02 UTC (rev 23306) +++ trunk/launchd/src/libvproc.c 2007-07-12 20:05:47 UTC (rev 23307) @@ -395,7 +395,7 @@ vproc_err_t _vprocmgr_log_drain(vproc_t vp __attribute__((unused)), pthread_mutex_t *mutex, _vprocmgr_log_drain_callback_t func) { - mach_msg_type_number_t outdata_cnt; + mach_msg_type_number_t outdata_cnt, tmp_cnt; vm_offset_t outdata = 0; struct logmsg_s *lm; @@ -407,17 +407,22 @@ return _vprocmgr_log_drain; } + tmp_cnt = outdata_cnt; + if (mutex) { pthread_mutex_lock(mutex); } - for (lm = (struct logmsg_s *)outdata; lm->obj_sz; lm = ((void *)lm + lm->obj_sz)) { + for (lm = (struct logmsg_s *)outdata; tmp_cnt > 0; lm = ((void *)lm + lm->obj_sz)) { lm->from_name += (size_t)lm; lm->about_name += (size_t)lm; lm->msg += (size_t)lm; lm->session_name += (size_t)lm; - func(&lm->when, lm->from_pid, lm->about_pid, lm->sender_uid, lm->sender_gid, lm->pri, lm->from_name, lm->about_name, lm->session_name, lm->msg); + func(&lm->when, lm->from_pid, lm->about_pid, lm->sender_uid, lm->sender_gid, lm->pri, + lm->from_name, lm->about_name, lm->session_name, lm->msg); + + tmp_cnt -= lm->obj_sz; } if (mutex) {
participants (1)
-
source_changes@macosforge.org