Message ID | 20240522183128.18400-2-bethany.jamison@canonical.com |
---|---|
State | New |
Headers | show |
Series | [SRU,N/M/J/F,1/1] binder: check offset alignment in binder_get_object() | expand |
diff --git a/drivers/android/binder.c b/drivers/android/binder.c index 5da5792ca23ff..f9043d74a19f9 100644 --- a/drivers/android/binder.c +++ b/drivers/android/binder.c @@ -1708,8 +1708,10 @@ static size_t binder_get_object(struct binder_proc *proc, size_t object_size = 0; read_size = min_t(size_t, sizeof(*object), buffer->data_size - offset); - if (offset > buffer->data_size || read_size < sizeof(*hdr)) + if (offset > buffer->data_size || read_size < sizeof(*hdr) || + !IS_ALIGNED(offset, sizeof(u32))) return 0; + if (u) { if (copy_from_user(object, u + offset, read_size)) return 0;