diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2024-12-15 17:04:26 +0100 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2024-12-15 17:04:26 +0100 |
| commit | c30e012e8d0f86b97c80e3c99281f4cd7705e68a (patch) | |
| tree | 2f1315c66c06399de3192cd66d681c9a7a932f23 /src/libtools/myalign32.c | |
| parent | d90522bc4ef003a3f643d53f390b77bc1e27b234 (diff) | |
| download | box64-c30e012e8d0f86b97c80e3c99281f4cd7705e68a.tar.gz box64-c30e012e8d0f86b97c80e3c99281f4cd7705e68a.zip | |
[BOX32][WRAPPER] Some fixes to struct msghdr alignment functions
Diffstat (limited to 'src/libtools/myalign32.c')
| -rwxr-xr-x | src/libtools/myalign32.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/src/libtools/myalign32.c b/src/libtools/myalign32.c index 6f94ce99..fc20454b 100755 --- a/src/libtools/myalign32.c +++ b/src/libtools/myalign32.c @@ -1495,7 +1495,7 @@ void AlignMsgHdr_32(void* dest, void* dest_iov, void* dest_cmsg, void* source, i AlignIOV_32(d->msg_iov+i, s_iov+i); } d->msg_iovlen = s->msg_iovlen; - d->msg_controllen = s->msg_controllen; + d->msg_controllen = s->msg_controllen+(convert_control?0:4); if(convert_control) { if(s->msg_control) { d->msg_control = dest_cmsg; @@ -1536,7 +1536,7 @@ void UnalignMsgHdr_32(void* dest, void* source) UnalignIOV_32(d_iov+i, s_iov+i); } d->msg_iovlen = s->msg_iovlen; - d->msg_controllen = s->msg_controllen; + //d->msg_controllen = s->msg_controllen; if(s->msg_control) { struct i386_cmsghdr* dcmsg = from_ptrv(d->msg_control); struct cmsghdr* scmsg = s->msg_control; @@ -1547,9 +1547,9 @@ void UnalignMsgHdr_32(void* dest, void* source) if(dcmsg->cmsg_len) { dcmsg->cmsg_len -= 4; memcpy(dcmsg+1, CMSG_DATA(scmsg), dcmsg->cmsg_len-sizeof(struct i386_cmsghdr)); - d->msg_controllen -= 4; + //d->msg_controllen -= 4; } - (struct i386_cmsghdr*)(((uintptr_t)dcmsg) + ((dcmsg->cmsg_len+3)&~3)); + dcmsg = (struct i386_cmsghdr*)(((uintptr_t)dcmsg) + ((dcmsg->cmsg_len+3)&~3)); scmsg = CMSG_NXTHDR(s, scmsg); } } else |