From d55fb0318ce00cd52510be98ebcf8cf6857c0a96 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Andr=C3=A9=20Tanner?= Date: Tue, 22 Jul 2014 18:03:16 +0200 Subject: Perform argument validation --- editor.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/editor.c b/editor.c index df51954..b7e850a 100644 --- a/editor.c +++ b/editor.c @@ -442,6 +442,8 @@ static void change_free(Change *c) { * \-+ <-- +-----+ <-- +---------------+ <-- +-/ */ bool editor_insert_raw(Editor *ed, size_t pos, const char *data, size_t len) { + if (pos > ed->size) + return false; Location loc = piece_get(ed, pos); Piece *p = loc.piece; size_t off = loc.off; @@ -722,10 +724,9 @@ bool editor_delete(Editor *ed, size_t pos, size_t len) { } bool editor_replace_raw(Editor *ed, size_t pos, const char *data, size_t len) { - // TODO argument validation: pos etc. - editor_delete(ed, pos, len); - editor_insert(ed, pos, data); - return true; + if (!editor_delete(ed, pos, len)) + return false; + return editor_insert_raw(ed, pos, data, len); } bool editor_replace(Editor *ed, size_t pos, const char *data) { -- cgit v1.2.3