VirtualBox

Changeset 22663 in vbox for trunk/src/VBox/Main


Ignore:
Timestamp:
Sep 1, 2009 2:02:28 PM (16 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
51761
Message:

VRDP server port range: extra data keys.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Main/ConsoleVRDPServer.cpp

    r21878 r22663  
    706706
    707707            *pcbOut = sizeof (uint32_t);
     708        } break;
     709
     710        case VRDP_QP_NETWORK_PORT_RANGE:
     711        {
     712            com::Bstr bstr;
     713            HRESULT hrc = server->mConsole->machine ()->GetExtraData(Bstr("VBoxInternal2/VRDPPortRange"), bstr.asOutParam());
     714            if (hrc != S_OK)
     715            {
     716                bstr = "";
     717            }
     718
     719            /* The server expects UTF8. */
     720            com::Utf8Str portRange = bstr;
     721
     722            size_t cbPortRange = portRange.length () + 1;
     723
     724            if (cbPortRange >= 0x10000)
     725            {
     726                /* More than 64K seems to be an  invalid port range string. */
     727                rc = VERR_TOO_MUCH_DATA;
     728                break;
     729            }
     730
     731            if ((size_t)cbBuffer >= cbPortRange)
     732            {
     733                if (cbPortRange > 0)
     734                {
     735                    if (portRange.raw())
     736                    {
     737                        memcpy (pvBuffer, portRange.raw(), cbPortRange);
     738                    }
     739                    else
     740                    {
     741                        /* The value is an empty string. */
     742                        *(uint8_t *)pvBuffer = 0;
     743                    }
     744                }
     745
     746                rc = VINF_SUCCESS;
     747            }
     748            else
     749            {
     750                rc = VINF_BUFFER_OVERFLOW;
     751            }
     752
     753            *pcbOut = (uint32_t)cbPortRange;
     754        } break;
     755
     756        case VRDP_SP_NETWORK_BIND_PORT:
     757        {
     758            if (cbBuffer != sizeof (uint32_t))
     759            {
     760                rc = VERR_INVALID_PARAMETER;
     761                break;
     762            }
     763
     764            ULONG port = *(uint32_t *)pvBuffer;
     765
     766            com::Bstr bstr = Utf8StrFmt("%d", port);
     767
     768            server->mConsole->machine ()->SetExtraData(Bstr("VBoxInternal2/VRDPBindPort"), bstr);
     769
     770            rc = VINF_SUCCESS;
     771
     772            if (pcbOut)
     773            {
     774                *pcbOut = sizeof (uint32_t);
     775            }
    708776        } break;
    709777
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