VirtualBox

Changeset 47300 in vbox


Ignore:
Timestamp:
Jul 22, 2013 2:04:31 PM (11 years ago)
Author:
vboxsync
Message:

VMMDev/ReportGuestUserState: Bugfixes.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Devices/VMMDev/VMMDev.cpp

    r47294 r47300  
    682682        }
    683683
    684         pThis->pDrv->pfnUpdateGuestUserState(pThis->pDrv,
    685                                              /* User name */
    686                                              (const char *)pStatus->szUser,
    687                                              /* Domain */
    688                                                pStatus->cbDomain
    689                                              ? (const char *)pStatus->szUser[pStatus->cbUser]
    690                                              : NULL,
     684        /* pyDynamic marks the beginning of the struct's dynamically
     685         * allocated data area. */
     686        uint8_t *pvDynamic = (uint8_t *)pStatus + RT_OFFSETOF(VBoxGuestUserStatus, szUser);
     687        AssertPtr(pvDynamic);
     688
     689        if (!pStatus->cbUser)) /* User name is required. */
     690            return VERR_INVALID_PARAMETER;
     691        const char *pszUser = (const char *)pvDynamic;
     692        AssertPtrReturn(pszUser, VERR_INVALID_POINTER);
     693
     694        pvDynamic += pStatus->cbUser; /* Advance to next field. */
     695        const char *pszDomain = pStatus->cbDomain
     696                              ? (const char *)pvDynamic : NULL;
     697        /* Note: pszDomain can be NULL. */
     698
     699        pvDynamic += pStatus->cbDomain; /* Advance to next field. */
     700        const uint8_t *puDetails = (uint8_t *)pStatus->cbDetails
     701                                 ? pvDynamic : NULL;
     702        /* Note: puDetails can be NULL. */
     703
     704        pThis->pDrv->pfnUpdateGuestUserState(pThis->pDrv, pszUser, pszDomain,
    691705                                             /* State */
    692706                                             (uint32_t)pStatus->state,
    693707                                             /* State details */
    694                                                pStatus->cbDetails
    695                                              ? (uint8_t *)pStatus->szUser[pStatus->cbUser + pStatus->cbDomain]
    696                                              : NULL,
     708                                             puDetails,
    697709                                             pStatus->cbDetails);
    698710    }
Note: See TracChangeset for help on using the changeset viewer.

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