Validate crop and video size
A video width or height of 0 triggered an assert. Fail explicitly instead: the server may actually send this size in practice (for example on cropping with small dimensions, even if the requested crop size is not 0).
This commit is contained in:
parent
a7cae59578
commit
dea1fe3386
@ -299,6 +299,12 @@ sc_screen_frame_sink_open(struct sc_frame_sink *sink,
|
|||||||
|
|
||||||
struct sc_screen *screen = DOWNCAST(sink);
|
struct sc_screen *screen = DOWNCAST(sink);
|
||||||
|
|
||||||
|
if (ctx->width <= 0 || ctx->width > 0xFFFF
|
||||||
|
|| ctx->height <= 0 || ctx->height > 0xFFFF) {
|
||||||
|
LOGE("Invalid video size: %dx%d", ctx->width, ctx->height);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
assert(ctx->width > 0 && ctx->width <= 0xFFFF);
|
assert(ctx->width > 0 && ctx->width <= 0xFFFF);
|
||||||
assert(ctx->height > 0 && ctx->height <= 0xFFFF);
|
assert(ctx->height > 0 && ctx->height <= 0xFFFF);
|
||||||
// screen->frame_size is never used before the event is pushed, and the
|
// screen->frame_size is never used before the event is pushed, and the
|
||||||
|
@ -456,8 +456,14 @@ public class Options {
|
|||||||
}
|
}
|
||||||
int width = Integer.parseInt(tokens[0]);
|
int width = Integer.parseInt(tokens[0]);
|
||||||
int height = Integer.parseInt(tokens[1]);
|
int height = Integer.parseInt(tokens[1]);
|
||||||
|
if (width <= 0 || height <= 0) {
|
||||||
|
throw new IllegalArgumentException("Invalid crop size: " + width + "x" + height);
|
||||||
|
}
|
||||||
int x = Integer.parseInt(tokens[2]);
|
int x = Integer.parseInt(tokens[2]);
|
||||||
int y = Integer.parseInt(tokens[3]);
|
int y = Integer.parseInt(tokens[3]);
|
||||||
|
if (x < 0 || y < 0) {
|
||||||
|
throw new IllegalArgumentException("Invalid crop offset: " + x + ":" + y);
|
||||||
|
}
|
||||||
return new Rect(x, y, x + width, y + height);
|
return new Rect(x, y, x + width, y + height);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user