goto fail;
}
- if (!update_perms)
+ if (!update_perms) {
+ pa_assert_se(pa_close(fd) >= 0);
return 0;
+ }
#ifdef HAVE_FCHOWN
if (uid == (uid_t) -1)
uid = getuid();
if (gid == (gid_t) -1)
gid = getgid();
- if (fchown(fd, uid, gid) < 0)
+ if (((st.st_uid != uid) || (st.st_gid != gid)) && fchown(fd, uid, gid) < 0) {
+ pa_assert_se(pa_close(fd) >= 0);
goto fail;
+ }
#endif
#ifdef HAVE_FCHMOD
#ifdef HAVE_DBUS
int r;
long long rttime;
-#ifdef HAVE_SYS_RESOURCE_H
+#ifdef RLIMIT_RTTIME
struct rlimit rl;
#endif
DBusError error;
rttime = rtkit_get_rttime_usec_max(bus);
if (rttime >= 0) {
-#ifdef HAVE_SYS_RESOURCE_H
+#ifdef RLIMIT_RTTIME
r = getrlimit(RLIMIT_RTTIME, &rl);
if (r >= 0 && (long long) rl.rlim_max > rttime) {
}
int pa_match(const char *expr, const char *v) {
+#if defined(HAVE_REGEX_H) || defined(HAVE_PCREPOSIX_H)
int k;
regex_t re;
int r;
errno = EINVAL;
return r;
+#else
+ errno = ENOSYS;
+ return -1;
+#endif
}
/* Try to parse a boolean string value.*/