summaryrefslogtreecommitdiff
path: root/scheduler
diff options
context:
space:
mode:
authorMichael R Sweet <michael.r.sweet@gmail.com>2019-11-17 10:18:09 -0500
committerMichael R Sweet <michael.r.sweet@gmail.com>2019-11-18 11:19:16 -0500
commitf4a99aeb0252068ee78bf2158fb01fef6f4599ca (patch)
tree31028c3e796a4b1701a10a06ffe37d823360d783 /scheduler
parentf950947148bd1867c247a211af7404056b2b2e36 (diff)
downloadcups-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.c8
-rw-r--r--scheduler/job.c80
-rw-r--r--scheduler/log.c16
-rw-r--r--scheduler/printers.c8
-rw-r--r--scheduler/subscriptions.c8
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);