aboutgitcodelistschat:MatrixIRC
path: root/common/gluten.h
diff options
context:
space:
mode:
Diffstat (limited to 'common/gluten.h')
-rw-r--r--common/gluten.h7
1 files changed, 6 insertions, 1 deletions
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;