Deleted Added
full compact
ibcs2_misc.c (193511) ibcs2_misc.c (194498)
1/*-
2 * Copyright (c) 1995 Steven Wallace
3 * Copyright (c) 1994, 1995 Scott Bartram
4 * Copyright (c) 1992, 1993
5 * The Regents of the University of California. All rights reserved.
6 *
7 * This software was developed by the Computer Systems Engineering group
8 * at Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and

--- 33 unchanged lines hidden (view full) ---

42 * SUCH DAMAGE.
43 *
44 * from: Header: sun_misc.c,v 1.16 93/04/07 02:46:27 torek Exp
45 *
46 * @(#)sun_misc.c 8.1 (Berkeley) 6/18/93
47 */
48
49#include <sys/cdefs.h>
1/*-
2 * Copyright (c) 1995 Steven Wallace
3 * Copyright (c) 1994, 1995 Scott Bartram
4 * Copyright (c) 1992, 1993
5 * The Regents of the University of California. All rights reserved.
6 *
7 * This software was developed by the Computer Systems Engineering group
8 * at Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and

--- 33 unchanged lines hidden (view full) ---

42 * SUCH DAMAGE.
43 *
44 * from: Header: sun_misc.c,v 1.16 93/04/07 02:46:27 torek Exp
45 *
46 * @(#)sun_misc.c 8.1 (Berkeley) 6/18/93
47 */
48
49#include <sys/cdefs.h>
50__FBSDID("$FreeBSD: head/sys/i386/ibcs2/ibcs2_misc.c 193511 2009-06-05 14:55:22Z rwatson $");
50__FBSDID("$FreeBSD: head/sys/i386/ibcs2/ibcs2_misc.c 194498 2009-06-19 17:10:35Z brooks $");
51
52/*
53 * IBCS2 compatibility module.
54 *
55 * IBCS2 system calls that are implemented differently in BSD are
56 * handled here.
57 */
58#include <sys/param.h>

--- 593 unchanged lines hidden (view full) ---

652 return (error);
653}
654
655int
656ibcs2_getgroups(td, uap)
657 struct thread *td;
658 struct ibcs2_getgroups_args *uap;
659{
51
52/*
53 * IBCS2 compatibility module.
54 *
55 * IBCS2 system calls that are implemented differently in BSD are
56 * handled here.
57 */
58#include <sys/param.h>

--- 593 unchanged lines hidden (view full) ---

652 return (error);
653}
654
655int
656ibcs2_getgroups(td, uap)
657 struct thread *td;
658 struct ibcs2_getgroups_args *uap;
659{
660 ibcs2_gid_t iset[NGROUPS_MAX];
661 gid_t gp[NGROUPS_MAX];
660 ibcs2_gid_t *iset;
661 gid_t *gp;
662 u_int i, ngrp;
663 int error;
664
665 if (uap->gidsetsize < 0)
666 return (EINVAL);
667 ngrp = MIN(uap->gidsetsize, NGROUPS_MAX);
662 u_int i, ngrp;
663 int error;
664
665 if (uap->gidsetsize < 0)
666 return (EINVAL);
667 ngrp = MIN(uap->gidsetsize, NGROUPS_MAX);
668 gp = malloc(ngrp * sizeof(*gp), M_TEMP, M_WAITOK);
668 error = kern_getgroups(td, &ngrp, gp);
669 if (error)
669 error = kern_getgroups(td, &ngrp, gp);
670 if (error)
670 return (error);
671 goto out;
671 if (uap->gidsetsize > 0) {
672 if (uap->gidsetsize > 0) {
673 iset = malloc(ngrp * sizeof(*iset), M_TEMP, M_WAITOK);
672 for (i = 0; i < ngrp; i++)
673 iset[i] = (ibcs2_gid_t)gp[i];
674 error = copyout(iset, uap->gidset, ngrp * sizeof(ibcs2_gid_t));
674 for (i = 0; i < ngrp; i++)
675 iset[i] = (ibcs2_gid_t)gp[i];
676 error = copyout(iset, uap->gidset, ngrp * sizeof(ibcs2_gid_t));
677 free(iset, M_TEMP);
675 }
676 if (error == 0)
677 td->td_retval[0] = ngrp;
678 }
679 if (error == 0)
680 td->td_retval[0] = ngrp;
681out:
682 free(gp, M_TEMP);
678 return (error);
679}
680
681int
682ibcs2_setgroups(td, uap)
683 struct thread *td;
684 struct ibcs2_setgroups_args *uap;
685{
683 return (error);
684}
685
686int
687ibcs2_setgroups(td, uap)
688 struct thread *td;
689 struct ibcs2_setgroups_args *uap;
690{
686 ibcs2_gid_t iset[NGROUPS_MAX];
687 gid_t gp[NGROUPS_MAX];
691 ibcs2_gid_t *iset;
692 gid_t *gp;
688 int error, i;
689
690 if (uap->gidsetsize < 0 || uap->gidsetsize > NGROUPS_MAX)
691 return (EINVAL);
693 int error, i;
694
695 if (uap->gidsetsize < 0 || uap->gidsetsize > NGROUPS_MAX)
696 return (EINVAL);
692 if (uap->gidsetsize && uap->gidset) {
697 if (uap->gidsetsize && uap->gidset == NULL)
698 return (EINVAL);
699 gp = malloc(uap->gidsetsize * sizeof(*gp), M_TEMP, M_WAITOK);
700 if (uap->gidsetsize) {
701 iset = malloc(uap->gidsetsize * sizeof(*iset), M_TEMP, M_WAITOK);
693 error = copyin(uap->gidset, iset, sizeof(ibcs2_gid_t) *
694 uap->gidsetsize);
702 error = copyin(uap->gidset, iset, sizeof(ibcs2_gid_t) *
703 uap->gidsetsize);
695 if (error)
696 return (error);
704 if (error) {
705 free(iset, M_TEMP);
706 goto out;
707 }
697 for (i = 0; i < uap->gidsetsize; i++)
698 gp[i] = (gid_t)iset[i];
699 }
708 for (i = 0; i < uap->gidsetsize; i++)
709 gp[i] = (gid_t)iset[i];
710 }
700 return (kern_setgroups(td, uap->gidsetsize, gp));
711
712 error = kern_setgroups(td, uap->gidsetsize, gp);
713out:
714 free(gp, M_TEMP);
715 return (error);
701}
702
703int
704ibcs2_setuid(td, uap)
705 struct thread *td;
706 struct ibcs2_setuid_args *uap;
707{
708 struct setuid_args sa;

--- 536 unchanged lines hidden ---
716}
717
718int
719ibcs2_setuid(td, uap)
720 struct thread *td;
721 struct ibcs2_setuid_args *uap;
722{
723 struct setuid_args sa;

--- 536 unchanged lines hidden ---