summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuis de Bethencourt <luisbg@osg.samsung.com>2015-11-12 12:21:54 +0000
committerLuis de Bethencourt <luisbg@osg.samsung.com>2015-11-12 12:29:33 +0000
commit6463ff198e8c106b8ceba7405777327e1beabd41 (patch)
treeabcff1d27133f99c02b0ba2812d483d5c2e2dd33
parentdd741e6412cf9e31aefb0de5aeb66e196a0499e4 (diff)
downloadgstreamer-plugins-base-6463ff198e8c106b8ceba7405777327e1beabd41.tar.gz
opusenc: avoid potential overflow expression
The result of the two expressions will be promoted to guint64 anyway, perform all the arithmetic in 64 bits to avoid potential overflows. CID 1338690, CID 1338691
-rw-r--r--ext/opus/gstopusenc.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/ext/opus/gstopusenc.c b/ext/opus/gstopusenc.c
index 729b2150c..d4a685adc 100644
--- a/ext/opus/gstopusenc.c
+++ b/ext/opus/gstopusenc.c
@@ -1007,7 +1007,7 @@ gst_opus_enc_encode (GstOpusEnc * enc, GstBuffer * buf)
trim_start = enc->pending_lookahead;
enc->pending_lookahead = 0;
} else {
- trim_start = input_samples * 48000 / enc->sample_rate;
+ trim_start = ((guint64) input_samples) * 48000 / enc->sample_rate;
enc->pending_lookahead -= trim_start;
output_samples = 0;
}
@@ -1026,7 +1026,8 @@ gst_opus_enc_encode (GstOpusEnc * enc, GstBuffer * buf)
output_samples = enc->consumed_samples - enc->encoded_samples;
input_samples = 0;
GST_DEBUG_OBJECT (enc, "draining %d samples", output_samples);
- trim_end = (frame_samples - output_samples) * 48000 / enc->sample_rate;
+ trim_end =
+ ((guint64) frame_samples - output_samples) * 48000 / enc->sample_rate;
} else if (enc->encoded_samples == enc->consumed_samples) {
GST_DEBUG_OBJECT (enc, "nothing to drain");
goto done;