int result = -1;
char ipAddress[NI_MAXHOST] = "";
char *username = NULL;
+ char *unescapedPassword = NULL;
char *password = NULL;
char *url = NULL;
esxVI_String *propertyNameList = NULL;
}
}
- password = virRequestPassword(auth, username, hostname);
+ unescapedPassword = virRequestPassword(auth, username, hostname);
- if (password == NULL) {
+ if (unescapedPassword == NULL) {
ESX_ERROR(VIR_ERR_AUTH_FAILED, "%s", _("Password request failed"));
goto cleanup;
}
+ password = esxUtil_EscapeForXml(unescapedPassword);
+
+ if (password == NULL) {
+ goto cleanup;
+ }
+
if (virAsprintf(&url, "%s://%s:%d/sdk", priv->transport, hostname,
port) < 0) {
virReportOOMError();
result = 0;
cleanup:
- VIR_FREE(password);
VIR_FREE(username);
+ VIR_FREE(unescapedPassword);
+ VIR_FREE(password);
VIR_FREE(url);
esxVI_String_Free(&propertyNameList);
esxVI_ObjectContent_Free(&hostSystem);
int result = -1;
char ipAddress[NI_MAXHOST] = "";
char *username = NULL;
+ char *unescapedPassword = NULL;
char *password = NULL;
char *url = NULL;
}
}
- password = virRequestPassword(auth, username, hostname);
+ unescapedPassword = virRequestPassword(auth, username, hostname);
- if (password == NULL) {
+ if (unescapedPassword == NULL) {
ESX_ERROR(VIR_ERR_AUTH_FAILED, "%s", _("Password request failed"));
goto cleanup;
}
+ password = esxUtil_EscapeForXml(unescapedPassword);
+
+ if (password == NULL) {
+ goto cleanup;
+ }
+
if (virAsprintf(&url, "%s://%s:%d/sdk", priv->transport, hostname,
port) < 0) {
virReportOOMError();
result = 0;
cleanup:
- VIR_FREE(password);
VIR_FREE(username);
+ VIR_FREE(unescapedPassword);
+ VIR_FREE(password);
VIR_FREE(url);
return result;
return escaped2;
}
+
+
+
+char *
+esxUtil_EscapeForXml(const char *string)
+{
+ virBuffer buffer = VIR_BUFFER_INITIALIZER;
+
+ virBufferEscapeString(&buffer, "%s", string);
+
+ if (virBufferError(&buffer)) {
+ virReportOOMError();
+ virBufferFreeAndReset(&buffer);
+
+ return NULL;
+ }
+
+ return virBufferContentAndReset(&buffer);
+}