diff --git a/celt/tests/test_unit_entropy.c b/celt/tests/test_unit_entropy.c index a1ff668b6758c87912b356ed10341de70fb7910e..5cba4feddb9988f1884d9e6010e9c01a024958bf 100644 --- a/celt/tests/test_unit_entropy.c +++ b/celt/tests/test_unit_entropy.c @@ -35,16 +35,20 @@ int main(int _argc,char **_argv){ unsigned int sym; unsigned int seed; unsigned char *ptr; + const char *env_seed; ret=0; entropy=0; if (_argc > 2) { fprintf(stderr, "Usage: %s [<seed>]\n", _argv[0]); return 1; } - if (_argc > 1) - seed = atoi(_argv[1]); - else - seed = time(NULL); + env_seed = getenv("SEED"); + if (_argc > 1) + seed = atoi(_argv[1]); + else if (env_seed) + seed = atoi(env_seed); + else + seed = time(NULL); /*Testing encoding of raw bit values.*/ ptr = (unsigned char *)malloc(DATA_SIZE); ec_enc_init(&enc,ptr, DATA_SIZE); diff --git a/src/opus_decoder.c b/src/opus_decoder.c index 2fbe13f22fa92d8ab31a80d0dcba699b4843a32a..3df0cdfce59fc0248aa863c06425152dd2acf765 100644 --- a/src/opus_decoder.c +++ b/src/opus_decoder.c @@ -753,6 +753,8 @@ int opus_decode(OpusDecoder *st, const unsigned char *data, int ret, i; ALLOC_STACK; + if(frame_size<0)return OPUS_BAD_ARG; + ALLOC(out, frame_size*st->channels, float); ret = opus_decode_native(st, data, len, out, frame_size, decode_fec, 0, NULL); diff --git a/src/opus_encoder.c b/src/opus_encoder.c index c33e3b52775785dc982bc4b1dd247400e68b780e..b029369396d8c48a4eacc6601cf7850daf4ff410 100644 --- a/src/opus_encoder.c +++ b/src/opus_encoder.c @@ -1206,6 +1206,8 @@ int opus_encode_float(OpusEncoder *st, const float *pcm, int frame_size, VARDECL(opus_int16, in); ALLOC_STACK; + if(frame_size<0)return OPUS_BAD_ARG; + ALLOC(in, frame_size*st->channels, opus_int16); for (i=0;i<frame_size*st->channels;i++) diff --git a/tests/test_opus_api.c b/tests/test_opus_api.c index 86cc4a421a9e9c8756a1b9652701b8472db2eb5e..7e2236f87d1094cd0ab2f7a2a3a85ba90aaa21f6 100644 --- a/tests/test_opus_api.c +++ b/tests/test_opus_api.c @@ -92,8 +92,8 @@ opus_int32 test_dec_api(void) #endif short sbuf[960*2]; int c,err; - int *nullptr; - nullptr=0; + int *nullvalue; + nullvalue=0; cfgs=0; /*First test invalid configurations which should fail*/ @@ -163,7 +163,7 @@ opus_int32 test_dec_api(void) cfgs++; /*GET_PITCH has different execution paths depending on the previously decoded frame.*/ - err=opus_decoder_ctl(dec, OPUS_GET_PITCH(nullptr)); + err=opus_decoder_ctl(dec, OPUS_GET_PITCH(nullvalue)); if(err!=OPUS_BAD_ARG)test_failed(); cfgs++; VG_UNDEF(&i,sizeof(i)); @@ -297,8 +297,11 @@ opus_int32 test_msdec_api(void) #endif short sbuf[960*2]; int a,b,c,err; - int *nullptr; - nullptr=0; +#if 0 + /*Relevant test not enabled for multistream*/ + int *nullvalue; + nullvalue=0; +#endif cfgs=0; /*First test invalid configurations which should fail*/ @@ -414,7 +417,7 @@ opus_int32 test_msdec_api(void) fprintf(stdout," OPUS_GET_BANDWIDTH ........................... OK.\n"); cfgs++; /*GET_PITCH has different execution paths depending on the previously decoded frame.*/ - err=opus_multistream_decoder_ctl(dec, OPUS_GET_PITCH(nullptr)); + err=opus_multistream_decoder_ctl(dec, OPUS_GET_PITCH(nullvalue)); if(err!=OPUS_BAD_ARG)test_failed(); cfgs++; VG_UNDEF(&i,sizeof(i)); diff --git a/tests/test_opus_decode.c b/tests/test_opus_decode.c index b7fa26e869700d54f9ea1090d2e44c5543baaa0c..b2f78e3137475d7292edca6c0fb3155bc4893fcf 100644 --- a/tests/test_opus_decode.c +++ b/tests/test_opus_decode.c @@ -91,7 +91,7 @@ int test_decoder_code0(void) } } - decsize=opus_decoder_get_size(2); + decsize=opus_decoder_get_size(1); decbak=(OpusDecoder *)malloc(decsize); if(decbak==NULL)test_failed(); @@ -335,19 +335,30 @@ int test_decoder_code0(void) int main(int _argc, char **_argv) { const char * oversion; + const char * env_seed; + int env_used; + if(_argc>2) { fprintf(stderr,"Usage: %s [<seed>]\n",_argv[0]); return 1; } + env_used=0; + env_seed=getenv("SEED"); if(_argc>1)iseed=atoi(_argv[1]); + else if(env_seed) + { + iseed=atoi(env_seed); + env_used=1; + } else iseed=(opus_uint32)time(NULL)^((getpid()&65535)<<16); Rw=Rz=iseed; oversion=opus_get_version_string(); if(!oversion)test_failed(); fprintf(stderr,"Testing %s decoder. Random seed: %u (%.4X)\n", oversion, iseed, fast_rand() % 65535); + if(env_used)fprintf(stderr," Random seed set from the environment (SEED=%s).\n", env_seed); test_decoder_code0(); diff --git a/tests/test_opus_encode.c b/tests/test_opus_encode.c index 735d5438f0e47eba1ac23de6f35cdc356b628c76..315790c65169553497865e53388edd59227111e3 100644 --- a/tests/test_opus_encode.c +++ b/tests/test_opus_encode.c @@ -366,19 +366,30 @@ int run_test1(void) int main(int _argc, char **_argv) { const char * oversion; + const char * env_seed; + int env_used; + if(_argc>2) { fprintf(stderr,"Usage: %s [<seed>]\n",_argv[0]); return 1; } + env_used=0; + env_seed=getenv("SEED"); if(_argc>1)iseed=atoi(_argv[1]); + else if(env_seed) + { + iseed=atoi(env_seed); + env_used=1; + } else iseed=(opus_uint32)time(NULL)^((getpid()&65535)<<16); Rw=Rz=iseed; oversion=opus_get_version_string(); if(!oversion)test_failed(); fprintf(stderr,"Testing %s encoder. Random seed: %u (%.4X)\n", oversion, iseed, fast_rand() % 65535); + if(env_used)fprintf(stderr," Random seed set from the environment (SEED=%s).\n", env_seed); run_test1();