Page MenuHomeFreeBSD

D52280.1784411993.diff
No OneTemporary

Size
866 B
Referenced Files
None
Subscribers
None

D52280.1784411993.diff

diff --git a/sys/compat/linux/linux_socket.c b/sys/compat/linux/linux_socket.c
--- a/sys/compat/linux/linux_socket.c
+++ b/sys/compat/linux/linux_socket.c
@@ -2179,6 +2179,7 @@
linux_getsockopt_so_peergroups(struct thread *td,
struct linux_getsockopt_args *args)
{
+ l_gid_t *out = PTRIN(args->optval);
struct xucred xu;
socklen_t xulen, len;
int error, i;
@@ -2197,13 +2198,12 @@
return (error);
}
- /*
- * "- 1" to skip the primary group.
- */
+ /* "- 1" to skip the primary group. */
for (i = 0; i < xu.cr_ngroups - 1; i++) {
- error = copyout(xu.cr_groups + i + 1,
- (void *)(args->optval + i * sizeof(l_gid_t)),
- sizeof(l_gid_t));
+ /* Copy to cope with a possible type discrepancy. */
+ const l_gid_t g = xu.cr_groups[i + 1];
+
+ error = copyout(&g, out + i, sizeof(l_gid_t));
if (error != 0)
return (error);
}

File Metadata

Mime Type
text/plain
Expires
Sat, Jul 18, 9:59 PM (7 h, 30 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
29189618
Default Alt Text
D52280.1784411993.diff (866 B)

Event Timeline