diff --git a/libs/libteletone/libteletone.2008.vcproj b/libs/libteletone/libteletone.2008.vcproj index c475c0d450..05a499cd25 100644 --- a/libs/libteletone/libteletone.2008.vcproj +++ b/libs/libteletone/libteletone.2008.vcproj @@ -50,6 +50,7 @@ WarningLevel="4" WarnAsError="true" DebugInformationFormat="4" + EnablePREfast="true" /> = 1400) // VC8+ +#define teletone_assert(expr) assert(expr);__analysis_assume( expr ) +#else +#define teletone_assert(expr) assert(expr) +#endif + #include #include diff --git a/libs/libteletone/src/libteletone_detect.c b/libs/libteletone/src/libteletone_detect.c index 7bbdd697df..55cfcf60cd 100644 --- a/libs/libteletone/src/libteletone_detect.c +++ b/libs/libteletone/src/libteletone_detect.c @@ -432,6 +432,8 @@ int teletone_dtmf_get (teletone_dtmf_detect_state_t *dtmf_detect_state, char *buf, int max) { + teletone_assert(dtmf_detect_state->current_digits <= TELETONE_MAX_DTMF_DIGITS); + if (max > dtmf_detect_state->current_digits) { max = dtmf_detect_state->current_digits; } diff --git a/libs/libteletone/src/libteletone_generate.c b/libs/libteletone/src/libteletone_generate.c index fdf4dd14f7..7771188c46 100644 --- a/libs/libteletone/src/libteletone_generate.c +++ b/libs/libteletone/src/libteletone_generate.c @@ -191,10 +191,13 @@ static int ensure_buffer(teletone_generation_session_t *ts, int need) need *= ts->channels; if (need > ts->datalen) { + teletone_audio_t *tmp; ts->datalen = need + ts->dynamic; - if (!(ts->buffer = realloc(ts->buffer, ts->datalen))) { + tmp = realloc(ts->buffer, ts->datalen); + if (!tmp) { return -1; } + ts->buffer = tmp; } return 0;