int uwac_create_anonymous_file(off_t size)
{
static const char template[] = "/weston-shared-XXXXXX";
- const char* path;
+ size_t length;
char* name;
+ const char* path;
int fd;
int ret;
- size_t length;
path = getenv("XDG_RUNTIME_DIR");
if (!path)
return -1;
}
- length = strlen(path) + sizeof(template);
- name = malloc(length);
+ fd = open(path, O_TMPFILE | O_RDWR | O_EXCL, 0600);
- if (!name)
- return -1;
+ if (fd < 0)
+ {
+ length = strlen(path) + sizeof(template);
+ name = malloc(length);
- snprintf(name, length, "%s%s", path, template);
- fd = create_tmpfile_cloexec(name);
- free(name);
+ if (!name)
+ return -1;
+
+ snprintf(name, length, "%s%s", path, template);
+ fd = create_tmpfile_cloexec(name);
+ free(name);
+ }
if (fd < 0)
return -1;