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);