Hi, I have been resolving this by adding:
#define preset_mask *preset_mask_prealloc #define active_mask *active_mask_prealloc as the assignment logic works as is. It does not catch FD_ZERO which is a shame but is helps avoid us adding a special case. Chris On 22/5/2023 5:36 pm, Christian Mauderer wrote: > The racoon session code copies an fd_set from one variable into another > prior to calling select. That works well for simple structures. > > In libbsd we have to allocate fd_sets instead of using fixed structures > to avoid a problem with file numbers bigger than FD_SETSIZE. The simple > assignment didn't work in that case. > > This patch makes sure that a memcpy is used instead. > --- > ipsec-tools/src/racoon/session.c | 7 +++++++ > 1 file changed, 7 insertions(+) > > diff --git a/ipsec-tools/src/racoon/session.c > b/ipsec-tools/src/racoon/session.c > index 7ea857ba..bd2bd316 100644 > --- a/ipsec-tools/src/racoon/session.c > +++ b/ipsec-tools/src/racoon/session.c > @@ -215,6 +215,8 @@ session(void) > #ifndef __rtems__ > FD_ZERO(&preset_mask); > #else /* __rtems__ */ > + size_t allocated_mask_size = sizeof(fd_set) * > + howmany(rtems_libio_number_iops, sizeof(fd_set) * 8); > allocated_preset_mask = calloc(sizeof(fd_set), > howmany(rtems_libio_number_iops, sizeof(fd_set) * 8)); > if (allocated_preset_mask == NULL) > @@ -352,7 +354,12 @@ session(void) > > /* schedular can change select() mask, so we reset > * the working copy here */ > +#ifndef __rtems__ > active_mask = preset_mask; > +#else /* __rtems__ */ > + memcpy(allocated_active_mask, allocated_preset_mask, > + allocated_mask_size); > +#endif /* __rtems__ */ > > error = select(nfds + 1, &active_mask, NULL, NULL, timeout); > if (error < 0) { _______________________________________________ devel mailing list devel@rtems.org http://lists.rtems.org/mailman/listinfo/devel