diff -ur curl-7.32.0-orig/lib/smtp.c curl-7.32.0/lib/smtp.c
--- curl-7.32.0-orig/lib/smtp.c	2013-08-09 17:41:42.000000000 -0400
+++ curl-7.32.0/lib/smtp.c	2014-09-24 11:27:09.000000000 -0400
@@ -1482,6 +1482,7 @@
       eob += 2;
       len -= 2;
     }
+    eob = strdup(eob);
 
     /* Send the end of block data */
     result = Curl_write(conn, conn->writesockfd, eob, len, &bytes_written);
@@ -1491,13 +1492,15 @@
     if(bytes_written != len) {
       /* The whole chunk was not sent so keep it around and adjust the
          pingpong structure accordingly */
-      pp->sendthis = strdup(eob);
+      pp->sendthis = eob;
       pp->sendsize = len;
       pp->sendleft = len - bytes_written;
     }
-    else
+    else {
       /* Successfully sent so adjust the response timeout relative to now */
       pp->response = Curl_tvnow();
+      free(eob);
+    }
 
     state(conn, SMTP_POSTDATA);
 
