Mercurial > masqmail
comparison src/smtp_out.c @ 312:c74adb7c4f50
null-terminated the decoded base64 strings
The returned size is still the same. I only alloced one byte more and
filled it with zero.
TODO: I'm not sure if the allocated size is exact. It's large enough
but maybe too large.
author | meillo@marmaro.de |
---|---|
date | Sun, 24 Apr 2011 20:13:47 +0200 |
parents | 4cff8638dd9b |
children | 412385b57dc4 |
comparison
equal
deleted
inserted
replaced
311:e230bcd0f1c6 | 312:c74adb7c4f50 |
---|---|
626 gint resp_size; | 626 gint resp_size; |
627 gchar *reply64; | 627 gchar *reply64; |
628 | 628 |
629 DEBUG(5) debugf("smtp_out_auth_login():\n"); | 629 DEBUG(5) debugf("smtp_out_auth_login():\n"); |
630 resp64 = get_response_arg(&(psb->buffer[4])); | 630 resp64 = get_response_arg(&(psb->buffer[4])); |
631 DEBUG(5) debugf(" encoded response = %s\n", resp64); | 631 DEBUG(5) debugf(" encoded response = `%s'\n", resp64); |
632 resp = base64_decode(resp64, &resp_size); | 632 resp = base64_decode(resp64, &resp_size); |
633 g_free(resp64); | 633 g_free(resp64); |
634 DEBUG(5) debugf(" decoded response = %s, size = %d\n", resp, resp_size); | 634 DEBUG(5) debugf(" decoded response = `%s', size = %d\n", resp, resp_size); |
635 g_free(resp); | 635 g_free(resp); |
636 reply64 = base64_encode(psb->auth_login, strlen(psb->auth_login)); | 636 reply64 = base64_encode(psb->auth_login, strlen(psb->auth_login)); |
637 fprintf(psb->out, "%s\r\n", reply64); | 637 fprintf(psb->out, "%s\r\n", reply64); |
638 fflush(psb->out); | 638 fflush(psb->out); |
639 DEBUG(6) debugf("C: %s\n", reply64); | 639 DEBUG(6) debugf("C: %s\n", reply64); |
640 g_free(reply64); | 640 g_free(reply64); |
641 if ((ok = read_response(psb, SMTP_CMD_TIMEOUT))) { | 641 if ((ok = read_response(psb, SMTP_CMD_TIMEOUT))) { |
642 if ((ok = check_response(psb, TRUE))) { | 642 if ((ok = check_response(psb, TRUE))) { |
643 resp64 = get_response_arg(&(psb->buffer[4])); | 643 resp64 = get_response_arg(&(psb->buffer[4])); |
644 DEBUG(5) debugf(" encoded response = %s\n", resp64); | 644 DEBUG(5) debugf(" encoded response = `%s'\n", resp64); |
645 resp = base64_decode(resp64, &resp_size); | 645 resp = base64_decode(resp64, &resp_size); |
646 g_free(resp64); | 646 g_free(resp64); |
647 DEBUG(5) debugf(" decoded response = %s, size = %d\n", resp, resp_size); | 647 DEBUG(5) debugf(" decoded response = `%s', size = %d\n", resp, resp_size); |
648 g_free(resp); | 648 g_free(resp); |
649 reply64 = base64_encode(psb->auth_secret, strlen(psb->auth_secret)); | 649 reply64 = base64_encode(psb->auth_secret, strlen(psb->auth_secret)); |
650 fprintf(psb->out, "%s\r\n", reply64); | 650 fprintf(psb->out, "%s\r\n", reply64); |
651 fflush(psb->out); | 651 fflush(psb->out); |
652 DEBUG(6) debugf("C: %s\n", reply64); | 652 DEBUG(6) debugf("C: %s\n", reply64); |