change to ee.c
Xin LI
delphij at delphij.net
Sat Nov 29 20:10:30 PST 2008
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Hi, Eitan,
Eitan Adler wrote:
> I changed this pursuant to a warning I got from gcc.
> according to the man page "This avoids the race between testing for a
> file's existence and opening it for use."
>
> Could someone on this list please tell me
> a) If mkstemp is supposed to be used instead
> b) if not, why not?
> I tested this change and was able to spell check files (the function
> which this changes).
>
> As an aside I got an unreproducible segfault 11 when I tried to
> spellcheck an empty file. When I tried again I did not get the same
> error. I have the ee.core file.
>
> --- ee.c.back 2008-11-29 22:52:28.000000000 -0500
> +++ ee.c 2008-11-29 22:52:35.000000000 -0500
> @@ -4386,7 +4386,7 @@
> return;
> }
> (void)sprintf(template, "/tmp/ee.XXXXXXXX");
> - name = mktemp(&template[0]);
> + name = mkstemp(&template[0]);
> fd = open(name, O_CREAT | O_EXCL | O_RDWR, 0600);
> if (fd < 0) {
> wmove(com_win, 0, 0);
Tanks for interested in this but I'm afraid that your patch is
incorrect. mkstemp returns a file descriptor rather than a string
pointer, therefore, the subsequent open() would have undefined behavior.
It looks like that we actually want fd = mkstemp() here.
Note that we may want to bring vendor fixes before making any changes to
reduce duplicated work...
Cheers,
- --
Xin LI <delphij at delphij.net> http://www.delphij.net/
FreeBSD - The Power to Serve!
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.9 (FreeBSD)
iEYEARECAAYFAkkyEioACgkQi+vbBBjt66Dg8QCgw5nCU0G1WnHYtVziiNMpawqh
iPwAni7zA4yFnX9waNC0Hmj36rX6yrIG
=iJ2c
-----END PGP SIGNATURE-----
More information about the freebsd-hackers
mailing list