mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2026-08-09 17:39:08 +00:00
avfilter/vf_quirc: resize the quirc buffers when the input size changes
Fixes: out of array access
Fixes: JbvzNObhorBp
Fixes: 030e140145 (lavfi: add quirc filter)
Found-by: Adrian Junge (vurlo)
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
This commit is contained in:
committed by
michaelni
parent
f50e22c68d
commit
4da9812e25
@@ -36,6 +36,7 @@ typedef struct QuircContext {
|
||||
const AVClass *class;
|
||||
|
||||
struct quirc *quirc;
|
||||
int width, height;
|
||||
} QuircContext;
|
||||
|
||||
static av_cold int init(AVFilterContext *ctx)
|
||||
@@ -67,6 +68,8 @@ static int config_input(AVFilterLink *inlink)
|
||||
if (err == -1) {
|
||||
return AVERROR(ENOMEM);
|
||||
}
|
||||
quirc->width = inlink->w;
|
||||
quirc->height = inlink->h;
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -80,6 +83,15 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *frame)
|
||||
int codes_count;
|
||||
uint8_t *image;
|
||||
|
||||
if (quirc->width != inlink->w || quirc->height != inlink->h) {
|
||||
if (quirc_resize(quirc->quirc, inlink->w, inlink->h) < 0) {
|
||||
av_frame_free(&frame);
|
||||
return AVERROR(ENOMEM);
|
||||
}
|
||||
quirc->width = inlink->w;
|
||||
quirc->height = inlink->h;
|
||||
}
|
||||
|
||||
/* copy input image to quirc buffer */
|
||||
image = quirc_begin(quirc->quirc, NULL, NULL);
|
||||
av_image_copy_plane(image, inlink->w,
|
||||
|
||||
Reference in New Issue
Block a user