On Sun, Sep 25, 2022 at 4:04 PM Bin Meng <[email protected]> wrote:
> From: Bin Meng <[email protected]>
>
> This case was written to use hardcoded /tmp directory for temporary
> files. Update to use g_file_open_tmp() for a portable implementation.
>
> Signed-off-by: Bin Meng <[email protected]>
>
> ---
>
> Changes in v3:
> - Split to a separate patch
>
> tests/qtest/pflash-cfi02-test.c | 8 +++++---
> 1 file changed, 5 insertions(+), 3 deletions(-)
>
> diff --git a/tests/qtest/pflash-cfi02-test.c
> b/tests/qtest/pflash-cfi02-test.c
> index 7fce614b64..55890b7d95 100644
> --- a/tests/qtest/pflash-cfi02-test.c
> +++ b/tests/qtest/pflash-cfi02-test.c
> @@ -56,7 +56,7 @@ typedef struct {
> QTestState *qtest;
> } FlashConfig;
>
> -static char image_path[] = "/tmp/qtest.XXXXXX";
> +static char *image_path;
>
> /*
> * The pflash implementation allows some parameters to be unspecified. We
> want
> @@ -608,6 +608,7 @@ static void test_cfi_in_autoselect(const void *opaque)
> static void cleanup(void *opaque)
> {
> unlink(image_path);
> + g_free(image_path);
> }
>
> /*
> @@ -635,16 +636,17 @@ static const FlashConfig configuration[] = {
>
> int main(int argc, char **argv)
> {
> - int fd = mkstemp(image_path);
> + int fd = g_file_open_tmp("qtest.XXXXXX", &image_path, NULL);
> if (fd == -1) {
> g_printerr("Failed to create temporary file %s: %s\n", image_path,
> strerror(errno));
>
You need to update error reporting using GError error argument.
> + g_free(image_path);
>
No, image_path is likely still uninitialized here.
The easiest is probably to replace the whole block with a
g_assert_no_error(err).
exit(EXIT_FAILURE);
> }
> if (ftruncate(fd, UNIFORM_FLASH_SIZE) < 0) {
> int error_code = errno;
> close(fd);
> - unlink(image_path);
> + cleanup(NULL);
> g_printerr("Failed to truncate file %s to %u MB: %s\n",
> image_path,
> UNIFORM_FLASH_SIZE, strerror(error_code));
> exit(EXIT_FAILURE);
> --
> 2.34.1
>
>
>
--
Marc-André Lureau