Nothing guaranteed that off+size wouldn't exceed a 2**64 value.
Instead we reverse the operation and use a subtraction.
return NULL;
}
- if (((guint64) off + size) <= helper->size)
+ /* If we request beyond the available size, we're sure we can't return
+ * anything regardless of the requested offset */
+ if (size > helper->size)
+ return NULL;
+
+ /* Only return data if there's enough room left for the given offset.
+ * This is the same as "if (off + size <= helper->size)" except that
+ * it doesn't exceed type limits */
+ if (off <= helper->size - size)
return helper->data + off;
return NULL;