From be37de038df05c25e840af1ec7be824df6a20a47 Mon Sep 17 00:00:00 2001 From: tyrolyean Date: Fri, 1 May 2020 02:12:34 +0200 Subject: [PATCH] Prevent array jumps Signed-off-by: tyrolyean --- src/attach.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/attach.c b/src/attach.c index 9e40c5b..d2063b9 100644 --- a/src/attach.c +++ b/src/attach.c @@ -199,7 +199,7 @@ void unravel_multipart_mail(struct email_t* mail){ continue; } struct email_t *submail = mail_from_text((char*)begin_pointer, - end_pointer - begin_pointer + 1, mail); + end_pointer - begin_pointer, mail); mail->submes = realloc(mail->submes, ++mail->submes_cnt * (sizeof(struct email_t))); mail->submes[mail->submes_cnt - 1] = submail; @@ -364,10 +364,13 @@ int replace_files(struct email_t* mail, const char* dirname, bool* created){ if(mail->is_multipart){ for(size_t i = 0; i < mail->submes_cnt; i++){ - if(replace_files(mail->submes[i], dirname, created) - < 0){ + int n = replace_files(mail->submes[i], dirname, + created) ; + if(n < 0){ return -1; + } else if(n == 1){ + i--; } } return 0; @@ -481,6 +484,6 @@ int replace_files(struct email_t* mail, const char* dirname, bool* created){ free(chosen_filename); free_submails(mail); free(mail); - return 0; + return 1; }