File tree Expand file tree Collapse file tree 3 files changed +11
-4
lines changed Expand file tree Collapse file tree 3 files changed +11
-4
lines changed Original file line number Diff line number Diff line change @@ -326,8 +326,8 @@ struct SC_getsockname_params {
326
326
327
327
struct SC_getpeername_params {
328
328
int sockfd;
329
- sockaddr* addr;
330
- socklen_t * addrlen;
329
+ Userspace< sockaddr*> addr;
330
+ Userspace< socklen_t *> addrlen;
331
331
};
332
332
333
333
struct SC_futex_params {
Original file line number Diff line number Diff line change @@ -298,7 +298,7 @@ class Process
298
298
int sys$getsockopt(const Syscall::SC_getsockopt_params*);
299
299
int sys$setsockopt(const Syscall::SC_setsockopt_params*);
300
300
int sys$getsockname(const Syscall::SC_getsockname_params*);
301
- int sys$getpeername(const Syscall::SC_getpeername_params*);
301
+ int sys$getpeername(Userspace< const Syscall::SC_getpeername_params*> );
302
302
int sys$sched_setparam(pid_t pid, Userspace<const struct sched_param *>);
303
303
int sys$sched_getparam(pid_t pid, Userspace<struct sched_param *>);
304
304
int sys$create_thread(void * (*)(void *), Userspace<const Syscall::SC_create_thread_params*>);
@@ -422,6 +422,13 @@ class Process
422
422
return validated;
423
423
}
424
424
425
+ template <typename T>
426
+ [[nodiscard]] bool validate_read_and_copy_typed (T* dest, Userspace<T*> src)
427
+ {
428
+ Userspace<const T*> const_src { src.ptr () };
429
+ return validate_read_and_copy_typed (dest, const_src);
430
+ }
431
+
425
432
template <typename T>
426
433
[[nodiscard]] bool validate_write_typed (T* value, size_t count = 1 )
427
434
{
Original file line number Diff line number Diff line change @@ -308,7 +308,7 @@ int Process::sys$getsockname(const Syscall::SC_getsockname_params* user_params)
308
308
return get_sock_or_peer_name<true >(params);
309
309
}
310
310
311
- int Process::sys$getpeername(const Syscall::SC_getpeername_params* user_params)
311
+ int Process::sys$getpeername(Userspace< const Syscall::SC_getpeername_params*> user_params)
312
312
{
313
313
Syscall::SC_getpeername_params params;
314
314
if (!validate_read_and_copy_typed (¶ms, user_params))
You can’t perform that action at this time.
0 commit comments