Skip to content

Commit afd23e6

Browse files
committed
fix: read overflow calling readline() on istream.string object
1 parent b8a05a3 commit afd23e6

File tree

1 file changed

+5
-4
lines changed

1 file changed

+5
-4
lines changed

src/langlib/stream/kllib_kistring.c

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
#include "include/langlib/stream/kllib_kistring.h"
22
#include "include/mm/klmm.h"
3+
#include "include/value/klstring.h"
34
#include <stdlib.h>
45
#include <string.h>
56

@@ -20,7 +21,7 @@ Ki* kistring_create(KlString* str) {
2021
if (!kistring) return NULL;
2122
kistring->str = str;
2223
ki_init((Ki*)kistring, &kistring_vfunc);
23-
ki_setbuf((Ki*)kistring, klstring_content(str), klstring_size(str), 0);
24+
ki_setbuf((Ki*)kistring, klstring_content(str), klstring_length(str), 0);
2425
return (Ki*)kistring;
2526
}
2627

@@ -29,16 +30,16 @@ static void kistring_delete(KiString* kistring) {
2930
}
3031

3132
static KioFileOffset kistring_size(KiString* kistring) {
32-
return klstring_size(kistring->str);
33+
return klstring_length(kistring->str);
3334
}
3435

3536
static void kistring_reader(KiString* kistring) {
3637
size_t readpos = ki_tell((Ki*)kistring);
37-
if (readpos >= klstring_size(kistring->str)) {
38+
if (readpos >= klstring_length(kistring->str)) {
3839
ki_setbuf((Ki*)kistring, ki_getbuf((Ki*)kistring), 0, readpos);
3940
return;
4041
}
41-
ki_setbuf((Ki*)kistring, klstring_content(kistring->str), klstring_size(kistring->str), 0);
42+
ki_setbuf((Ki*)kistring, klstring_content(kistring->str), klstring_length(kistring->str), 0);
4243
ki_setbufcurr((Ki*)kistring, readpos);
4344
}
4445

0 commit comments

Comments
 (0)