diff --git a/args.c b/args.c index f6c604a..8059789 100644 --- a/args.c +++ b/args.c @@ -383,6 +383,11 @@ static int spank_option_container_save(int val, const char *optarg, int remote) return (-1); } + if (optarg[strlen(optarg) - 1] == '/') { + slurm_error("pyxis: --container-save: target is a directory"); + return (-1); + } + /* Slurm can call us twice with the same value, check if it's a different value than before. */ if (pyxis_args.container_save != NULL) { if (strcmp(pyxis_args.container_save, optarg) == 0) diff --git a/tests/invalid_args.bats b/tests/invalid_args.bats index ec5c3cc..1031ee7 100644 --- a/tests/invalid_args.bats +++ b/tests/invalid_args.bats @@ -72,3 +72,14 @@ load ./common run_srun_unchecked --container-env FOO, --container-image=ubuntu:22.04 true [ "${status}" -ne 0 ] } + +@test "invalid arg: --container-save=" { + run_srun_unchecked --container-save=/tmp/ --container-image=ubuntu:24.04 true + [ "${status}" -ne 0 ] + + run_srun_unchecked --container-save=/ --container-image=ubuntu:24.04 true + [ "${status}" -ne 0 ] + + run_srun_unchecked --container-save=./ --container-image=ubuntu:24.04 true + [ "${status}" -ne 0 ] +}