Mercurial > libavcodec.hg
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; |