@@ -614,34 +614,36 @@ PHPAPI bool php_mail(const char *to, const char *subject, const char *message, c
614614 size_t msg_len = strlen (message );
615615 size_t new_len = 0 ;
616616
617- for (size_t i = 0 ; i < msg_len - 1 ; ++ i ) {
618- if (message [i ] == '\r' && message [i + 1 ] == '\n' ) {
619- ++ new_len ;
617+ if (msg_len > 0 ) {
618+ for (size_t i = 0 ; i < msg_len - 1 ; ++ i ) {
619+ if (message [i ] == '\r' && message [i + 1 ] == '\n' ) {
620+ ++ new_len ;
621+ }
620622 }
621- }
622623
623- if (new_len == 0 ) {
624- fprintf (sendmail , "%s" , message );
625- } else {
626- converted_message = emalloc (msg_len - new_len + 1 );
627- size_t j = 0 ;
628- for (size_t i = 0 ; i < msg_len ; ++ i ) {
629- if (i < msg_len - 1 && message [i ] == '\r' && message [i + 1 ] == '\n' ) {
630- converted_message [j ++ ] = '\n' ;
631- ++ i ; /* skip LF part */
632- } else {
633- converted_message [j ++ ] = message [i ];
624+ if (new_len == 0 ) {
625+ fprintf (sendmail , "%s" , message );
626+ } else {
627+ converted_message = emalloc (msg_len - new_len + 1 );
628+ size_t j = 0 ;
629+ for (size_t i = 0 ; i < msg_len ; ++ i ) {
630+ if (i < msg_len - 1 && message [i ] == '\r' && message [i + 1 ] == '\n' ) {
631+ converted_message [j ++ ] = '\n' ;
632+ ++ i ; /* skip LF part */
633+ } else {
634+ converted_message [j ++ ] = message [i ];
635+ }
634636 }
635- }
636637
637- converted_message [j ] = '\0' ;
638- fprintf (sendmail , "%s" , converted_message );
639- efree (converted_message );
638+ converted_message [j ] = '\0' ;
639+ fprintf (sendmail , "%s" , converted_message );
640+ efree (converted_message );
641+ }
640642 }
641643 } else {
642644 fprintf (sendmail , "%s" , message );
643645 }
644-
646+
645647 fprintf (sendmail , "%s" , line_sep );
646648#ifdef PHP_WIN32
647649 ret = pclose (sendmail );
0 commit comments