this repo has no description
1
fork

Configure Feed

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

Fix a crash in handler_linux_to_bsd()

+15 -12
+15 -12
src/kernel/emulation/linux/signal/sigaction.c
··· 137 137 138 138 bsd_signum = signum_linux_to_bsd(linux_signum); 139 139 140 - memset(&binfo, 0, sizeof(binfo)); 141 - binfo.si_signo = signum_linux_to_bsd(info->si_signo); 142 - binfo.si_errno = errno_linux_to_bsd(info->si_errno); 143 - binfo.si_code = info->si_code; 144 - binfo.si_pid = info->si_pid; 145 - binfo.si_uid = info->si_uid; 146 - 147 - // TODO: The following 3 exist on Linux, but it's a mess to extract them 148 - binfo.si_status = 0; 149 - binfo.si_addr = 0; 150 - binfo.si_band = 0; 140 + if (info) 141 + { 142 + memset(&binfo, 0, sizeof(binfo)); 143 + binfo.si_signo = signum_linux_to_bsd(info->si_signo); 144 + binfo.si_errno = errno_linux_to_bsd(info->si_errno); 145 + binfo.si_code = info->si_code; 146 + binfo.si_pid = info->si_pid; 147 + binfo.si_uid = info->si_uid; 148 + 149 + // TODO: The following 3 exist on Linux, but it's a mess to extract them 150 + binfo.si_status = 0; 151 + binfo.si_addr = 0; 152 + binfo.si_band = 0; 153 + } 151 154 152 155 if (lc != NULL) 153 156 { ··· 165 168 166 169 // __simple_printf("Handling signal %d\n", linux_signum); 167 170 168 - sig_handlers[linux_signum](bsd_signum, &binfo, (lc != NULL) ? &bc : NULL); 171 + sig_handlers[linux_signum](bsd_signum, info ? &binfo : NULL, (lc != NULL) ? &bc : NULL); 169 172 170 173 // __simple_printf("Signal handled\n"); 171 174 }