diff --git a/src/vz/vz_sdk.c b/src/vz/vz_sdk.c index a15a0e60e2..5a48a46d7e 100644 --- a/src/vz/vz_sdk.c +++ b/src/vz/vz_sdk.c @@ -1180,6 +1180,7 @@ prlsdkAddVNCInfo(PRL_HANDLE sdkdom, virDomainDefPtr def) PRL_VM_REMOTE_DISPLAY_MODE vncMode; PRL_UINT32 port; PRL_RESULT pret; + char *passwd = NULL; pret = PrlVmCfg_GetVNCMode(sdkdom, &vncMode); prlsdkCheckRetGoto(pret, error); @@ -1190,6 +1191,14 @@ prlsdkAddVNCInfo(PRL_HANDLE sdkdom, virDomainDefPtr def) if (VIR_ALLOC(gr) < 0) goto error; + if (!(passwd = prlsdkGetStringParamVar(PrlVmCfg_GetVNCPassword, sdkdom))) + goto error; + + if (*passwd != '\0') { + gr->data.vnc.auth.passwd = passwd; + passwd = NULL; + } + pret = PrlVmCfg_GetVNCPort(sdkdom, &port); prlsdkCheckRetGoto(pret, error); @@ -1215,6 +1224,7 @@ prlsdkAddVNCInfo(PRL_HANDLE sdkdom, virDomainDefPtr def) error: virDomainGraphicsDefFree(gr); + VIR_FREE(passwd); return -1; } @@ -2748,6 +2758,9 @@ static int prlsdkApplyGraphicsParams(PRL_HANDLE sdkdom, prlsdkCheckRetExit(pret, -1); } + pret = PrlVmCfg_SetVNCPassword(sdkdom, gr->data.vnc.auth.passwd ? : ""); + prlsdkCheckRetExit(pret, -1); + if (gr->data.vnc.autoport) { pret = PrlVmCfg_SetVNCMode(sdkdom, PRD_AUTO); prlsdkCheckRetGoto(pret, cleanup);