From b5a87aea7f89e1e809e1e9660d882ec0959c5890 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Fri, 22 Aug 2014 00:47:22 +0000 Subject: [PATCH] Avoid using undefined memory in `switch_fulldate_cmp` The `switch_split_date` and `switch_split_time` functions only set as many variables as they believe exist values in the input string. Since we didn't have defaults assigned we would read undefined stack memory if the input string didn't contain e.g. an hour. With this commit, we use 1970 if no year is present, January if no month is present, the first day of the month if none is given, and zero for each of a missing hour, minute, or second. --- src/switch_utils.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/switch_utils.c b/src/switch_utils.c index 2a6cbd649e..4f7ad9cea7 100644 --- a/src/switch_utils.c +++ b/src/switch_utils.c @@ -3005,8 +3005,8 @@ SWITCH_DECLARE(int) switch_fulldate_cmp(const char *exp, switch_time_t *ts) if ((sTime=strchr(sStart, ' '))) { switch_time_t tsStart; struct tm tmTmp; - int year, month, day; - int hour, min, sec; + int year = 1970, month = 1, day = 1; + int hour = 0, min = 0, sec = 0; *sTime++ = '\0'; memset(&tmTmp, 0, sizeof(tmTmp)); @@ -3026,8 +3026,8 @@ SWITCH_DECLARE(int) switch_fulldate_cmp(const char *exp, switch_time_t *ts) if ((sTime=strchr(sEnd, ' '))) { switch_time_t tsEnd; struct tm tmTmp; - int year, month, day; - int hour, min, sec; + int year = 1970, month = 1, day = 1; + int hour = 0, min = 0, sec = 0; *sTime++ = '\0'; memset(&tmTmp, 0, sizeof(tmTmp));