r_u->guest = guest;
r_u->n_groups = n_groups;
- r_u->groups = g_new(uint32, r_u->n_groups);
+ r_u->groups = g_new(gid_t, r_u->n_groups);
if (r_u->groups == NULL && n_groups != 0)
{
return False;
uint32 uid = (uint32)r_u->uid;
uint32 gid = (uint32)r_u->gid;
+ uint32 *groups;
+
+ if (r_u->n_groups != 0)
+ {
+ groups = g_new(uint32, r_u->n_groups);
+ if (groups == NULL)
+ {
+ return False;
+ }
+ }
+ if (MARSHALLING(ps))
+ {
+ for (i = 0; i < r_u->n_groups; i++)
+ {
+ groups[i] = (uint32)r_u->groups[i];
+ }
+ }
if (r_u == NULL)
return False;
prs_uint32("n_groups", ps, depth, &(r_u->n_groups));
if (r_u->n_groups != 0)
{
- if (ps->io)
+ if (UNMARSHALLING(ps))
{
/* reading */
- r_u->groups = g_new(uint32, r_u->n_groups);
+ r_u->groups = g_new(gid_t, r_u->n_groups);
}
if (r_u->groups == NULL)
{
}
for (i = 0; i < r_u->n_groups; i++)
{
- prs_uint32("", ps, depth, &(r_u->groups[i]));
+ prs_uint32("", ps, depth, &groups[i]);
+ }
+
+ if (MARSHALLING(ps))
+ {
+ for (i = 0; i < r_u->n_groups; i++)
+ {
+ r_u->groups[i] = (gid_t)groups[i];
+ }
}
net_io_user_info3("usr", &r_u->usr, ps, depth);