Signed-off-by: Ralph Boehme <slow@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
iov2[0] = (struct iovec){ .iov_base = hdr, .iov_len = sizeof(hdr) };
memcpy(&iov2[1], iov, iovlen * sizeof(*iov));
- become_root();
ret = messaging_dgm_send(dst.pid, iov2, iovlen+1, fds, num_fds);
- unbecome_root();
+
+ if (ret == EACCES) {
+ become_root();
+ ret = messaging_dgm_send(dst.pid, iov2, iovlen+1,
+ fds, num_fds);
+ unbecome_root();
+ }
return ret;
}
pid = getpid();
}
- priv = root_privileges();
ret = messaging_dgm_send(pid, iov, num_iov, NULL, 0);
- TALLOC_FREE(priv);
+
+ if (ret == EACCES) {
+ priv = root_privileges();
+ ret = messaging_dgm_send(pid, iov, num_iov, NULL, 0);
+ TALLOC_FREE(priv);
+ }
+
if (ret != 0) {
return map_nt_error_from_unix_common(ret);
}