From: Travis Cross Date: Fri, 22 Aug 2014 00:47:22 +0000 (+0000) Subject: Avoid using undefined memory in `switch_fulldate_cmp` X-Git-Tag: v1.4.8~5^2~14 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b5a87aea7f89e1e809e1e9660d882ec0959c5890;p=thirdparty%2Ffreeswitch.git 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. --- 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));