[launchd-changes] [23389] trunk/launchd/src/launchd_core_logic.c
source_changes at macosforge.org
source_changes at macosforge.org
Fri Sep 14 13:59:58 PDT 2007
Revision: 23389
http://trac.macosforge.org/projects/launchd/changeset/23389
Author: zarzycki at apple.com
Date: 2007-09-14 13:59:58 -0700 (Fri, 14 Sep 2007)
Log Message:
-----------
Better bounds checking.
Modified Paths:
--------------
trunk/launchd/src/launchd_core_logic.c
Modified: trunk/launchd/src/launchd_core_logic.c
===================================================================
--- trunk/launchd/src/launchd_core_logic.c 2007-09-14 20:25:43 UTC (rev 23388)
+++ trunk/launchd/src/launchd_core_logic.c 2007-09-14 20:59:58 UTC (rev 23389)
@@ -351,7 +351,7 @@
uint64_t sent_sigterm_time;
uint64_t start_time;
uint32_t min_run_time;
- unsigned int start_interval;
+ uint32_t start_interval;
unsigned int checkedin:1, anonymous:1, debug:1, inetcompat:1, inetcompat_wait:1,
ondemand:1, session_create:1, low_pri_io:1, no_init_groups:1, priv_port_has_senders:1,
importing_global_env:1, importing_hard_limits:1, setmask:1, legacy_mach_job:1, start_pending:1;
@@ -1418,7 +1418,9 @@
case 'E':
if (strcasecmp(key, LAUNCH_JOBKEY_EXITTIMEOUT) == 0) {
if (value < 0) {
- job_log(j, LOG_WARNING, "Exit timeout less zero. Ignoring.");
+ job_log(j, LOG_WARNING, "%s less than zero. Ignoring.", LAUNCH_JOBKEY_EXITTIMEOUT);
+ } else if (value > UINT32_MAX) {
+ job_log(j, LOG_WARNING, "%s is too large. Ignoring.", LAUNCH_JOBKEY_EXITTIMEOUT);
} else {
j->exit_timeout = value;
}
@@ -1434,14 +1436,18 @@
case 't':
case 'T':
if (strcasecmp(key, LAUNCH_JOBKEY_TIMEOUT) == 0) {
- if (value <= 0) {
- job_log(j, LOG_WARNING, "Timeout less than or equal to zero. Ignoring.");
+ if (value < 0) {
+ job_log(j, LOG_WARNING, "%s less than zero. Ignoring.", LAUNCH_JOBKEY_TIMEOUT);
+ } else if (value > UINT32_MAX) {
+ job_log(j, LOG_WARNING, "%s is too large. Ignoring.", LAUNCH_JOBKEY_TIMEOUT);
} else {
j->timeout = value;
}
} else if (strcasecmp(key, LAUNCH_JOBKEY_THROTTLEINTERVAL) == 0) {
if (value < 0) {
job_log(j, LOG_WARNING, "%s less than zero. Ignoring.", LAUNCH_JOBKEY_THROTTLEINTERVAL);
+ } else if (value > UINT32_MAX) {
+ job_log(j, LOG_WARNING, "%s is too large. Ignoring.", LAUNCH_JOBKEY_THROTTLEINTERVAL);
} else {
j->min_run_time = value;
}
@@ -1458,14 +1464,15 @@
case 'S':
if (strcasecmp(key, LAUNCH_JOBKEY_STARTINTERVAL) == 0) {
if (value <= 0) {
- job_log(j, LOG_WARNING, "StartInterval is not greater than zero, ignoring");
+ job_log(j, LOG_WARNING, "%s is not greater than zero. Ignoring.", LAUNCH_JOBKEY_STARTINTERVAL);
+ } else if (value > UINT32_MAX) {
+ job_log(j, LOG_WARNING, "%s is too large. Ignoring.", LAUNCH_JOBKEY_STARTINTERVAL);
} else {
runtime_add_ref();
j->start_interval = value;
+
+ job_assumes(j, kevent_mod((uintptr_t)&j->start_interval, EVFILT_TIMER, EV_ADD, NOTE_SECONDS, value, j) != -1);
}
- if (-1 == kevent_mod((uintptr_t)&j->start_interval, EVFILT_TIMER, EV_ADD, NOTE_SECONDS, value, j)) {
- job_log_error(j, LOG_ERR, "adding kevent timer");
- }
} else if (strcasecmp(key, LAUNCH_JOBKEY_SANDBOXFLAGS) == 0) {
j->seatbelt_flags = value;
}
@@ -5192,7 +5199,9 @@
j->ondemand = !inval;
break;
case VPROC_GSK_START_INTERVAL:
- if ((unsigned int)inval > 0) {
+ if ((uint64_t)inval > UINT32_MAX) {
+ kr = 1;
+ } else if (inval) {
if (j->start_interval == 0) {
runtime_add_ref();
}
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.macosforge.org/pipermail/launchd-changes/attachments/20070914/6e56e6db/attachment.html
More information about the launchd-changes
mailing list