Projects
Browse Source     Search     Timeline     Wiki

Changeset 23389

Show
Ignore:
Timestamp:
09/14/07 13:59:58 (15 months ago)
Author:
zarzycki@…
Message:

Better bounds checking.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • trunk/launchd/src/launchd_core_logic.c

    r23388 r23389  
    352352        uint64_t start_time; 
    353353        uint32_t min_run_time; 
    354         unsigned int start_interval; 
     354        uint32_t start_interval; 
    355355        unsigned int checkedin:1, anonymous:1, debug:1, inetcompat:1, inetcompat_wait:1, 
    356356                     ondemand:1, session_create:1, low_pri_io:1, no_init_groups:1, priv_port_has_senders:1, 
     
    14191419                if (strcasecmp(key, LAUNCH_JOBKEY_EXITTIMEOUT) == 0) { 
    14201420                        if (value < 0) { 
    1421                                 job_log(j, LOG_WARNING, "Exit timeout less zero. Ignoring."); 
     1421                                job_log(j, LOG_WARNING, "%s less than zero. Ignoring.", LAUNCH_JOBKEY_EXITTIMEOUT); 
     1422                        } else if (value > UINT32_MAX) { 
     1423                                job_log(j, LOG_WARNING, "%s is too large. Ignoring.", LAUNCH_JOBKEY_EXITTIMEOUT); 
    14221424                        } else { 
    14231425                                j->exit_timeout = value; 
     
    14351437        case 'T': 
    14361438                if (strcasecmp(key, LAUNCH_JOBKEY_TIMEOUT) == 0) { 
    1437                         if (value <= 0) { 
    1438                                 job_log(j, LOG_WARNING, "Timeout less than or equal to zero. Ignoring."); 
     1439                        if (value < 0) { 
     1440                                job_log(j, LOG_WARNING, "%s less than zero. Ignoring.", LAUNCH_JOBKEY_TIMEOUT); 
     1441                        } else if (value > UINT32_MAX) { 
     1442                                job_log(j, LOG_WARNING, "%s is too large. Ignoring.", LAUNCH_JOBKEY_TIMEOUT); 
    14391443                        } else { 
    14401444                                j->timeout = value; 
     
    14431447                        if (value < 0) { 
    14441448                                job_log(j, LOG_WARNING, "%s less than zero. Ignoring.", LAUNCH_JOBKEY_THROTTLEINTERVAL); 
     1449                        } else if (value > UINT32_MAX) { 
     1450                                job_log(j, LOG_WARNING, "%s is too large. Ignoring.", LAUNCH_JOBKEY_THROTTLEINTERVAL); 
    14451451                        } else { 
    14461452                                j->min_run_time = value; 
     
    14591465                if (strcasecmp(key, LAUNCH_JOBKEY_STARTINTERVAL) == 0) { 
    14601466                        if (value <= 0) { 
    1461                                 job_log(j, LOG_WARNING, "StartInterval is not greater than zero, ignoring"); 
     1467                                job_log(j, LOG_WARNING, "%s is not greater than zero. Ignoring.", LAUNCH_JOBKEY_STARTINTERVAL); 
     1468                        } else if (value > UINT32_MAX) { 
     1469                                job_log(j, LOG_WARNING, "%s is too large. Ignoring.", LAUNCH_JOBKEY_STARTINTERVAL); 
    14621470                        } else { 
    14631471                                runtime_add_ref(); 
    14641472                                j->start_interval = value; 
    1465                         } 
    1466                         if (-1 == kevent_mod((uintptr_t)&j->start_interval, EVFILT_TIMER, EV_ADD, NOTE_SECONDS, value, j)) { 
    1467                                 job_log_error(j, LOG_ERR, "adding kevent timer"); 
     1473 
     1474                                job_assumes(j, kevent_mod((uintptr_t)&j->start_interval, EVFILT_TIMER, EV_ADD, NOTE_SECONDS, value, j) != -1); 
    14681475                        } 
    14691476                } else if (strcasecmp(key, LAUNCH_JOBKEY_SANDBOXFLAGS) == 0) { 
     
    51935200                break; 
    51945201        case VPROC_GSK_START_INTERVAL: 
    5195                 if ((unsigned int)inval > 0) { 
     5202                if ((uint64_t)inval > UINT32_MAX) { 
     5203                        kr = 1; 
     5204                } else if (inval) { 
    51965205                        if (j->start_interval == 0) { 
    51975206                                runtime_add_ref();