VirtualBox

Changeset 76447 in vbox for trunk/src/VBox/Additions


Ignore:
Timestamp:
Dec 24, 2018 4:29:44 PM (6 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
127748
Message:

VBoxGuest-netbsd.c: Check for NOCRED and FSCRED too (might be an
assertion, but err on the safe side). Check egid too. Cosmetics to
make the code a bit more clear.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Additions/common/VBoxGuest/VBoxGuest-netbsd.c

    r76445 r76447  
    646646             * Create a new session.
    647647             */
     648            struct kauth_cred *pCred = pLwp->l_cred;
     649            int fHaveCred = (pCred != NULL && pCred != NOCRED && pCred != FSCRED);
     650            uint32_t fRequestor;
     651            int fIsWheel;
    648652            int rc;
    649             struct kauth_cred *pCred = pLwp->l_cred;
    650             int fIsWheel;
    651             uint32_t fRequestor = VMMDEV_REQUESTOR_USERMODE | VMMDEV_REQUESTOR_TRUST_NOT_GIVEN;
    652             if (pCred && kauth_cred_geteuid(pCred) == 0)
     653
     654            fRequestor = VMMDEV_REQUESTOR_USERMODE | VMMDEV_REQUESTOR_TRUST_NOT_GIVEN;
     655
     656            /* uid */
     657            if (fHaveCred && kauth_cred_geteuid(pCred) == (uid_t)0)
    653658                fRequestor |= VMMDEV_REQUESTOR_USR_ROOT;
    654659            else
    655660                fRequestor |= VMMDEV_REQUESTOR_USR_USER;
    656661
    657             if (pCred && kauth_cred_ismember_gid(pCred, 0, &fIsWheel) == 0 && fIsWheel)
     662            /* gid */
     663            if (fHaveCred
     664                && (kauth_cred_getegid(pCred) == (gid_t)0
     665                    || (kauth_cred_ismember_gid(pCred, 0, &fIsWheel) == 0
     666                        && fIsWheel)))
    658667                fRequestor |= VMMDEV_REQUESTOR_GRP_WHEEL;
    659             fRequestor |= VMMDEV_REQUESTOR_NO_USER_DEVICE; /** @todo implement /dev/vboxuser
     668
     669#if 0       /** @todo implement /dev/vboxuser */
    660670            if (!fUnrestricted)
    661                 fRequestor |= VMMDEV_REQUESTOR_USER_DEVICE; */
    662             fRequestor |= VMMDEV_REQUESTOR_CON_DONT_KNOW; /** @todo can we find out if pLwp is on the console? */
     671                fRequestor |= VMMDEV_REQUESTOR_USER_DEVICE;
     672#else
     673            fRequestor |= VMMDEV_REQUESTOR_NO_USER_DEVICE;
     674#endif
     675
     676            /** @todo can we find out if pLwp is on the console? */
     677            fRequestor |= VMMDEV_REQUESTOR_CON_DONT_KNOW;
     678
    663679            rc = VGDrvCommonCreateUserSession(&g_DevExt, fRequestor, &fdata->session);
    664680            if (RT_SUCCESS(rc))
     
    677693        error = ENOMEM;
    678694    return error;
    679 
    680695}
    681696
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette