aboutgitcodelistschat:MatrixIRC
path: root/operations.c
diff options
context:
space:
mode:
authorAlice Frosi <afrosi@redhat.com>2023-02-27 10:55:31 +0100
committerAlice Frosi <afrosi@redhat.com>2023-02-27 11:59:32 +0100
commitf219fada2e1107ce1a0f69bab03ee93d92d7b6f3 (patch)
tree9e4ec8178c0c3b27431518a27932f773acb644bf /operations.c
parent4989288ddfe8156fc4cea5599c34ef932010c9aa (diff)
downloadseitan-f219fada2e1107ce1a0f69bab03ee93d92d7b6f3.tar
seitan-f219fada2e1107ce1a0f69bab03ee93d92d7b6f3.tar.gz
seitan-f219fada2e1107ce1a0f69bab03ee93d92d7b6f3.tar.bz2
seitan-f219fada2e1107ce1a0f69bab03ee93d92d7b6f3.tar.lz
seitan-f219fada2e1107ce1a0f69bab03ee93d92d7b6f3.tar.xz
seitan-f219fada2e1107ce1a0f69bab03ee93d92d7b6f3.tar.zst
seitan-f219fada2e1107ce1a0f69bab03ee93d92d7b6f3.zip
seitan: copy immediate args with op_copy
Diffstat (limited to 'operations.c')
-rw-r--r--operations.c19
1 files changed, 11 insertions, 8 deletions
diff --git a/operations.c b/operations.c
index cd67ccc..6b19212 100644
--- a/operations.c
+++ b/operations.c
@@ -169,15 +169,18 @@ int copy_args(struct seccomp_notif *req, struct op_copy_args *copy, void *data,
fprintf(stderr, "the seccomp request isn't valid anymore\n");
return -1;
}
-
for (i = 0; i < 6; i++) {
- if (!copy->args[i].need_copied)
- continue;
- dest = (uint16_t *)data + copy->args[i].args_off;
- nread = pread(fd, dest, copy->args[i].size, req->data.args[i]);
- if (nread < 0) {
- perror("pread");
- return -1;
+ if (copy->args[i].type == REFERENCE) {
+ dest = (uint16_t *)data + copy->args[i].args_off;
+ nread = pread(fd, dest, copy->args[i].size,
+ req->data.args[i]);
+ if (nread < 0) {
+ perror("pread");
+ return -1;
+ }
+ } else {
+ memcpy((uint16_t *)data + copy->args[i].args_off,
+ &req->data.args[i], copy->args[i].size);
}
}
close(fd);