]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
add some asserts to catch buffer overflow
authorAnthony Minessale <anthm@freeswitch.org>
Mon, 27 Oct 2014 19:06:46 +0000 (15:06 -0400)
committerAnthony Minessale <anthm@freeswitch.org>
Mon, 27 Oct 2014 19:13:42 +0000 (15:13 -0400)
src/switch_core_io.c

index 29e47a2dd9223b10eb9c4c76631cbb5d0c85b6de..1cd902473e8c20e79187d2d3d3b6eecfc02c2f4b 100644 (file)
@@ -892,12 +892,16 @@ SWITCH_DECLARE(switch_status_t) switch_core_session_read_frame(switch_core_sessi
                                switch_assert(enc_frame->data != NULL);
                                session->read_codec->cur_frame = enc_frame;
                                enc_frame->codec->cur_frame = enc_frame;
+                               switch_assert(enc_frame->datalen <= SWITCH_RECOMMENDED_BUFFER_SIZE);
+                               switch_assert(session->enc_read_frame.datalen <= SWITCH_RECOMMENDED_BUFFER_SIZE);
                                status = switch_core_codec_encode(session->read_codec,
                                                                                                  enc_frame->codec,
                                                                                                  enc_frame->data,
                                                                                                  enc_frame->datalen,
                                                                                                  session->read_impl.actual_samples_per_second,
                                                                                                  session->enc_read_frame.data, &session->enc_read_frame.datalen, &session->enc_read_frame.rate, &flag);
+                               switch_assert(session->enc_read_frame.datalen <= SWITCH_RECOMMENDED_BUFFER_SIZE);
+
                                session->read_codec->cur_frame = NULL;
                                enc_frame->codec->cur_frame = NULL;
                                switch (status) {
@@ -1475,6 +1479,8 @@ SWITCH_DECLARE(switch_status_t) switch_core_session_write_frame(switch_core_sess
                        session->enc_write_frame.datalen = session->enc_write_frame.buflen;
                        session->write_codec->cur_frame = frame;
                        frame->codec->cur_frame = frame;
+                       switch_assert(enc_frame->datalen <= SWITCH_RECOMMENDED_BUFFER_SIZE);
+                       switch_assert(session->enc_read_frame.datalen <= SWITCH_RECOMMENDED_BUFFER_SIZE);
                        status = switch_core_codec_encode(session->write_codec,
                                                                                          frame->codec,
                                                                                          enc_frame->data,
@@ -1482,6 +1488,8 @@ SWITCH_DECLARE(switch_status_t) switch_core_session_write_frame(switch_core_sess
                                                                                          session->write_impl.actual_samples_per_second,
                                                                                          session->enc_write_frame.data, &session->enc_write_frame.datalen, &session->enc_write_frame.rate, &flag);
 
+                       switch_assert(session->enc_read_frame.datalen <= SWITCH_RECOMMENDED_BUFFER_SIZE);
+
                        session->write_codec->cur_frame = NULL;
                        frame->codec->cur_frame = NULL;
                        switch (status) {
@@ -1582,6 +1590,8 @@ SWITCH_DECLARE(switch_status_t) switch_core_session_write_frame(switch_core_sess
 
                                session->write_codec->cur_frame = frame;
                                frame->codec->cur_frame = frame;
+                               switch_assert(enc_frame->datalen <= SWITCH_RECOMMENDED_BUFFER_SIZE);
+                               switch_assert(session->enc_read_frame.datalen <= SWITCH_RECOMMENDED_BUFFER_SIZE);
                                status = switch_core_codec_encode(session->write_codec,
                                                                                                  frame->codec,
                                                                                                  enc_frame->data,
@@ -1589,6 +1599,8 @@ SWITCH_DECLARE(switch_status_t) switch_core_session_write_frame(switch_core_sess
                                                                                                  rate,
                                                                                                  session->enc_write_frame.data, &session->enc_write_frame.datalen, &session->enc_write_frame.rate, &flag);
 
+                               switch_assert(session->enc_read_frame.datalen <= SWITCH_RECOMMENDED_BUFFER_SIZE);
+
                                session->write_codec->cur_frame = NULL;
                                frame->codec->cur_frame = NULL;
                                switch (status) {