From f7294afa23b9b2817e741a047ce27e0881915bed Mon Sep 17 00:00:00 2001 From: Thomas White Date: Fri, 12 Aug 2016 22:55:51 +0200 Subject: Fix scblock_delete_text() --- src/sc_parse.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'src/sc_parse.c') diff --git a/src/sc_parse.c b/src/sc_parse.c index 8bc6578..659f0a3 100644 --- a/src/sc_parse.c +++ b/src/sc_parse.c @@ -633,11 +633,13 @@ void sc_insert_block(SCBlock *b1, int o1, SCBlock *ins) void scblock_delete_text(SCBlock *b, size_t o1, size_t o2) { - if ( o1 >= o2 ) { - fprintf(stderr, "Backwards delete!\n"); + size_t len = strlen(b->contents); + if ( (o1 >= o2) || (o1 > len) || (o2 > len) ) { + fprintf(stderr, "Invalid delete: %i %i %i\n", + (int)o1, (int)o2, (int)len); return; } - memmove(b->contents+o1, b->contents+o2, o2-o1); + memmove(b->contents+o1, b->contents+o2, len-o2+1); } -- cgit v1.2.3