From 2d5ec98631b0b439d67d7c83423e214891a2f121 Mon Sep 17 00:00:00 2001 From: "jan.nijtmans" Date: Tue, 31 Mar 2020 10:30:27 +0000 Subject: Other suggested solution for [b8e82d293b] --- generic/tclBinary.c | 3 ++- tests/binary.test | 12 +++++++++--- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/generic/tclBinary.c b/generic/tclBinary.c index 3575bce..33b1e3e 100644 --- a/generic/tclBinary.c +++ b/generic/tclBinary.c @@ -2639,13 +2639,14 @@ BinaryEncodeUu( &lineLength) != TCL_OK) { return TCL_ERROR; } - if (lineLength < 3 || lineLength > 85) { + if (lineLength < 5 || lineLength > 85) { Tcl_SetObjResult(interp, Tcl_NewStringObj( "line length out of range", -1)); Tcl_SetErrorCode(interp, "TCL", "BINARY", "ENCODE", "LINE_LENGTH", NULL); return TCL_ERROR; } + lineLength = ((lineLength - 1) & -4) + 1; /* 5, 9, 13 ... */ break; case OPT_WRAPCHAR: wrapchar = Tcl_GetByteArrayFromObj(objv[i + 1], &wrapcharlen); diff --git a/tests/binary.test b/tests/binary.test index 399a07c..480532c 100644 --- a/tests/binary.test +++ b/tests/binary.test @@ -2794,11 +2794,17 @@ test binary-74.10 {binary encode uuencode} -returnCodes error -body { binary encode uuencode -foo 30 abcabcabc } -result {bad option "-foo": must be -maxlen or -wrapchar} test binary-74.11 {binary encode uuencode} -returnCodes error -body { - binary encode uuencode -maxlen 1 abcabcabc + binary encode uuencode -maxlen 4 abcabcabc } -result {line length out of range} test binary-74.12 {binary encode uuencode} -body { - binary encode uuencode -maxlen 3 -wrapchar | abcabcabc -} -result {!80|!8@|!8P|!80|!8@|!8P|!80|!8@|!8P|} + binary encode uuencode -maxlen 5 -wrapchar | abcabcabc +} -result {#86)C|#86)C|#86)C|} +test binary-74.13 {binary encode uuencode} -body { + binary encode uuencode -maxlen 85 -wrapchar | abcabcabc +} -result {)86)C86)C86)C|} +test binary-74.14 {binary encode uuencode} -returnCodes error -body { + binary encode uuencode -maxlen 86 abcabcabc +} -result {line length out of range} test binary-75.1 {binary decode uuencode} -body { binary decode uuencode -- cgit v0.12