Lines Matching +full:- +full:grp
1 /*-
2 * SPDX-License-Identifier: BSD-2-Clause
38 #include <grp.h>
86 *bufsizep -= len + 1; in group_unpack_string()
109 *bufsizep -= datasize; in group_unpack_members()
143 *bufsizep -= datasize; in group_unpack_members()
149 group_unpack(const nvlist_t *nvl, struct group *grp, char *buffer, in group_unpack() argument
157 explicit_bzero(grp, sizeof(*grp)); in group_unpack()
159 error = group_unpack_string(nvl, "gr_name", &grp->gr_name, &buffer, in group_unpack()
163 error = group_unpack_string(nvl, "gr_passwd", &grp->gr_passwd, &buffer, in group_unpack()
167 grp->gr_gid = (gid_t)nvlist_get_number(nvl, "gr_gid"); in group_unpack()
168 error = group_unpack_members(nvl, &grp->gr_mem, &buffer, &bufsize); in group_unpack()
177 gid_t gid, struct group *grp, char *buffer, size_t bufsize, in cap_getgrcommon_r() argument
221 error = group_unpack(nvl, grp, buffer, bufsize); in cap_getgrcommon_r()
237 *result = grp; in cap_getgrcommon_r()
287 cap_getgrent_r(cap_channel_t *chan, struct group *grp, char *buffer, in cap_getgrent_r() argument
291 return (cap_getgrcommon_r(chan, "getgrent_r", NULL, 0, grp, buffer, in cap_getgrent_r()
296 cap_getgrnam_r(cap_channel_t *chan, const char *name, struct group *grp, in cap_getgrnam_r() argument
300 return (cap_getgrcommon_r(chan, "getgrnam_r", name, 0, grp, buffer, in cap_getgrnam_r()
305 cap_getgrgid_r(cap_channel_t *chan, gid_t gid, struct group *grp, char *buffer, in cap_getgrgid_r() argument
309 return (cap_getgrcommon_r(chan, "getgrgid_r", NULL, gid, grp, buffer, in cap_getgrgid_r()
372 return (-1); in cap_grp_limit_cmds()
394 return (-1); in cap_grp_limit_fields()
418 return (-1); in cap_grp_limit_groups()
500 if (gid != (gid_t)-1 && in grp_allowed_group()
536 gid = (gid_t)-1; in grp_allowed_groups()
585 grp_pack(const nvlist_t *limits, const struct group *grp, nvlist_t *nvl) in grp_pack() argument
590 if (grp == NULL) in grp_pack()
596 if (!grp_allowed_group(limits, grp->gr_name, grp->gr_gid)) in grp_pack()
600 nvlist_add_string(nvl, "gr_name", grp->gr_name); in grp_pack()
604 nvlist_add_string(nvl, "gr_passwd", grp->gr_passwd); in grp_pack()
608 nvlist_add_number(nvl, "gr_gid", (uint64_t)grp->gr_gid); in grp_pack()
610 nvlist_add_number(nvl, "gr_gid", (uint64_t)-1); in grp_pack()
611 if (grp_allowed_field(limits, "gr_mem") && grp->gr_mem[0] != NULL) { in grp_pack()
614 for (ngroups = 0; grp->gr_mem[ngroups] != NULL; ngroups++) { in grp_pack()
618 nvlist_add_string(nvl, nvlname, grp->gr_mem[ngroups]); in grp_pack()
630 struct group *grp; in grp_getgrent() local
634 grp = getgrent(); in grp_getgrent()
637 if (grp_pack(limits, grp, nvlout)) in grp_getgrent()
647 struct group *grp; in grp_getgrnam() local
656 grp = getgrnam(name); in grp_getgrnam()
660 (void)grp_pack(limits, grp, nvlout); in grp_getgrnam()
668 struct group *grp; in grp_getgrgid() local
677 grp = getgrgid(gid); in grp_getgrgid()
681 (void)grp_pack(limits, grp, nvlout); in grp_getgrgid()
788 CREATE_SERVICE("system.grp", grp_limit, grp_command, 0);