in src/fc_erd_argc_argv.c [23:126]
int FABRIC_ENDPOINT_RESOURCE_DESCRIPTION_to_ARGC_ARGV(const FABRIC_ENDPOINT_RESOURCE_DESCRIPTION* fabric_endpoint_resource_description, int* argc, char*** argv)
{
int result;
if (
(fabric_endpoint_resource_description == NULL) ||
(argc == NULL) ||
(argv == NULL)
)
{
LogError("invalid argument const FABRIC_ENDPOINT_RESOURCE_DESCRIPTION* fabric_endpoint_resource_description=%p, int* argc=%p, char*** argv=%p",
fabric_endpoint_resource_description, argc, argv);
result = MU_FAILURE;
}
else
{
*argc = 6;
*argv = malloc_2(*argc, sizeof(char*));
if (*argv == NULL)
{
LogError("failure in malloc2");
result = MU_FAILURE;
}
else
{
(* argv)[0] = sprintf_char("%s", SERVICE_ENDPOINT_RESOURCE);
if ((*argv)[0] == NULL)
{
LogError("failure in sprintf_char");
result = MU_FAILURE;
}
else
{
(*argv)[1] = sprintf_char("%ls", fabric_endpoint_resource_description->Name);
if ((*argv)[1] == NULL)
{
LogError("failure in sprintf_char");
result = MU_FAILURE;
}
else
{
(*argv)[2] = sprintf_char("%ls", fabric_endpoint_resource_description->Protocol);
if ((*argv)[2] == NULL)
{
LogError("failure in sprintf_char");
result = MU_FAILURE;
}
else
{
(*argv)[3] = sprintf_char("%ls", fabric_endpoint_resource_description->Type);
if ((*argv)[3] == NULL)
{
LogError("failure in sprintf_char");
result = MU_FAILURE;
}
else
{
(*argv)[4] = sprintf_char("%" PRIu16 "", fabric_endpoint_resource_description->Port);
if ((*argv)[4] == NULL)
{
LogError("failure in sprintf_char");
result = MU_FAILURE;
}
else
{
if (
(fabric_endpoint_resource_description->CertificateName == NULL) ||
(fabric_endpoint_resource_description->CertificateName[0] == L'\0')
)
{
/*if CertificateName is L"" or NULL and that is passed as an argv to a command line - it gets eaten and later FABRIC_ENDPOINT_RESOURCE_DESCRIPTION_from_ARGC_ARGV expects 6 arguments but only gets 5*/
(*argv)[5] = sprintf_char("%ls", L"CERTIFICATE_NAME_WAS_EMPTY_IN_FABRIC_ENDPOINT_RESOURCE_DESCRIPTION");
}
else
{
(*argv)[5] = sprintf_char("%ls", fabric_endpoint_resource_description->CertificateName);
}
if ((*argv)[5] == NULL)
{
LogError("failure in sprintf_char");
result = MU_FAILURE;
}
else
{
result = 0;
goto allok;
//free((*argv)[5]);
}
free((*argv)[4]);
}
free((*argv)[3]);
}
free((*argv)[2]);
}
free((*argv)[1]);
}
free((*argv)[0]);
}
free(*argv);
}
}
allok:;
return result;
}