Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 3 additions & 4 deletions source/AdvSecurityDml/cosa_adv_security_dml.c
Original file line number Diff line number Diff line change
Expand Up @@ -3112,12 +3112,11 @@ AdvanceSecurityUserSpace_RFC_SetParamBoolValue
if(bValue == g_pAdvSecAgent->pAdvSecUserSpace_RFC->bEnable)
return TRUE;
if( bValue )
returnStatus = CosaAdvSecUserSpaceInit(g_pAdvSecAgent->pAdvSecUserSpace_RFC);
returnStatus = CosaAdvSecUserSpaceInit(g_pAdvSecAgent->pAdvSecUserSpace_RFC);
else
{
Comment thread
akumar0702 marked this conversation as resolved.
//returnStatus = CosaAdvSecUserSpaceDeInit(g_pAdvSecAgent->pAdvSecUserSpace_RFC);
CcspTraceInfo(("AdvSecUserSpace_RFC is defaulted to TRUE, cannot be set to FALSE \n"));
return FALSE;
CcspTraceInfo(("AdvSecUserSpace_RFC is defaulted to TRUE, cannot be set to FALSE \n"));
return FALSE;
}

if ( returnStatus != ANSC_STATUS_SUCCESS )
Expand Down
82 changes: 64 additions & 18 deletions source/AdvSecurityDml/cosa_adv_security_internal.c
Original file line number Diff line number Diff line change
Expand Up @@ -1102,6 +1102,10 @@ CosaSecurityInitialize
{
UNREFERENCED_PARAMETER(hThisObject);
ANSC_STATUS returnStatus = ANSC_STATUS_SUCCESS;
ANSC_STATUS applyRfcStatus = ANSC_STATUS_SUCCESS;
ANSC_STATUS getCujoTracerRfcStatus = ANSC_STATUS_FAILURE;
ANSC_STATUS getCujoTelemetryRfcStatus = ANSC_STATUS_FAILURE;
ANSC_STATUS getUserSpaceRfcStatus = ANSC_STATUS_FAILURE;
ULONG Value = 0;
ULONG ValueSB = 0;
ULONG ValueSF = 0;
Expand Down Expand Up @@ -1362,7 +1366,7 @@ CosaSecurityInitialize
CosaGetSysCfgUlong(g_DeviceFingerPrintICMPv6Enabled, &ValueDFIcmpv6_RFC);
CosaGetSysCfgUlong(g_WSDiscoveryAnalysisEnabled, &ValueWSA_RFC);
CosaGetSysCfgUlong(g_AdvSecOTMEnabled, &ValueASOTM_RFC);
CosaGetSysCfgUlong(g_AdvSecUserSpaceEnabled, &ValueASUSERSPACE_RFC);
getUserSpaceRfcStatus = CosaGetSysCfgUlong(g_AdvSecUserSpaceEnabled, &ValueASUSERSPACE_RFC);
#ifdef NETWORK_INTELLIGENCE
CosaGetSysCfgUlong(g_AdvSecNetworkIntelligenceEnabled, &ValueNI_RFC);
CosaGetSysCfgUlong(g_NetworkIntelligenceMemoryLimit, &ValueNIML_RFC);
Expand All @@ -1374,8 +1378,8 @@ CosaSecurityInitialize
CosaGetSysCfgUlong(g_AdvSecAgentEnabled, &ValueASAGENT_RFC);
CosaGetSysCfgUlong(g_AdvSecSafeBrowsingEnabled, &ValueASSAFEBROWSING_RFC);
CosaGetSysCfgUlong(g_AdvSecCujoTelemetryWiFiFPEnabled, &ValueASCUJOTELEMETRYWIFIFP_RFC);
CosaGetSysCfgUlong(g_AdvSecCujoTracerEnabled, &ValueASCUJOTRACER_RFC);
CosaGetSysCfgUlong(g_AdvSecCujoTelemetryEnabled, &ValueASCUJOTELEMETRY_RFC);
getCujoTracerRfcStatus = CosaGetSysCfgUlong(g_AdvSecCujoTracerEnabled, &ValueASCUJOTRACER_RFC);
getCujoTelemetryRfcStatus = CosaGetSysCfgUlong(g_AdvSecCujoTelemetryEnabled, &ValueASCUJOTELEMETRY_RFC);
CosaGetSysCfgUlong(g_AdvSecSATEEnabled, &ValueASSATE_RFC);
CosaGetSysCfgUlong(g_AdvSecTCPTrackerFilterDevicesEnabled, &ValueASTCPTrackerFilterDevices_RFC);
CosaGetSysCfgUlong(g_AdvSecDoHBlockingEnabled, &ValueASDoHBlocking_RFC);
Expand All @@ -1395,20 +1399,38 @@ CosaSecurityInitialize
g_pAdvSecAgent->pDFIcmpv6_RFC->bEnable = ValueDFIcmpv6_RFC;
g_pAdvSecAgent->pWSDiscoveryAnalysis_RFC->bEnable = ValueWSA_RFC;
g_pAdvSecAgent->pAdvSecOTM_RFC->bEnable = ValueASOTM_RFC;
if (ValueASUSERSPACE_RFC == 0)

applyRfcStatus = CosaAdvSecApplyRfcDefaultTrue(
g_AdvSecCujoTracerEnabled,
getCujoTracerRfcStatus,
ValueASCUJOTRACER_RFC,
&g_pAdvSecAgent->pAdvSecCujoTracer_RFC->bEnable,
"AdvSecCujoTracer_RFCEnable");
if ((returnStatus == ANSC_STATUS_SUCCESS) && (applyRfcStatus != ANSC_STATUS_SUCCESS))
{
// Enable user-space feature
returnStatus = CosaSetSysCfgUlong(g_AdvSecUserSpaceEnabled, 1);
if (returnStatus != ANSC_STATUS_SUCCESS)
{
CcspTraceError(("%s: syscfg_set failure\n", __FUNCTION__));
}
g_pAdvSecAgent->pAdvSecUserSpace_RFC->bEnable = TRUE;
CcspTraceInfo(("AdvSecUserSpace_RFCEnable:TRUE\n"));
returnStatus = applyRfcStatus;
}
else

applyRfcStatus = CosaAdvSecApplyRfcDefaultTrue(
g_AdvSecCujoTelemetryEnabled,
getCujoTelemetryRfcStatus,
ValueASCUJOTELEMETRY_RFC,
&g_pAdvSecAgent->pAdvSecCujoTelemetry_RFC->bEnable,
"AdvSecCujoTelemetry_RFCEnable");
if ((returnStatus == ANSC_STATUS_SUCCESS) && (applyRfcStatus != ANSC_STATUS_SUCCESS))
{
g_pAdvSecAgent->pAdvSecUserSpace_RFC->bEnable = ValueASUSERSPACE_RFC;
returnStatus = applyRfcStatus;
}

applyRfcStatus = CosaAdvSecApplyRfcDefaultTrue(
g_AdvSecUserSpaceEnabled,
getUserSpaceRfcStatus,
ValueASUSERSPACE_RFC,
&g_pAdvSecAgent->pAdvSecUserSpace_RFC->bEnable,
"AdvSecUserSpace_RFCEnable");
if ((returnStatus == ANSC_STATUS_SUCCESS) && (applyRfcStatus != ANSC_STATUS_SUCCESS))
{
returnStatus = applyRfcStatus;
}
#ifdef NETWORK_INTELLIGENCE
g_pAdvSecAgent->pAdvNetworkIntelligence_RFC->bEnable = ValueNI_RFC;
Expand Down Expand Up @@ -1469,8 +1491,6 @@ CosaSecurityInitialize
g_pAdvSecAgent->pAdvSecAgent_RFC->bEnable = ValueASAGENT_RFC;
g_pAdvSecAgent->pAdvSecSafeBrowsing_RFC->bEnable = ValueASSAFEBROWSING_RFC;
g_pAdvSecAgent->pAdvSecCujoTelemetryWiFiFP_RFC->bEnable = ValueASCUJOTELEMETRYWIFIFP_RFC;
g_pAdvSecAgent->pAdvSecCujoTracer_RFC->bEnable = ValueASCUJOTRACER_RFC;
g_pAdvSecAgent->pAdvSecCujoTelemetry_RFC->bEnable = ValueASCUJOTELEMETRY_RFC;
g_pAdvSecAgent->pAdvSecSATE_RFC->bEnable = ValueASSATE_RFC;
g_pAdvSecAgent->pAdvSecTCPTrackerFilterDevices_RFC->bEnable = ValueASTCPTrackerFilterDevices_RFC;
g_pAdvSecAgent->pAdvSecDoHBlocking_RFC->bEnable = ValueASDoHBlocking_RFC;
Expand Down Expand Up @@ -1592,6 +1612,34 @@ ANSC_STATUS CosaSetSysCfgUlong(char* setting, ULONG value)
return ret;
}

