From 2878f461e18869d7a63a6994a2e43fce05338c1b Mon Sep 17 00:00:00 2001 From: Alice Frosi Date: Fri, 14 Jul 2023 12:48:37 +0200 Subject: common, ops: add error print and return if desc is empty --- common/gluten.h | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'common') diff --git a/common/gluten.h b/common/gluten.h index 83cfbc3..fe62827 100644 --- a/common/gluten.h +++ b/common/gluten.h @@ -341,8 +341,10 @@ static inline const void *gluten_ptr(const struct seccomp_data *s, struct gluten *g, const struct gluten_offset x) { - if (!is_offset_valid(x)) + if (!is_offset_valid(x)) { + err(" offset limits are invalid"); return NULL; + } if (x.type == OFFSET_SECCOMP_DATA && s == NULL) return NULL; @@ -364,6 +366,7 @@ static inline const void *gluten_ptr(const struct seccomp_data *s, static inline bool check_gluten_limits(struct gluten_offset v, size_t size) { struct gluten_offset off = { v.type, v.offset + size }; + if (v.type == OFFSET_SECCOMP_DATA || is_offset_valid(off)) return true; @@ -388,8 +391,10 @@ static inline int gluten_read(const struct seccomp_data *s, struct gluten *g, size_t size) { const void *p = gluten_ptr(s, g, src); + if (p == NULL || !check_gluten_limits(src, size)) return -1; + memcpy(dst, p, size); return 0; -- cgit v1.2.3