Opened 7 years ago
Closed 7 years ago
#7992 closed defect (fixed)
undefined-behavior at libavcodec/zmbvenc.c:243, 244
| Reported by: | Suhwan | Owned by: | |
|---|---|---|---|
| Priority: | normal | Component: | avcodec |
| Version: | git-master | Keywords: | ubsan avcodec |
| Cc: | Blocked By: | ||
| Blocking: | Reproduced by developer: | no | |
| Analyzed by developer: | no |
Description
Summary of the bug:
There's an undefined-behavior at libavcodec/zmbvenc.c:243.
How to reproduce:
% ffmpeg_g -y -r 80 -i tmp.mp4 -map 0 -c:v zmbv -c:v:64 rawvideo -disposition:v:66 mlp -disposition:v:126 nellymoser -vframes 7 -r 7 -ar 22050 -ac 3 -level 40 tmp_.afc ffmpeg version : N-94163-g664a27ea40 built with clang version 9.0.0
Here' the code line.
left shift of negative value on 243, 244 line
233 /* for now just XOR'ing */
234 for(y = 0; y < avctx->height; y += ZMBV_BLOCK) {
235 bh2 = FFMIN(avctx->height - y, ZMBV_BLOCK);
236 for(x = 0; x < avctx->width; x += ZMBV_BLOCK, mv += 2) {
237 bw2 = FFMIN(avctx->width - x, ZMBV_BLOCK);
238
239 tsrc = src + x * c->bypp;
240 tprev = prev + x * c->bypp;
241
242 zmbv_me(c, tsrc, p->linesize[0], tprev, c->pstride, x, y, &mx, &my, &xored);
243 mv[0] = (mx << 1) | !!xored;
244 mv[1] = my << 1;
245 tprev += mx * c->bypp + my * c->pstride;
246 if(xored){
247 for(j = 0; j < bh2; j++){
248 for(i = 0; i < bw2 * c->bypp; i++)
249 c->work_buf[work_size++] = tsrc[i] ^ tprev[i];
250 tsrc += p->linesize[0];
251 tprev += c->pstride;
252 }
253 }
254 }
255 src += p->linesize[0] * ZMBV_BLOCK;
256 prev += c->pstride * ZMBV_BLOCK;
257 }
Patches should be submitted to the ffmpeg-devel mailing list and not this bug tracker.
Attachments (2)
Change History (3)
by , 7 years ago
| Attachment: | gdb_log_7992 added |
|---|
by , 7 years ago
comment:1 by , 7 years ago
| Component: | undetermined → avcodec |
|---|---|
| Resolution: | → fixed |
| Status: | new → closed |
Note:
See TracTickets
for help on using tickets.



Fixed in ea56af88956061d700043c5c4b026ac57834b0c8.