qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH] acpi unit-test: Create temporary disk file unde


From: Marcel Apfelbaum
Subject: Re: [Qemu-devel] [PATCH] acpi unit-test: Create temporary disk file under /tmp
Date: Fri, 20 Dec 2013 20:27:30 +0200

On Fri, 2013-12-20 at 12:36 +0400, Michael Tokarev wrote:
> 20.12.2013 11:05, Fam Zheng wrote:
> > As other tests, the image file is created in /tmp other than current
> > dir. Thus there will not be an unignored file under tests for intree
> > build.
> > 
> > Signed-off-by: Fam Zheng <address@hidden>
> > ---
> >  tests/acpi-test.c | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> > 
> > diff --git a/tests/acpi-test.c b/tests/acpi-test.c
> > index ca83b1d6..e4f31b7 100644
> > --- a/tests/acpi-test.c
> > +++ b/tests/acpi-test.c
> > @@ -116,7 +116,7 @@ static uint8_t boot_sector[0x200] = {
> >      [0x1FF] = 0xAA,
> >  };
> >  
> > -static const char *disk = "tests/acpi-test-disk.raw";
> > +static const char *disk = "/tmp/qtest-acpi-test-disk.raw";
> 
> Please, PLEASE do NOT do this.
> 
> If you want a temp dir, create one in qemu source directory
> (there's no urge to be able to specify one at build/run time,
> a symlink created by user will do), -- so that all this junk
> will be in a single dir easy to remove.
> 
> But never, ever, use /tmp like this, not here not elsewhere
> else.  When you use /tmp, first, there's $TEMPDIR, and second,
> much more important, there are apis like mkstemp(3) or
> tmpfile(3), or tempnam(3), -- THIS is the only proper way to
> use common temporary directories.
> 
> Never, ever, create fixed (or even predictable, with getpid()
> for example) files in public temporary dirs.  Never.
> 
> For this issue, I think a better solution is to actually remove
> this file on make clean.  Now you're just moving an unignored
> file elsewhere, which isn't good by its own.

I would use (and let glib do the work): 
    fd = g_file_open_tmp("prefix-XXXXXX", file_name, &error);
    g_assert_no_error(error);
    ...
and of course in the end:
    unlink(file_name);

I hope I helped,
Marcel


> 
> Thanks,
> 
> /mjt






reply via email to

[Prev in Thread] Current Thread [Next in Thread]