mirror of
https://github.com/LineageOS/android_kernel_samsung_msm8226.git
synced 2026-09-28 00:00:22 +02:00
Verify that the caller-provided sockaddr structure is large enough to contain the sa_family field, before accessing it in bind() and connect() handlers of the Bluetooth sockets. Since neither syscall enforces a minimum size of the corresponding memory region, very short sockaddrs (zero or one byte long) result in operating on uninitialized memory while referencing sa_family. Change-Id: I3c3bf3c9fa16abfb65f41e55c89c1ffcce2f58e7 Signed-off-by: Mateusz Jurczyk <mjurczyk@google.com> Signed-off-by: Marcel Holtmann <marcel@holtmann.org> Signed-off-by: Kevin F. Haggerty <haggertk@lineageos.org>
34 lines
620 B
C
34 lines
620 B
C
#ifndef _LINUX_STDDEF_H
|
|
#define _LINUX_STDDEF_H
|
|
|
|
#include <linux/compiler.h>
|
|
|
|
#ifdef __KERNEL__
|
|
|
|
#undef NULL
|
|
#define NULL ((void *)0)
|
|
|
|
enum {
|
|
false = 0,
|
|
true = 1
|
|
};
|
|
|
|
#undef offsetof
|
|
#ifdef __compiler_offsetof
|
|
#define offsetof(TYPE,MEMBER) __compiler_offsetof(TYPE,MEMBER)
|
|
#else
|
|
#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)
|
|
#endif
|
|
#endif /* __KERNEL__ */
|
|
|
|
/**
|
|
* offsetofend(TYPE, MEMBER)
|
|
*
|
|
* @TYPE: The type of the structure
|
|
* @MEMBER: The member within the structure to get the end offset of
|
|
*/
|
|
#define offsetofend(TYPE, MEMBER) \
|
|
(offsetof(TYPE, MEMBER) + sizeof(((TYPE *)0)->MEMBER))
|
|
|
|
#endif
|