Skip to content

Commit b355ccc

Browse files
committed
Forbide skip-service-descriptor=true with explicit username
This combination will not work.
1 parent 873e77e commit b355ccc

File tree

2 files changed

+33
-0
lines changed

2 files changed

+33
-0
lines changed

libqrexec/exec.c

+5
Original file line numberDiff line numberDiff line change
@@ -348,6 +348,11 @@ int load_service_config_v2(struct qrexec_parsed_command *cmd) {
348348
char *tmp_user = NULL;
349349
int res = load_service_config_raw(cmd, &tmp_user);
350350
if (res >= 0 && tmp_user != NULL) {
351+
if (!cmd->send_service_descriptor) {
352+
LOG(ERROR, "service %s: Cannot set explicit username if "
353+
"skip-service-descriptor=true", cmd->service_descriptor);
354+
return -1;
355+
}
351356
free(cmd->username);
352357
cmd->username = tmp_user;
353358
}

qrexec/tests/socket/agent.py

+28
Original file line numberDiff line numberDiff line change
@@ -682,6 +682,34 @@ def test_socket_null_argument_finds_service_for_empty_argument(self):
682682
)
683683
self.check_dom0(dom0)
684684

685+
def test_connect_socket_no_metadata_user(self):
686+
socket_path = os.path.join(
687+
self.tempdir, "rpc", "qubes.SocketService+arg2"
688+
)
689+
user = getpass.getuser()
690+
with open(
691+
os.path.join(self.tempdir, "rpc-config", "qubes.SocketService+arg2"), "w"
692+
) as f:
693+
f.write(f"""\
694+
skip-service-descriptor = true
695+
force-user = '{user}'
696+
""")
697+
server = qrexec.socket_server(socket_path)
698+
self.addCleanup(server.close)
699+
700+
target, dom0 = self.execute_qubesrpc("qubes.SocketService+arg2", "domX")
701+
messages = target.recv_all_messages()
702+
# No stderr
703+
self.assertListEqual(
704+
util.sort_messages(messages),
705+
[
706+
(qrexec.MSG_DATA_STDOUT, b""),
707+
(qrexec.MSG_DATA_STDERR, b""),
708+
(qrexec.MSG_DATA_EXIT_CODE, b"\175\0\0\0"),
709+
],
710+
)
711+
self.check_dom0(dom0)
712+
685713
def test_connect_socket_no_metadata(self):
686714
socket_path = os.path.join(
687715
self.tempdir, "rpc", "qubes.SocketService+arg2"

0 commit comments

Comments
 (0)