c
bool safe_memcpy(void* dest, size_t dest_size, size_t offset, const void* src, size_t count) {
    if (offset + count > dest_size) return false;
    memcpy((char*)dest + offset, src, count);
    return true;
}

// ... in the loop:
if (!safe_memcpy(*pData, total_size, wpos, bptr, bplen)) {
    goto fail;
}
