diff --git a/uidlist.c b/uidlist.c index 6e9bb3c1..4506de2e 100644 --- a/uidlist.c +++ b/uidlist.c @@ -390,12 +390,18 @@ gid_t recv_group_name(int f, gid_t gid, uint16 *flags_ptr) { struct idlist *node; int len = read_byte(f); - char *name = new_array(char, len+1); - read_sbuf(f, name, len); - if (numeric_ids < 0) { - free(name); + char *name; + + if (len) { + name = new_array(char, len+1); + read_sbuf(f, name, len); + if (numeric_ids < 0) { + free(name); + name = NULL; + } + } else name = NULL; - } + node = recv_add_id(&gidlist, gidmap, gid, name); /* node keeps name's memory */ if (flags_ptr && node->flags & FLAG_SKIP_GROUP) *flags_ptr |= FLAG_SKIP_GROUP;