diff --git a/src/shared/specifier.c b/src/shared/specifier.c index 6839d1892d..69fefc8d00 100644 --- a/src/shared/specifier.c +++ b/src/shared/specifier.c @@ -101,10 +101,11 @@ int specifier_printf(const char *text, const Specifier table[], void *userdata, ret = n; t = n + j + k; - } else if (strchr(POSSIBLE_SPECIFIERS, *f)) + } else if (strchr(POSSIBLE_SPECIFIERS, *f)) { /* Oops, an unknown specifier. */ + free(ret); return -EBADSLT; - else { + } else { *(t++) = '%'; *(t++) = *f; } diff --git a/src/test/test-systemd-tmpfiles.py b/src/test/test-systemd-tmpfiles.py index 309cee23e6..7e563551cd 100755 --- a/src/test/test-systemd-tmpfiles.py +++ b/src/test/test-systemd-tmpfiles.py @@ -28,12 +28,12 @@ try: except AttributeError: sys.exit(EXIT_TEST_SKIP) -exe = sys.argv[1] +exe_with_args = sys.argv[1:] def test_line(line, *, user, returncode=EX_DATAERR, extra={}): args = ['--user'] if user else [] - print('Running {} {} on {!r}'.format(exe, ' '.join(args), line)) - c = subprocess.run([exe, '--create', '-'] + args, + print('Running {} on {!r}'.format(' '.join(exe_with_args + args), line)) + c = subprocess.run(exe_with_args + ['--create', '-'] + args, input=line, stdout=subprocess.PIPE, universal_newlines=True, **extra) assert c.returncode == returncode, c