diff options
author | Michael R Sweet <michael.r.sweet@gmail.com> | 2019-11-17 10:18:09 -0500 |
---|---|---|
committer | Michael R Sweet <michael.r.sweet@gmail.com> | 2019-11-18 11:19:16 -0500 |
commit | f4a99aeb0252068ee78bf2158fb01fef6f4599ca (patch) | |
tree | 31028c3e796a4b1701a10a06ffe37d823360d783 /scheduler | |
parent | f950947148bd1867c247a211af7404056b2b2e36 (diff) | |
download | cups-f4a99aeb0252068ee78bf2158fb01fef6f4599ca.tar.gz |
Address multiple minor issues reported by the LGTM security scanner:
- Lots of usage of localtime and gmtime (use _r/_s versions instead -
Issue #5685)
- Some unnecessary comparisons
- Suppress checks that are not useful (header guards, short global names, and
the integer overflow checks which don't reflect the actual range of values)
Diffstat (limited to 'scheduler')
-rw-r--r-- | scheduler/classes.c | 8 | ||||
-rw-r--r-- | scheduler/job.c | 80 | ||||
-rw-r--r-- | scheduler/log.c | 16 | ||||
-rw-r--r-- | scheduler/printers.c | 8 | ||||
-rw-r--r-- | scheduler/subscriptions.c | 8 |
5 files changed, 60 insertions, 60 deletions
diff --git a/scheduler/classes.c b/scheduler/classes.c index 776e79a91..14d2558bf 100644 --- a/scheduler/classes.c +++ b/scheduler/classes.c @@ -664,7 +664,7 @@ cupsdSaveAllClasses(void) cupsd_printer_t *pclass; /* Current printer class */ int i; /* Looping var */ time_t curtime; /* Current time */ - struct tm *curdate; /* Current date */ + struct tm curdate; /* Current date */ cups_option_t *option; /* Current option */ @@ -683,9 +683,9 @@ cupsdSaveAllClasses(void) * Write a small header to the file... */ - curtime = time(NULL); - curdate = localtime(&curtime); - strftime(temp, sizeof(temp) - 1, "%Y-%m-%d %H:%M", curdate); + time(&curtime); + localtime_r(&curtime, &curdate); + strftime(temp, sizeof(temp) - 1, "%Y-%m-%d %H:%M", &curdate); cupsFilePuts(fp, "# Class configuration file for " CUPS_SVERSION "\n"); cupsFilePrintf(fp, "# Written by cupsd on %s\n", temp); diff --git a/scheduler/job.c b/scheduler/job.c index 2cfb1b03d..e20e7c563 100644 --- a/scheduler/job.c +++ b/scheduler/job.c @@ -2183,7 +2183,7 @@ cupsdSaveAllJobs(void) temp[1024]; /* Temporary string */ cupsd_job_t *job; /* Current job */ time_t curtime; /* Current time */ - struct tm *curdate; /* Current date */ + struct tm curdate; /* Current date */ snprintf(filename, sizeof(filename), "%s/job.cache", CacheDir); @@ -2196,9 +2196,9 @@ cupsdSaveAllJobs(void) * Write a small header to the file... */ - curtime = time(NULL); - curdate = localtime(&curtime); - strftime(temp, sizeof(temp) - 1, "%Y-%m-%d %H:%M", curdate); + time(&curtime); + localtime_r(&curtime, &curdate); + strftime(temp, sizeof(temp) - 1, "%Y-%m-%d %H:%M", &curdate); cupsFilePuts(fp, "# Job cache file for " CUPS_SVERSION "\n"); cupsFilePrintf(fp, "# Written by cupsd on %s\n", temp); @@ -2311,7 +2311,7 @@ cupsdSetJobHoldUntil(cupsd_job_t *job, /* I - Job */ int update)/* I - Update job-hold-until attr? */ { time_t curtime; /* Current time */ - struct tm *curdate; /* Current date */ + struct tm curdate; /* Current date */ int hour; /* Hold hour */ int minute; /* Hold minute */ int second = 0; /* Hold second */ @@ -2380,15 +2380,15 @@ cupsdSetJobHoldUntil(cupsd_job_t *job, /* I - Job */ * Hold to 6am the next morning unless local time is < 6pm. */ - curtime = time(NULL); - curdate = localtime(&curtime); + time(&curtime); + localtime_r(&curtime, &curdate); - if (curdate->tm_hour < 18) + if (curdate.tm_hour < 18) job->hold_until = curtime; else job->hold_until = curtime + - ((29 - curdate->tm_hour) * 60 + 59 - - curdate->tm_min) * 60 + 60 - curdate->tm_sec; + ((29 - curdate.tm_hour) * 60 + 59 - + curdate.tm_min) * 60 + 60 - curdate.tm_sec; } else if (!strcmp(when, "evening") || !strcmp(when, "night")) { @@ -2396,15 +2396,15 @@ cupsdSetJobHoldUntil(cupsd_job_t *job, /* I - Job */ * Hold to 6pm unless local time is > 6pm or < 6am. */ - curtime = time(NULL); - curdate = localtime(&curtime); + time(&curtime); + localtime_r(&curtime, &curdate); - if (curdate->tm_hour < 6 || curdate->tm_hour >= 18) + if (curdate.tm_hour < 6 || curdate.tm_hour >= 18) job->hold_until = curtime; else job->hold_until = curtime + - ((17 - curdate->tm_hour) * 60 + 59 - - curdate->tm_min) * 60 + 60 - curdate->tm_sec; + ((17 - curdate.tm_hour) * 60 + 59 - + curdate.tm_min) * 60 + 60 - curdate.tm_sec; } else if (!strcmp(when, "second-shift")) { @@ -2412,15 +2412,15 @@ cupsdSetJobHoldUntil(cupsd_job_t *job, /* I - Job */ * Hold to 4pm unless local time is > 4pm. */ - curtime = time(NULL); - curdate = localtime(&curtime); + time(&curtime); + localtime_r(&curtime, &curdate); - if (curdate->tm_hour >= 16) + if (curdate.tm_hour >= 16) job->hold_until = curtime; else job->hold_until = curtime + - ((15 - curdate->tm_hour) * 60 + 59 - - curdate->tm_min) * 60 + 60 - curdate->tm_sec; + ((15 - curdate.tm_hour) * 60 + 59 - + curdate.tm_min) * 60 + 60 - curdate.tm_sec; } else if (!strcmp(when, "third-shift")) { @@ -2428,15 +2428,15 @@ cupsdSetJobHoldUntil(cupsd_job_t *job, /* I - Job */ * Hold to 12am unless local time is < 8am. */ - curtime = time(NULL); - curdate = localtime(&curtime); + time(&curtime); + localtime_r(&curtime, &curdate); - if (curdate->tm_hour < 8) + if (curdate.tm_hour < 8) job->hold_until = curtime; else job->hold_until = curtime + - ((23 - curdate->tm_hour) * 60 + 59 - - curdate->tm_min) * 60 + 60 - curdate->tm_sec; + ((23 - curdate.tm_hour) * 60 + 59 - + curdate.tm_min) * 60 + 60 - curdate.tm_sec; } else if (!strcmp(when, "weekend")) { @@ -2444,16 +2444,16 @@ cupsdSetJobHoldUntil(cupsd_job_t *job, /* I - Job */ * Hold to weekend unless we are in the weekend. */ - curtime = time(NULL); - curdate = localtime(&curtime); + time(&curtime); + localtime_r(&curtime, &curdate); - if (curdate->tm_wday == 0 || curdate->tm_wday == 6) + if (curdate.tm_wday == 0 || curdate.tm_wday == 6) job->hold_until = curtime; else job->hold_until = curtime + - (((5 - curdate->tm_wday) * 24 + - (17 - curdate->tm_hour)) * 60 + 59 - - curdate->tm_min) * 60 + 60 - curdate->tm_sec; + (((5 - curdate.tm_wday) * 24 + + (17 - curdate.tm_hour)) * 60 + 59 - + curdate.tm_min) * 60 + 60 - curdate.tm_sec; } else if (sscanf(when, "%d:%d:%d", &hour, &minute, &second) >= 2) { @@ -2461,12 +2461,12 @@ cupsdSetJobHoldUntil(cupsd_job_t *job, /* I - Job */ * Hold to specified GMT time (HH:MM or HH:MM:SS)... */ - curtime = time(NULL); - curdate = gmtime(&curtime); + time(&curtime); + gmtime_r(&curtime, &curdate); job->hold_until = curtime + - ((hour - curdate->tm_hour) * 60 + minute - - curdate->tm_min) * 60 + second - curdate->tm_sec; + ((hour - curdate.tm_hour) * 60 + minute - + curdate.tm_min) * 60 + second - curdate.tm_sec; /* * Hold until next day as needed... @@ -2957,7 +2957,7 @@ dump_job_history(cupsd_job_t *job) /* I - Job */ { int i, /* Looping var */ oldsize; /* Current MaxLogSize */ - struct tm *date; /* Date/time value */ + struct tm date; /* Date/time value */ cupsd_joblog_t *message; /* Current message */ char temp[2048], /* Log message */ *ptr, /* Pointer into log message */ @@ -2985,12 +2985,12 @@ dump_job_history(cupsd_job_t *job) /* I - Job */ */ message = (cupsd_joblog_t *)cupsArrayFirst(job->history); - date = localtime(&(message->time)); - strftime(start, sizeof(start), "%X", date); + localtime_r(&(message->time), &date); + strftime(start, sizeof(start), "%X", &date); message = (cupsd_joblog_t *)cupsArrayLast(job->history); - date = localtime(&(message->time)); - strftime(end, sizeof(end), "%X", date); + localtime_r(&(message->time), &date); + strftime(end, sizeof(end), "%X", &date); snprintf(temp, sizeof(temp), "[Job %d] The following messages were recorded from %s to %s", diff --git a/scheduler/log.c b/scheduler/log.c index cdb5437dc..2bd1952f7 100644 --- a/scheduler/log.c +++ b/scheduler/log.c @@ -301,7 +301,7 @@ cupsdGetDateTime(struct timeval *t, /* I - Time value or NULL for current */ cupsd_time_t format) /* I - Format to use */ { struct timeval curtime; /* Current time value */ - struct tm *date; /* Date/time value */ + struct tm date; /* Date/time value */ static struct timeval last_time = { 0, 0 }; /* Last time we formatted */ static char s[1024]; /* Date/time string */ @@ -351,23 +351,23 @@ cupsdGetDateTime(struct timeval *t, /* I - Time value or NULL for current */ * (*BSD and Darwin store the timezone offset in the tm structure) */ - date = localtime(&(t->tv_sec)); + localtime_r(&(t->tv_sec), &date); if (format == CUPSD_TIME_STANDARD) snprintf(s, sizeof(s), "[%02d/%s/%04d:%02d:%02d:%02d %+03ld%02ld]", - date->tm_mday, months[date->tm_mon], 1900 + date->tm_year, - date->tm_hour, date->tm_min, date->tm_sec, + date.tm_mday, months[date.tm_mon], 1900 + date.tm_year, + date.tm_hour, date.tm_min, date.tm_sec, #ifdef HAVE_TM_GMTOFF - date->tm_gmtoff / 3600, (date->tm_gmtoff / 60) % 60); + date.tm_gmtoff / 3600, (date.tm_gmtoff / 60) % 60); #else timezone / 3600, (timezone / 60) % 60); #endif /* HAVE_TM_GMTOFF */ else snprintf(s, sizeof(s), "[%02d/%s/%04d:%02d:%02d:%02d.%06d %+03ld%02ld]", - date->tm_mday, months[date->tm_mon], 1900 + date->tm_year, - date->tm_hour, date->tm_min, date->tm_sec, (int)t->tv_usec, + date.tm_mday, months[date.tm_mon], 1900 + date.tm_year, + date.tm_hour, date.tm_min, date.tm_sec, (int)t->tv_usec, #ifdef HAVE_TM_GMTOFF - date->tm_gmtoff / 3600, (date->tm_gmtoff / 60) % 60); + date.tm_gmtoff / 3600, (date.tm_gmtoff / 60) % 60); #else timezone / 3600, (timezone / 60) % 60); #endif /* HAVE_TM_GMTOFF */ diff --git a/scheduler/printers.c b/scheduler/printers.c index 75ef4c0d2..80690397d 100644 --- a/scheduler/printers.c +++ b/scheduler/printers.c @@ -1478,7 +1478,7 @@ cupsdSaveAllPrinters(void) *name; /* Current user/group name */ cupsd_printer_t *printer; /* Current printer class */ time_t curtime; /* Current time */ - struct tm *curdate; /* Current date */ + struct tm curdate; /* Current date */ cups_option_t *option; /* Current option */ ipp_attribute_t *marker; /* Current marker attribute */ @@ -1498,9 +1498,9 @@ cupsdSaveAllPrinters(void) * Write a small header to the file... */ - curtime = time(NULL); - curdate = localtime(&curtime); - strftime(temp, sizeof(temp) - 1, "%Y-%m-%d %H:%M", curdate); + time(&curtime); + localtime_r(&curtime, &curdate); + strftime(temp, sizeof(temp) - 1, "%Y-%m-%d %H:%M", &curdate); cupsFilePuts(fp, "# Printer configuration file for " CUPS_SVERSION "\n"); cupsFilePrintf(fp, "# Written by cupsd on %s\n", temp); diff --git a/scheduler/subscriptions.c b/scheduler/subscriptions.c index 3267a2ff6..15acedca8 100644 --- a/scheduler/subscriptions.c +++ b/scheduler/subscriptions.c @@ -1025,7 +1025,7 @@ cupsdSaveAllSubscriptions(void) temp[1024]; /* Temporary string */ cupsd_subscription_t *sub; /* Current subscription */ time_t curtime; /* Current time */ - struct tm *curdate; /* Current date */ + struct tm curdate; /* Current date */ unsigned mask; /* Current event mask */ const char *name; /* Current event name */ int hex; /* Non-zero if we are writing hex data */ @@ -1046,9 +1046,9 @@ cupsdSaveAllSubscriptions(void) * Write a small header to the file... */ - curtime = time(NULL); - curdate = localtime(&curtime); - strftime(temp, sizeof(temp) - 1, "%Y-%m-%d %H:%M", curdate); + time(&curtime); + localtime_r(&curtime, &curdate); + strftime(temp, sizeof(temp) - 1, "%Y-%m-%d %H:%M", &curdate); cupsFilePuts(fp, "# Subscription configuration file for " CUPS_SVERSION "\n"); cupsFilePrintf(fp, "# Written by cupsd on %s\n", temp); |