len1 = min_uint(length, state->activefb_len - framebuf_offset);
len2 = length - len1;
if (len1 > 0) memcpy(dst, framebuf + framebuf_offset, len1);
- if (len2 > 0) memcpy(dst + len1, framebuf, len2);
+ // the following is tagged as OOB access to dst but appears to be fine
+ if (len2 > 0) memcpy(dst + len1, framebuf, len2);
return 0;
}
static int cga_free(struct video_internal * video_state) {
if (video_state->framebuf_pa) {
- PrintError(VM_NONE, VCORE_NONE, "Freeing framebuffer PA %p\n", (void *)(video_state->framebuf_pa));
+ PrintDebug(VM_NONE, VCORE_NONE, "Freeing framebuffer PA %p\n", (void *)(video_state->framebuf_pa));
V3_FreePages((void *)(video_state->framebuf_pa), (FRAMEBUF_SIZE / 4096));
}
video_state->dev = dev;
- video_state->framebuf_pa = (addr_t)V3_AllocShadowSafePages(vm,FRAMEBUF_SIZE / 4096);
+ video_state->framebuf_pa = (addr_t)V3_AllocPages(FRAMEBUF_SIZE / 4096);
if (!video_state->framebuf_pa) {
PrintError(vm, VCORE_NONE, "Cannot allocate frame buffer\n");