ANSC_STATUS
CosaAdvSecApplyRfcDefaultTrue
(
char* setting,
ANSC_STATUS getStatus,
ULONG value,
BOOL* pEnable,
const char* featureLogName
)
{
ANSC_STATUS ret = ANSC_STATUS_SUCCESS;

if (getStatus != ANSC_STATUS_SUCCESS)
{
ret = CosaSetSysCfgUlong(setting, 1);
if (ret != ANSC_STATUS_SUCCESS)
{
CcspTraceError(("%s: %s default-to-true persist failed\n", __FUNCTION__, featureLogName));
return ret;
}
*pEnable = TRUE;
CcspTraceInfo(("%s:TRUE\n", featureLogName));
return ret;
Comment thread
akumar0702 marked this conversation as resolved.
}

*pEnable = value;
return ret;
}
#ifdef NETWORK_INTELLIGENCE
ANSC_STATUS CosaAdvSecNetworkIntelligenceInit(ANSC_HANDLE hThisObject)
{
Expand Down Expand Up @@ -3263,7 +3311,6 @@ ANSC_STATUS CosaAdvSecUserSpaceInit(ANSC_HANDLE hThisObject)
return returnStatus;
}

/*
ANSC_STATUS CosaAdvSecUserSpaceDeInit(ANSC_HANDLE hThisObject)
{
UNREFERENCED_PARAMETER(hThisObject);
Expand All @@ -3288,7 +3335,6 @@ ANSC_STATUS CosaAdvSecUserSpaceDeInit(ANSC_HANDLE hThisObject)
CcspTraceWarning (("AdvSecUserSpace_RFCEnable:FALSE\n"));
return returnStatus;
}
*/

