Bump liberty

resolve_relative_runtime_unique_filename() used to have a bug.
This commit is contained in:
Přemysl Eric Janouch 2020-10-10 04:37:08 +02:00
parent d78cf10f04
commit 59ac02d91f
Signed by: p
GPG Key ID: A0420B94F92B9493
3 changed files with 2 additions and 54 deletions

View File

@ -50,13 +50,6 @@ init_openssl (void)
// --- To be moved to liberty --------------------------------------------------
static void
cstr_set (char **s, char *new)
{
free (*s);
*s = new;
}
static ssize_t
strv_find (const struct strv *v, const char *s)
{
@ -81,51 +74,6 @@ unixtime_msec (long *msec)
return tp.tv_sec;
}
/// This differs from the non-unique version in that we expect the filename
/// to be something like a pattern for mkstemp(), so the resulting path can
/// reside in a system-wide directory with no risk of a conflict.
static char *
resolve_relative_runtime_unique_filename (const char *filename)
{
const char *runtime_dir = getenv ("XDG_RUNTIME_DIR");
const char *tmpdir = getenv ("TMPDIR");
struct str path = str_make ();
if (runtime_dir && *runtime_dir == '/')
str_append (&path, runtime_dir);
else if (tmpdir && *tmpdir == '/')
str_append (&path, tmpdir);
else
str_append (&path, "/tmp");
str_append_printf (&path, "/%s/%s", PROGRAM_NAME, filename);
// Try to create the file's ancestors;
// typically the user will want to immediately create a file in there
const char *last_slash = strrchr (path.str, '/');
if (last_slash && last_slash != path.str)
{
char *copy = xstrndup (path.str, last_slash - path.str);
(void) mkdir_with_parents (copy, NULL);
free (copy);
}
return str_steal (&path);
}
static bool
xwrite (int fd, const char *data, size_t len, struct error **e)
{
size_t written = 0;
while (written < len)
{
ssize_t res = write (fd, data + written, len - written);
if (res >= 0)
written += res;
else if (errno != EINTR)
return error_set (e, "%s", strerror (errno));
}
return true;
}
// --- Logging -----------------------------------------------------------------
static void

View File

@ -12585,7 +12585,7 @@ static char *
try_dump_input_to_file (struct app_context *ctx)
{
char *template = resolve_filename
("input.XXXXXX", resolve_relative_runtime_unique_filename);
("input.XXXXXX", resolve_relative_runtime_template);
struct error *e = NULL;
if (dump_input_to_file (ctx, template, &e))

@ -1 +1 @@
Subproject commit 7023c513477eca7832f5ae3c6204a7240c1401c0
Subproject commit e029aae1d3d1884ca868c3694bdec0456b3e8267