Date: Thu, 22 Apr 2004 15:17:14 +0200 From: Udo Schweigert <Udo.Schweigert@siemens.com> To: Jean-Baptiste Quenot <jb.quenot@caraldi.com>, freebsd-ports <ports@freebsd.org> Subject: Re: mutt change breaks vim syntax highlighting Message-ID: <20040422131714.GA85938@alaska.cert.siemens.de> In-Reply-To: <20040422092714.GF40900@anyware12.anyware> References: <20040422092714.GF40900@anyware12.anyware>
next in thread | previous in thread | raw e-mail | index | archive | help
On Thu, Apr 22, 2004 at 11:27:17 +0200, Jean-Baptiste Quenot wrote: > Dear Udo, > > Could you please review PR 63192? Since you introduced a patch to the > creation of temp files in Mutt with PR 62569, there is now a problem > with Vim syntax highlighting. > > Maintainer of Vim (David O'Brien) does not understand why this patch is > FreeBSD-specific and has not been submitted to Mutt's upstreams author. > Would you be kind to post a follow-up to this PR and to this list, > explaining your motivation to do so? > Adding the patch was done by another user's request, because the current mutt code causes problems on open-session machines, when PIDs are reused and thus mutt sometimes failes to open a tmp-file because it's already opened by another user. Another benefit is that the usage of mktemp() gives (a little) more security here. I also submitted that to the mutt developers mailing list, but it seems it hasn't been incorporated into the sources yet - and I doubt it will be done soon, because the whole handling of tmp-files in mutt should be rewritten ... A possible workaround would be to change the FreeBSD-patch so that the used tmp-filenames are compatible with vim. That will again lower them security as one would have to do something like that: --- muttlib.c.orig Thu Apr 22 14:43:58 2004 +++ muttlib.c Thu Apr 22 14:51:01 2004 @@ -657,7 +657,11 @@ void _mutt_mktemp (char *s, const char *src, int line) { - snprintf (s, _POSIX_PATH_MAX, "%s/mutt-%s-%d-%d", NONULL (Tempdir), NONULL(Hostname), (int) getpid (), Counter++); + char t[5]; + snprintf (t, 5, "-%03d", Counter++); + snprintf (s, _POSIX_PATH_MAX-5, "%s/mutt-%s-XXXXXXXX", NONULL(Tempdir), NONULL(Hostname)); + mktemp (s); + strncat(s, t, _POSIX_PATH_MAX); dprint (1, (debugfile, "%s:%d: mutt_mktemp returns \"%s\".\n", src, line, s)); unlink (s); } (Unfortunately there's no mktemps(), and mkstemps() isn't usable here) It's a bit ugly but it works ;-) Best regards -- Udo Schweigert, Siemens AG | Voice : +49 89 636 42170 CT IC CERT, Siemens CERT | Fax : +49 89 636 41166 D-81730 Muenchen / Germany | email : udo.schweigert@siemens.com
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20040422131714.GA85938>