diff --git a/src/core/p-checksum.c b/src/core/p-checksum.c index febccd3cf1..28a3f4754d 100644 --- a/src/core/p-checksum.c +++ b/src/core/p-checksum.c @@ -240,6 +240,7 @@ } args = Find_Refines(ds, ALL_WRITE_REFS); arg = D_ARG(2); + if (!ANY_BINSTR(arg)) Trap_Arg(arg); REBI64 pos = (REBI64)VAL_INDEX(arg); if (args & AM_WRITE_SEEK) { pos += Int64(D_ARG(ARG_WRITE_INDEX)); diff --git a/src/tests/units/checksum-test.r3 b/src/tests/units/checksum-test.r3 index 0ffc8bdb0f..953bf34fca 100644 --- a/src/tests/units/checksum-test.r3 +++ b/src/tests/units/checksum-test.r3 @@ -208,6 +208,10 @@ if find system/catalog/checksums 'ripemd160 [ ;opening already opened port restarts computation --assert sum1 = read write/seek/part open port #{cafe0bad} 2 2 --assert sum1 = read write/seek/part open port tail #{cafe0bad} -2 2 + + --test-- "checksum port with invalid argument" + ;@@ https://github.com/Oldes/Rebol-issues/issues/2553 + --assert all [error? e: try [write checksum:md5 1] e/id = 'invalid-arg] ===end-group=== ===start-group=== "Checksum HMAC SHA"