#ifdef WIFI_DATA_COLLECTION
ANSC_STATUS CosaLevlInit(ANSC_HANDLE hThisObject)
Expand Down
12 changes: 10 additions & 2 deletions source/AdvSecurityDml/cosa_adv_security_internal.h
Original file line number Diff line number Diff line change
Expand Up @@ -337,6 +337,16 @@ CosaSetSysCfgUlong
ULONG value
);

ANSC_STATUS
CosaAdvSecApplyRfcDefaultTrue
(
char* setting,
ANSC_STATUS getStatus,
ULONG value,
BOOL* pEnable,
const char* featureLogName
);

ANSC_STATUS
CosaAdvSecGetCustomURL
(
Expand Down Expand Up @@ -475,13 +485,11 @@ CosaAdvSecUserSpaceInit
ANSC_HANDLE hThisObject
);

/*
ANSC_STATUS
CosaAdvSecUserSpaceDeInit
(
ANSC_HANDLE hThisObject
);
*/

ANSC_STATUS
CosaLevlInit
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2252,3 +2252,75 @@ TEST_F(CcspAdvSecurityInternalTestFixture, CosaAdvSecAgentRaptrDeInit)
free(g_pAdvSecAgent->pRaptr_RFC);
free(g_pAdvSecAgent);
}

TEST_F(CcspAdvSecurityInternalTestFixture, CosaAdvSecApplyRfcDefaultTrue_GetFailure_DefaultsToTrue)
{
const char *AdvSecCujoTracerEnabled = "Adv_AdvSecCujoTracerRFCEnable";
BOOL enable = FALSE;

EXPECT_CALL(*g_safecLibMock, _sprintf_s_chk(_, _, _, _))
.Times(1)
.WillOnce(Return(0));
EXPECT_CALL(*g_syscfgMock, syscfg_set_nns(StrEq(AdvSecCujoTracerEnabled), _))
.Times(1)
.WillOnce(Return(0));
EXPECT_CALL(*g_syscfgMock, syscfg_commit())
.Times(1)
.WillOnce(Return(0));

ANSC_STATUS status = CosaAdvSecApplyRfcDefaultTrue(
(char*)AdvSecCujoTracerEnabled,
ANSC_STATUS_FAILURE,
0,
&enable,
"AdvSecCujoTracer_RFCEnable");

EXPECT_EQ(status, ANSC_STATUS_SUCCESS);
EXPECT_EQ(enable, TRUE);
}

TEST_F(CcspAdvSecurityInternalTestFixture, CosaAdvSecApplyRfcDefaultTrue_ZeroValue_NoDefaultWrite)
{
const char *AdvSecCujoTelemetryEnabled = "Adv_AdvSecCujoTelemetryRFCEnable";
BOOL enable = FALSE;

EXPECT_CALL(*g_safecLibMock, _sprintf_s_chk(_, _, _, _))
.Times(0);
EXPECT_CALL(*g_syscfgMock, syscfg_set_nns(StrEq(AdvSecCujoTelemetryEnabled), _))
.Times(0);
EXPECT_CALL(*g_syscfgMock, syscfg_commit())
.Times(0);

ANSC_STATUS status = CosaAdvSecApplyRfcDefaultTrue(
(char*)AdvSecCujoTelemetryEnabled,
ANSC_STATUS_SUCCESS,
0,
&enable,
"AdvSecCujoTelemetry_RFCEnable");

EXPECT_EQ(status, ANSC_STATUS_SUCCESS);
EXPECT_EQ(enable, FALSE);
}
Comment on lines +2287 to +2303

TEST_F(CcspAdvSecurityInternalTestFixture, CosaAdvSecApplyRfcDefaultTrue_EnabledValue_NoDefaultWrite)
{
const char *AdvSecCujoTracerEnabled = "Adv_AdvSecCujoTracerRFCEnable";
BOOL enable = FALSE;

EXPECT_CALL(*g_syscfgMock, syscfg_set_nns(StrEq(AdvSecCujoTracerEnabled), _))
.Times(0);
EXPECT_CALL(*g_syscfgMock, syscfg_commit())
.Times(0);
EXPECT_CALL(*g_safecLibMock, _sprintf_s_chk(_, _, _, _))
.Times(0);

ANSC_STATUS status = CosaAdvSecApplyRfcDefaultTrue(
(char*)AdvSecCujoTracerEnabled,
ANSC_STATUS_SUCCESS,
1,
&enable,
"AdvSecCujoTracer_RFCEnable");

EXPECT_EQ(status, ANSC_STATUS_SUCCESS);
EXPECT_EQ(enable, TRUE);
}
Loading