Index: utils/net_idmap.c =================================================================== --- utils/net_idmap.c (revision 9303) +++ utils/net_idmap.c (working copy) @@ -76,37 +76,40 @@ struct hwms { BOOL ok; - int user_hwm; - int group_hwm; + uid_t user_hwm; + gid_t group_hwm; }; static int net_idmap_find_max_id(TDB_CONTEXT *tdb, TDB_DATA key, TDB_DATA data, void *handle) { struct hwms *hwms = (struct hwms *)handle; - int *idptr = NULL; + uid_t *uidptr = NULL; + gid_t *gidptr = NULL; int id; if (strncmp(key.dptr, "S-", 2) != 0) return 0; if (sscanf(data.dptr, "GID %d", &id) == 1) { - idptr = &hwms->group_hwm; + gidptr = &hwms->group_hwm; } if (sscanf(data.dptr, "UID %d", &id) == 1) { - idptr = &hwms->user_hwm; + uidptr = &hwms->user_hwm; } - if (idptr == NULL) { + if (uidptr == NULL && gidptr == NULL) { d_printf("Illegal idmap entry: [%s]->[%s]\n", key.dptr, data.dptr); hwms->ok = False; return -1; } - if (*idptr <= id) - *idptr = id+1; + if (*uidptr <= id) + *uidptr = id+1; + else if (*gidptr <= id) + *gidptr = id+1; return 0; }