--- elm2.5.6/src/reply.c.orig Thu Aug 2 17:24:37 2001 +++ elm2.5.6/src/reply.c Tue Oct 30 04:18:05 2001 @@ -43,6 +43,9 @@ #include "elm_defs.h" #include "elm_globals.h" #include "s_elm.h" +#include +#include +#include /** Note that this routine generates automatic header information for the subject and (obviously) to lines, but that these can @@ -569,9 +572,10 @@ FILE *mailfd; char entered[VERY_LONG_STRING], expanded[VERY_LONG_STRING]; char *filename, buffer[VERY_LONG_STRING], *msg; - int err; - + int err,tmpfd; + char tempfilename[255],*tmpdir; filename = NULL; + entered[0] = '\0'; if (!get_to(entered, expanded, SM_ORIGINAL)) @@ -591,7 +595,15 @@ /* tempnam is bad.... but only if we open the file in a way that follows * symlinks.... file_open doesn't. */ - if((filename = tempnam(temp_dir, "snd.")) == NULL) { + tmpdir=getenv("TMPDIR"); + if(tmpdir!=NULL){ + snprintf(tempfilename,255,"%s/snd.XXXXXX",tmpdir); + } + else{ + strncpy(tempfilename,"/tmp/snd.XXXXXX",254); + } + + if((tmpfd = mkstemp(tempfilename)) == -1) { dprint(1, (debugfile, "couldn't make temp file nam! (remail)\n")); set_error(catgets(elm_msg_cat, ElmSet, ElmCouldntMakeTempFileName, "Sorry - couldn't make file temp file name.")); --- elm2.5.5/src/sndpart_io.c.tempnam Thu Apr 6 16:01:21 2000 +++ elm2.5.5/src/sndpart_io.c Mon Jun 11 15:00:46 2001 @@ -28,6 +28,9 @@ #include "sndparts.h" #include "s_elm.h" #include +#include +#include +#include static int multipart_seqnum; @@ -517,14 +520,24 @@ char *fname_tmp, *fname_sel, cmd_buf[SLEN], *s; int rc, i; FILE *fp_src; - + char *tmpdir; + rc = -1; fp_src = NULL; + tmpdir=getenv("TMPDIR"); + if(!tmpdir){ + tmpdir=alloca(25); + strcpy(tmpdir,"/tmp"); + } + + fname_tmp=(char*)calloc(300,sizeof(char)); + snprintf(fname_tmp,299,"%s/emm.XXXXXX",tmpdir); switch (mime_encoding_type(part->content_header[BP_CONT_ENCODING])) { + case ENCODING_QUOTED: - if ((fname_tmp = tempnam(temp_dir, "emm.")) == NULL) { + if((mkstemp(fname_tmp))==-1){ error("Cannot make temp file name."); return -1; } @@ -532,7 +545,7 @@ break; case ENCODING_BASE64: - if ((fname_tmp = tempnam(temp_dir, "emm.")) == NULL) { + if((mkstemp(fname_tmp))==-1){ error("Cannot make temp file name."); return -1; } @@ -540,7 +553,7 @@ break; case ENCODING_UUENCODE: - if ((fname_tmp = tempnam(temp_dir, "emm.")) == NULL) { + if((mkstemp(fname_tmp))==-1){ error("Cannot make temp file name."); return -1; } @@ -549,6 +562,7 @@ default: /* encoding not needed */ + free(fname_tmp); fname_tmp = NULL; break; } --- elm2.5.5/src/sndmsg.c.tempnam Thu Apr 6 16:19:55 2000 +++ elm2.5.5/src/sndmsg.c Mon Jun 11 15:00:46 2001 @@ -40,6 +40,9 @@ #include "sndparts.h" #include "s_elm.h" #include +#include +#include +#include extern char *bounce_off_remote(); extern char *strip_commas(); @@ -80,8 +83,8 @@ char bigbuf[VERY_LONG_STRING]; char *s; int i; - - /* is there a cancelled message laying around from last time? */ + char *tmpdir; +/* is there a cancelled message laying around from last time? */ static int cancelled_msg = FALSE; static int saved_want_sig = FALSE; @@ -98,6 +101,12 @@ send_attempts = 0; rc = -1; + tmpdir=getenv("TMPDIR"); + if(!tmpdir){ + tmpdir=alloca(6); + strcpy(tmpdir,"/tmp"); + } + assert(mssgtype == SM_ORIGINAL || OPMODE_IS_READMODE(opmode)); switch (mssgtype) { case SM_ORIGINAL: @@ -359,7 +368,12 @@ remove_hostbang(shdr->expanded_bcc); /* create temp file in which to build entire message */ - if ((fname_fullmssg = tempnam(temp_dir, "xmt.")) == NULL) { + if(fname_fullmssg) + free(fname_fullmssg); + fname_fullmssg=calloc(300,sizeof(char)); + snprintf(fname_fullmssg,299,"%s/xmt.XXXXXX",tmpdir); + + if (mkstemp(fname_fullmssg)==-1){ dprint(1, (debugfile, "couldn't make temp file nam! (mail)\n")); error(catgets(elm_msg_cat, ElmSet, ElmCouldNotMakeTemp, "Sorry - couldn't make temp file name.")); --- elm2.5.5/src/sndpart_lib.c.tempnam Thu Mar 14 12:29:56 1996 +++ elm2.5.5/src/sndpart_lib.c Mon Jun 11 15:00:56 2001 @@ -4,7 +4,9 @@ #include "sndparts.h" #include "s_elm.h" #include - +#include +#include +#include /*******************/ /* Part is parts!! */ @@ -239,6 +241,14 @@ int len; FILE *fp; float p; + char *tmpdir; + + + tmpdir=getenv("TMPDIR"); + if(!tmpdir){ + tmpdir=alloca(6); + strcpy(tmpdir,"/tmp"); + } assert(sel >= 0 && sel < BP_NUM_CONT_HEADERS); bodypart_integrity_check(part); @@ -289,8 +299,12 @@ case BP_CONT_DESCRIPTION: value = NULL; - if ((fname_tmp = tempnam(temp_dir, "fil.")) != NULL) { - MIME_FILE_CMD(buf, part->fname, fname_tmp); + if(fname_tmp) + free(fname_tmp); + fname_tmp=calloc(300,sizeof(char)); + snprintf(fname_tmp,299,"%s/file.XXXXXX",tmpdir); + if(mkstemp(fname_tmp)!=-1){ + MIME_FILE_CMD(buf, part->fname, fname_tmp); if (system_call(buf, 0) == 0) { if ((fp = fopen(fname_tmp, "r")) != NULL) { if (fgets(buf, sizeof(buf), fp) != NULL) {