diff options
author | sebres <sebres@users.sourceforge.net> | 2024-01-29 14:10:54 (GMT) |
---|---|---|
committer | sebres <sebres@users.sourceforge.net> | 2024-01-29 14:10:54 (GMT) |
commit | b0b50752804a4ae7921d7c6aacc089c3c756cf65 (patch) | |
tree | 6e999eec9be540c66ca7dd10e63a0b364078121f /generic/tclIO.c | |
parent | 5da9a1bb8e6c51510927de4512d3bc0348f14ec2 (diff) | |
parent | e854c0b7ad76b97772afc934c45e763ecf17ff5c (diff) | |
download | tcl-b0b50752804a4ae7921d7c6aacc089c3c756cf65.zip tcl-b0b50752804a4ae7921d7c6aacc089c3c756cf65.tar.gz tcl-b0b50752804a4ae7921d7c6aacc089c3c756cf65.tar.bz2 |
closes [db4f2843cd]: fixes segfault by BO in ReadChars (and Tcl_ReadChars with append)
Diffstat (limited to 'generic/tclIO.c')
-rw-r--r-- | generic/tclIO.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/generic/tclIO.c b/generic/tclIO.c index 0f79f1e..b8a79c2 100644 --- a/generic/tclIO.c +++ b/generic/tclIO.c @@ -6111,8 +6111,9 @@ ReadChars( int factor = *factorPtr; int dstLimit = TCL_UTF_MAX - 1 + toRead * factor / UTF_EXPANSION_FACTOR; + if (dstLimit <= 0) dstLimit = INT_MAX; /* avoid overflow */ (void) TclGetStringFromObj(objPtr, &numBytes); - Tcl_AppendToObj(objPtr, NULL, dstLimit); + TclAppendUtfToUtf(objPtr, NULL, dstLimit); if (toRead == srcLen) { unsigned int size; |