From: Scott Griepentrog Date: Wed, 22 Jan 2014 22:23:16 +0000 (+0000) Subject: pbx.c: Pre-initialize timezone to avoid crash on destroy X-Git-Tag: 12.1.0-rc1~3^2~54 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=24969c3e4eff1eb9a81315fe501682a0474ac579;p=thirdparty%2Fasterisk.git pbx.c: Pre-initialize timezone to avoid crash on destroy In ast_build_timing, initialize the timezone value to NULL in order to avoid deferencing an uninitialized value later when calling ast_destroy_timing. The timezone value could be uninitialized if ast_build_timing were to fail due to a zero length time string. (closes issue ASTERISK-22861) Reported by: Sebastian Murray-Roberts Review: https://reviewboard.asterisk.org/r/3134/ Patches: ast_build_timing-initialize-timezone.patch uploaded by coreyfarrell (license 5909) ........ Merged revisions 406241 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 406245 from http://svn.asterisk.org/svn/asterisk/branches/11 git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/12@406264 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- diff --git a/main/pbx.c b/main/pbx.c index 5ec4979212..efeddaf6bb 100644 --- a/main/pbx.c +++ b/main/pbx.c @@ -9154,6 +9154,8 @@ int ast_build_timing(struct ast_timing *i, const char *info_in) char *info; int j, num_fields, last_sep = -1; + i->timezone = NULL; + /* Check for empty just in case */ if (ast_strlen_zero(info_in)) { return 0; @@ -9173,8 +9175,6 @@ int ast_build_timing(struct ast_timing *i, const char *info_in) /* save the timezone, if it is specified */ if (num_fields == 5) { i->timezone = ast_strdup(info + last_sep + 1); - } else { - i->timezone = NULL; } /* Assume everything except time */ diff --git a/utils/extconf.c b/utils/extconf.c index a31fe283ad..981a64e61a 100644 --- a/utils/extconf.c +++ b/utils/extconf.c @@ -4454,6 +4454,8 @@ int ast_build_timing(struct ast_timing *i, const char *info_in) char *info; int j, num_fields, last_sep = -1; + i->timezone = NULL; + /* Check for empty just in case */ if (ast_strlen_zero(info_in)) { return 0; @@ -4473,8 +4475,6 @@ int ast_build_timing(struct ast_timing *i, const char *info_in) /* save the timezone, if it is specified */ if (num_fields == 5) { i->timezone = ast_strdup(info + last_sep + 1); - } else { - i->timezone = NULL; } /* Assume everything except time */