comparison dnxhdenc.c @ 10542:5a298a61c6cc libavcodec

avoid integer overflow in dnxhd encoder, fixes #1557
author bcoudurier
date Fri, 20 Nov 2009 00:13:34 +0000
parents 5afea08b89d4
children 34a65026fa06
comparison
equal deleted inserted replaced
10541:5afea08b89d4 10542:5a298a61c6cc
572 break; 572 break;
573 } else { 573 } else {
574 last_higher = FFMAX(lambda, last_higher); 574 last_higher = FFMAX(lambda, last_higher);
575 if (last_lower != INT_MAX) 575 if (last_lower != INT_MAX)
576 lambda = (lambda+last_lower)>>1; 576 lambda = (lambda+last_lower)>>1;
577 else if ((int64_t)lambda + up_step > INT_MAX)
578 return -1;
577 else 579 else
578 lambda += up_step; 580 lambda += up_step;
579 up_step *= 5; 581 up_step = FFMIN((int64_t)up_step*5, INT_MAX);
580 down_step = 1<<LAMBDA_FRAC_BITS; 582 down_step = 1<<LAMBDA_FRAC_BITS;
581 } 583 }
582 } 584 }
583 //dprintf(ctx->m.avctx, "out lambda %d\n", lambda); 585 //dprintf(ctx->m.avctx, "out lambda %d\n", lambda);
584 ctx->lambda = lambda; 586 ctx->lambda = lambda;