annotate src/opus-1.3/tests/test_opus_padding.c @ 169:223a55898ab9 tip default

Add null config files
author Chris Cannam <cannam@all-day-breakfast.com>
date Mon, 02 Mar 2020 14:03:47 +0000
parents 4664ac0c1032
children
rev   line source
cannam@154 1 /* Copyright (c) 2012 Xiph.Org Foundation
cannam@154 2 Written by Jüri Aedla and Ralph Giles */
cannam@154 3 /*
cannam@154 4 Redistribution and use in source and binary forms, with or without
cannam@154 5 modification, are permitted provided that the following conditions
cannam@154 6 are met:
cannam@154 7
cannam@154 8 - Redistributions of source code must retain the above copyright
cannam@154 9 notice, this list of conditions and the following disclaimer.
cannam@154 10
cannam@154 11 - Redistributions in binary form must reproduce the above copyright
cannam@154 12 notice, this list of conditions and the following disclaimer in the
cannam@154 13 documentation and/or other materials provided with the distribution.
cannam@154 14
cannam@154 15 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
cannam@154 16 ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
cannam@154 17 LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
cannam@154 18 A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
cannam@154 19 OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
cannam@154 20 EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
cannam@154 21 PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
cannam@154 22 PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
cannam@154 23 LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
cannam@154 24 NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
cannam@154 25 SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
cannam@154 26 */
cannam@154 27
cannam@154 28 /* Check for overflow in reading the padding length.
cannam@154 29 * http://lists.xiph.org/pipermail/opus/2012-November/001834.html
cannam@154 30 */
cannam@154 31
cannam@154 32 #include <stdio.h>
cannam@154 33 #include <stdlib.h>
cannam@154 34 #include <string.h>
cannam@154 35 #include "opus.h"
cannam@154 36 #include "test_opus_common.h"
cannam@154 37
cannam@154 38 #define PACKETSIZE 16909318
cannam@154 39 #define CHANNELS 2
cannam@154 40 #define FRAMESIZE 5760
cannam@154 41
cannam@154 42 int test_overflow(void)
cannam@154 43 {
cannam@154 44 OpusDecoder *decoder;
cannam@154 45 int result;
cannam@154 46 int error;
cannam@154 47
cannam@154 48 unsigned char *in = malloc(PACKETSIZE);
cannam@154 49 opus_int16 *out = malloc(FRAMESIZE*CHANNELS*sizeof(*out));
cannam@154 50
cannam@154 51 fprintf(stderr, " Checking for padding overflow... ");
cannam@154 52 if (!in || !out) {
cannam@154 53 fprintf(stderr, "FAIL (out of memory)\n");
cannam@154 54 return -1;
cannam@154 55 }
cannam@154 56 in[0] = 0xff;
cannam@154 57 in[1] = 0x41;
cannam@154 58 memset(in + 2, 0xff, PACKETSIZE - 3);
cannam@154 59 in[PACKETSIZE-1] = 0x0b;
cannam@154 60
cannam@154 61 decoder = opus_decoder_create(48000, CHANNELS, &error);
cannam@154 62 result = opus_decode(decoder, in, PACKETSIZE, out, FRAMESIZE, 0);
cannam@154 63 opus_decoder_destroy(decoder);
cannam@154 64
cannam@154 65 free(in);
cannam@154 66 free(out);
cannam@154 67
cannam@154 68 if (result != OPUS_INVALID_PACKET) {
cannam@154 69 fprintf(stderr, "FAIL!\n");
cannam@154 70 test_failed();
cannam@154 71 }
cannam@154 72
cannam@154 73 fprintf(stderr, "OK.\n");
cannam@154 74
cannam@154 75 return 1;
cannam@154 76 }
cannam@154 77
cannam@154 78 int main(void)
cannam@154 79 {
cannam@154 80 const char *oversion;
cannam@154 81 int tests = 0;;
cannam@154 82
cannam@154 83 iseed = 0;
cannam@154 84 oversion = opus_get_version_string();
cannam@154 85 if (!oversion) test_failed();
cannam@154 86 fprintf(stderr, "Testing %s padding.\n", oversion);
cannam@154 87
cannam@154 88 tests += test_overflow();
cannam@154 89
cannam@154 90 fprintf(stderr, "All padding tests passed.\n");
cannam@154 91
cannam@154 92 return 0;
cannam@154 93 }