[libvirt] [PATCH] build: prefer mkostemp for multi-thread safety
Martin Kletzander
mkletzan at redhat.com
Wed Oct 31 15:45:16 UTC 2012
On 10/31/2012 03:42 PM, Eric Blake wrote:
> https://bugzilla.redhat.com/show_bug.cgi?id=871756
>
> Commit cd1e8d1 assumed that systems new enough to have journald
> also have mkostemp; but this is not true for uclibc.
>
> For that matter, use of mkstemp[s] is unsafe in a multi-threaded
> program. We should prefer mkostemp[s] in the first place.
>
> * bootstrap.conf (gnulib_modules): Add mkostemp, mkostemps; drop
> mkstemp and mkstemps.
> * cfg.mk (sc_prohibit_mkstemp): New syntax check.
> * tools/virsh.c (vshEditWriteToTempFile): Adjust caller.
> * src/qemu/qemu_driver.c (qemuDomainScreenshot)
> (qemudDomainMemoryPeek): Likewise.
> * src/secret/secret_driver.c (replaceFile): Likewise.
> * src/vbox/vbox_tmpl.c (vboxDomainScreenshot): Likewise.
> ---
> bootstrap.conf | 4 ++--
> cfg.mk | 6 ++++++
> src/qemu/qemu_driver.c | 8 ++++----
> src/secret/secret_driver.c | 4 ++--
> src/vbox/vbox_tmpl.c | 4 ++--
> tools/virsh.c | 2 +-
> 6 files changed, 17 insertions(+), 11 deletions(-)
>
[...]
> diff --git a/tools/virsh.c b/tools/virsh.c
> index f0ec625..5388c9e 100644
> --- a/tools/virsh.c
> +++ b/tools/virsh.c
> @@ -565,7 +565,7 @@ vshEditWriteToTempFile(vshControl *ctl, const char *doc)
> vshError(ctl, "%s", _("out of memory"));
> return NULL;
> }
> - fd = mkstemps(ret, 4);
> + fd = mkostemps(ret, 4, O_CLOEXEC);
> if (fd == -1) {
> vshError(ctl, _("mkstemps: failed to create temporary file: %s"),
This message should be changed as well.
> virStrerror(errno, ebuf, sizeof(ebuf)));
>
ACK with that changed.
Martin
More information about the libvir-list
mailing list