From 2648be10c2a80f092fde24320efebba8a0ebefeb Mon Sep 17 00:00:00 2001 From: Tyrolyean Date: Thu, 30 Apr 2020 22:11:54 +0200 Subject: [PATCH] Added debug output Signed-off-by: Tyrolyean --- include/tools.h | 3 ++- src/mail.c | 7 +++++-- src/tools.c | 11 +++++++---- 3 files changed, 14 insertions(+), 7 deletions(-) diff --git a/include/tools.h b/include/tools.h index fa7bbed..ce218a9 100644 --- a/include/tools.h +++ b/include/tools.h @@ -20,11 +20,12 @@ #include "mail.h" #include +#include char* insert_string(char * destination, const char* source, size_t dest_orig_len, size_t offset); -void remove_string(char * string, size_t len, size_t offset, size_t remove); +bool remove_string(char * root, size_t len, size_t offset, size_t remove); char* search_header_key(const struct email_t* mail, const char* key); diff --git a/src/mail.c b/src/mail.c index 63cd5df..ae91845 100644 --- a/src/mail.c +++ b/src/mail.c @@ -137,8 +137,11 @@ int remove_mail(struct email_t* mail){ propagate_size_change(mail, -remove_len); - remove_string(root->message, root->message_length, - remove_offset, remove_len); + if(!remove_string(root->message, root->message_length, + remove_offset, remove_len)){ + fprintf(stderr, "Unwilling to remove string from message!\n"); + return -1; + } propagate_insert_delete(root, root->message+remove_offset, -remove_len); diff --git a/src/tools.c b/src/tools.c index 069b983..914f9ed 100644 --- a/src/tools.c +++ b/src/tools.c @@ -52,13 +52,16 @@ char* insert_string(char * destination, const char* source, /* Takes a string string and removes from offset INCLUDING the character there * the following remove bytes. Len is without the NULL-termination */ -void remove_string(char * string, size_t len, size_t offset, size_t remove){ +bool remove_string(char * root, size_t len, size_t offset, size_t remove){ + if(remove+offset > len || root == NULL){ + return false; + } - memmove(string+offset, string+offset+remove, len - (offset+remove)); - string[len-remove] = 0; + memmove(root+offset, root+offset+remove, len - (offset+remove)); + root[len-remove] = 0; - return; + return true; }