this repo has no description
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

A collection of fixes that make bind-tools working

+19 -6
+5
src/kernel/emulation/linux/network/recvmsg.c
··· 104 104 msg->msg_controllen = lmsg.msg_controllen; 105 105 } 106 106 } 107 + 108 + struct sockaddr_fixup* saddr = (struct sockaddr_fixup*) lmsg.msg_name; 109 + if (saddr != NULL && lmsg.msg_namelen > 0) 110 + saddr->bsd_family = sfamily_linux_to_bsd(saddr->linux_family); 111 + msg->msg_namelen = lmsg.msg_namelen; 107 112 } 108 113 109 114 if (lchdr != NULL)
+9 -1
src/kernel/emulation/linux/network/sendmsg.c
··· 21 21 int ret, linux_flags; 22 22 struct linux_msghdr lmsg; 23 23 struct linux_cmsghdr* lchdr = NULL; 24 + struct bsd_sockaddr* xname; 24 25 25 - lmsg.msg_name = msg->msg_name; 26 + if (msg->msg_name != NULL && msg->msg_namelen > 0) 27 + { 28 + struct sockaddr_fixup* saddr = __builtin_alloca(msg->msg_namelen); 29 + memcpy(saddr, msg->msg_name, msg->msg_namelen); 30 + saddr->linux_family = sfamily_bsd_to_linux(saddr->bsd_family); 31 + lmsg.msg_name = saddr; 32 + } 33 + 26 34 lmsg.msg_namelen = msg->msg_namelen; 27 35 lmsg.msg_iov = msg->msg_iov; 28 36 lmsg.msg_iovlen = msg->msg_iovlen;
+3 -3
src/kernel/emulation/linux/signal/sigwait.c
··· 7 7 #include "../bsdthread/cancelable.h" 8 8 #include "sigaction.h" 9 9 10 - long sys_sigwait(sigset_t set, int* sig) 10 + long sys_sigwait(sigset_t* set, int* sig) 11 11 { 12 12 CANCELATION_POINT(); 13 13 return sys_sigwait_nocancel(set, sig); 14 14 } 15 15 16 - long sys_sigwait_nocancel(sigset_t set, int* sig) 16 + long sys_sigwait_nocancel(sigset_t* set, int* sig) 17 17 { 18 18 linux_sigset_t set_linux; 19 19 int ret; 20 20 struct linux_siginfo si; 21 21 22 - sigset_bsd_to_linux(&set, &set_linux); 22 + sigset_bsd_to_linux(set, &set_linux); 23 23 24 24 ret = LINUX_SYSCALL(__NR_rt_sigtimedwait, &set_linux, &si, NULL, 8); 25 25
+2 -2
src/kernel/emulation/linux/signal/sigwait.h
··· 2 2 #define LINUX_SIGWAIT_H 3 3 #include "duct_signals.h" 4 4 5 - long sys_sigwait(sigset_t set, int* signal); 6 - long sys_sigwait_nocancel(sigset_t set, int* signal); 5 + long sys_sigwait(sigset_t* set, int* signal); 6 + long sys_sigwait_nocancel(sigset_t* set, int* signal); 7 7 8 8 #endif 9 9