]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
[core] fix memory leak in switch_core_asr_feed 1595/head
authorClarence <xjh.azzbcc@gmail.com>
Wed, 23 Mar 2022 09:00:02 +0000 (17:00 +0800)
committerClarence <xjh.azzbcc@gmail.com>
Wed, 23 Mar 2022 09:05:50 +0000 (17:05 +0800)
src/switch_core_asr.c

index dd0df4302e23530418aaf0f08f1a5a14ab6dcde3..6b91922a8aa43852d43f7a815c164a0d2736e526 100644 (file)
@@ -233,6 +233,7 @@ SWITCH_DECLARE(switch_status_t) switch_core_asr_close(switch_asr_handle_t *ah, s
        status = ah->asr_interface->asr_close(ah, flags);
        switch_set_flag(ah, SWITCH_ASR_FLAG_CLOSED);
 
+       switch_safe_free(ah->dbuf);
        switch_resample_destroy(&ah->resampler);
 
        UNPROTECT_INTERFACE(ah->asr_interface);
@@ -260,7 +261,7 @@ SWITCH_DECLARE(switch_status_t) switch_core_asr_feed(switch_asr_handle_t *ah, vo
 
                switch_resample_process(ah->resampler, data, len / 2);
                if (ah->resampler->to_len * 2 > orig_len) {
-                       if (!ah->dbuf) {
+                       if (ah->dbuflen < ah->resampler->to_len * 2) {
                                void *mem;
                                ah->dbuflen = ah->resampler->to_len * 2;
                                mem = realloc(ah->dbuf, ah->dbuflen);