changeset 630:8d8fe99b357c

core: fix buffer overflow in sndfile
author David Demelier <markand@malikania.fr>
date Sun, 27 Aug 2023 11:04:57 +0200
parents fee7bd30725c
children bb67f935a93f
files libmlk-core/mlk/core/sys.c
diffstat 1 files changed, 4 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/libmlk-core/mlk/core/sys.c	Sat Aug 26 16:09:35 2023 +0200
+++ b/libmlk-core/mlk/core/sys.c	Sun Aug 27 11:04:57 2023 +0200
@@ -205,7 +205,7 @@
 		vio->offset += offset;
 		break;
 	case SEEK_END:
-		vio->offset = vio->datasz - offset;
+		vio->offset = vio->datasz + offset;
 		break;
 	default:
 		break;
@@ -219,6 +219,9 @@
 {
 	struct viodata *vio = data;
 
+	if (vio->offset + (size_t)count > vio->datasz)
+		count = vio->datasz - vio->offset;
+
 	memcpy(ptr, vio->data + vio->offset, count);
 	vio->offset += count;