diff options
author | Archit Gupta <71798289+archigup@users.noreply.github.com> | 2020-11-24 11:50:13 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-11-24 11:50:13 -0800 |
commit | 5ba1e4cf957e89f5e3e2d315c75170eb4354fe6a (patch) | |
tree | c6d0096d7b2f7d9ffce116178943645ef66a58b4 | |
parent | ced1845508cb30f9c5a76bf648b148f0d4e08d82 (diff) | |
download | freertos-git-5ba1e4cf957e89f5e3e2d315c75170eb4354fe6a.tar.gz |
Clean up defender demo (#422)
4 files changed, 113 insertions, 93 deletions
diff --git a/FreeRTOS-Plus/Demo/AWS/Device_Defender_Windows_Simulator/Device_Defender_Demo/DemoTasks/DefenderDemoExample.c b/FreeRTOS-Plus/Demo/AWS/Device_Defender_Windows_Simulator/Device_Defender_Demo/DemoTasks/DefenderDemoExample.c index 140c5987b..74773b490 100644 --- a/FreeRTOS-Plus/Demo/AWS/Device_Defender_Windows_Simulator/Device_Defender_Demo/DemoTasks/DefenderDemoExample.c +++ b/FreeRTOS-Plus/Demo/AWS/Device_Defender_Windows_Simulator/Device_Defender_Demo/DemoTasks/DefenderDemoExample.c @@ -96,8 +96,15 @@ */ #define DEFENDER_RESPONSE_WAIT_SECONDS ( 2 ) +/** + * @brief Name of the report id field in the response from the AWS IoT Device + * Defender service. + */ #define DEFENDER_RESPONSE_REPORT_ID_FIELD "reportId" +/** + * @brief The length of #DEFENDER_RESPONSE_REPORT_ID_FIELD. + */ #define DEFENDER_RESPONSE_REPORT_ID_FIELD_LENGTH ( sizeof( DEFENDER_RESPONSE_REPORT_ID_FIELD ) - 1 ) /** diff --git a/FreeRTOS-Plus/Demo/AWS/Device_Defender_Windows_Simulator/Device_Defender_Demo/metrics_collector.c b/FreeRTOS-Plus/Demo/AWS/Device_Defender_Windows_Simulator/Device_Defender_Demo/metrics_collector.c index 2d993dee1..e10368fb8 100644 --- a/FreeRTOS-Plus/Demo/AWS/Device_Defender_Windows_Simulator/Device_Defender_Demo/metrics_collector.c +++ b/FreeRTOS-Plus/Demo/AWS/Device_Defender_Windows_Simulator/Device_Defender_Demo/metrics_collector.c @@ -62,23 +62,29 @@ eMetricsCollectorStatus eGetNetworkStats( NetworkStats_t * pxOutNetworkStats ) configASSERT( pxOutNetworkStats != NULL ); - if( eStatus == eMetricsCollectorSuccess ) - { - /* Start with everything as zero. */ - memset( pxOutNetworkStats, 0, sizeof( NetworkStats_t ) ); + /* Start with everything as zero. */ + memset( pxOutNetworkStats, 0, sizeof( NetworkStats_t ) ); - /* Get metrics from FreeRTOS+TCP tcp_netstat utility. */ - xMetricsStatus = vGetMetrics( &xMetrics ); + /* Get metrics from FreeRTOS+TCP tcp_netstat utility. */ + xMetricsStatus = vGetMetrics( &xMetrics ); - if( xMetricsStatus != 0 ) - { - eStatus = eMetricsCollectorCollectionFailed; - } + if( xMetricsStatus != 0 ) + { + LogError( ( "Failed to acquire metrics from FreeRTOS+TCP tcp_netstat utility. Status: %d.", + ( int ) xMetricsStatus ) ); + eStatus = eMetricsCollectorCollectionFailed; } /* Fill our response with values gotten from FreeRTOS+TCP. */ if( eStatus == eMetricsCollectorSuccess ) { + LogDebug( ( "Network stats read. Bytes received: %u, packets received: %u, " + "bytes sent: %u, packets sent: %u.", + ( unsigned int ) xMetrics.xInput.uxByteCount, + ( unsigned int ) xMetrics.xInput.uxPacketCount, + ( unsigned int ) xMetrics.XOutput.uxByteCount, + ( unsigned int ) xMetrics.XOutput.uxPacketCount ) ); + pxOutNetworkStats->ulBytesReceived = xMetrics.xInput.uxByteCount; pxOutNetworkStats->ulPacketsReceived = xMetrics.xInput.uxPacketCount; pxOutNetworkStats->ulBytesSent = xMetrics.XOutput.uxByteCount; @@ -97,19 +103,19 @@ eMetricsCollectorStatus eGetOpenTcpPorts( uint16_t * pusOutTcpPortsArray, MetricsType_t xMetrics = { 0 }; BaseType_t xMetricsStatus = 0; + uint32_t ulCopyAmount = 0UL; /* pusOutTcpPortsArray can be NULL. */ configASSERT( pulOutNumTcpOpenPorts != NULL ); - if( eStatus == eMetricsCollectorSuccess ) - { - /* Get metrics from FreeRTOS+TCP tcp_netstat utility. */ - xMetricsStatus = vGetMetrics( &xMetrics ); + /* Get metrics from FreeRTOS+TCP tcp_netstat utility. */ + xMetricsStatus = vGetMetrics( &xMetrics ); - if( xMetricsStatus != 0 ) - { - eStatus = eMetricsCollectorCollectionFailed; - } + if( xMetricsStatus != 0 ) + { + LogError( ( "Failed to acquire metrics from FreeRTOS+TCP tcp_netstat utility. Status: %d.", + ( int ) xMetricsStatus ) ); + eStatus = eMetricsCollectorCollectionFailed; } if( eStatus == eMetricsCollectorSuccess ) @@ -121,14 +127,16 @@ eMetricsCollectorStatus eGetOpenTcpPorts( uint16_t * pusOutTcpPortsArray, * given array. */ if( pusOutTcpPortsArray != NULL ) { - /* Lower the amount of ports copied if less are open than will fit - * in the given array. */ - if( xMetrics.xTCPPortList.uxCount < ulTcpPortsArrayLength ) + ulCopyAmount = xMetrics.xTCPPortList.uxCount; + + /* Limit the copied ports to what can fit in the output array. */ + if( ulTcpPortsArrayLength < xMetrics.xTCPPortList.uxCount ) { - ulTcpPortsArrayLength = xMetrics.xTCPPortList.uxCount; + LogWarn( ( "Ports returned truncated due to insufficient buffer size." ) ); + ulCopyAmount = ulTcpPortsArrayLength; } - memcpy( pusOutTcpPortsArray, &xMetrics.xTCPPortList.usTCPPortList, ulTcpPortsArrayLength * sizeof( uint16_t ) ); + memcpy( pusOutTcpPortsArray, &xMetrics.xTCPPortList.usTCPPortList, ulCopyAmount * sizeof( uint16_t ) ); } } @@ -144,19 +152,19 @@ eMetricsCollectorStatus eGetOpenUdpPorts( uint16_t * pusOutUdpPortsArray, MetricsType_t xMetrics = { 0 }; BaseType_t xMetricsStatus = 0; + uint32_t ulCopyAmount = 0UL; /* pusOutUdpPortsArray can be NULL. */ configASSERT( pulOutNumUdpOpenPorts != NULL ); - if( eStatus == eMetricsCollectorSuccess ) - { - /* Get metrics from FreeRTOS+TCP tcp_netstat utility. */ - xMetricsStatus = vGetMetrics( &xMetrics ); + /* Get metrics from FreeRTOS+TCP tcp_netstat utility. */ + xMetricsStatus = vGetMetrics( &xMetrics ); - if( xMetricsStatus != 0 ) - { - eStatus = eMetricsCollectorCollectionFailed; - } + if( xMetricsStatus != 0 ) + { + LogError( ( "Failed to acquire metrics from FreeRTOS+TCP tcp_netstat utility. Status: %d.", + ( int ) xMetricsStatus ) ); + eStatus = eMetricsCollectorCollectionFailed; } if( eStatus == eMetricsCollectorSuccess ) @@ -167,14 +175,16 @@ eMetricsCollectorStatus eGetOpenUdpPorts( uint16_t * pusOutUdpPortsArray, * given array. */ if( pusOutUdpPortsArray != NULL ) { - /* Lower the amount of ports copied if less are open than will fit - * in the given array. */ - if( xMetrics.xUDPPortList.uxCount < ulUdpPortsArrayLength ) + ulCopyAmount = xMetrics.xUDPPortList.uxCount; + + /* Limit the copied ports to what can fit in the output array. */ + if( ulUdpPortsArrayLength < xMetrics.xUDPPortList.uxCount ) { - ulUdpPortsArrayLength = xMetrics.xUDPPortList.uxCount; + LogWarn( ( "Ports returned truncated due to insufficient buffer size." ) ); + ulCopyAmount = ulUdpPortsArrayLength; } - memcpy( pusOutUdpPortsArray, &xMetrics.xUDPPortList.usUDPPortList, ulUdpPortsArrayLength * sizeof( uint16_t ) ); + memcpy( pusOutUdpPortsArray, &xMetrics.xUDPPortList.usUDPPortList, ulCopyAmount * sizeof( uint16_t ) ); } } @@ -191,20 +201,21 @@ eMetricsCollectorStatus eGetEstablishedConnections( Connection_t * pxOutConnecti MetricsType_t xMetrics = { 0 }; BaseType_t xMetricsStatus = 0; + uint32_t ulCopyAmount = 0UL; uint32_t ulLocalIp = 0UL; + uint32_t i; /* pxOutConnectionsArray can be NULL. */ configASSERT( pulOutNumEstablishedConnections != NULL ); - if( eStatus == eMetricsCollectorSuccess ) - { - /* Get metrics from FreeRTOS+TCP tcp_netstat utility. */ - xMetricsStatus = vGetMetrics( &xMetrics ); + /* Get metrics from FreeRTOS+TCP tcp_netstat utility. */ + xMetricsStatus = vGetMetrics( &xMetrics ); - if( xMetricsStatus != 0 ) - { - eStatus = eMetricsCollectorCollectionFailed; - } + if( xMetricsStatus != 0 ) + { + LogError( ( "Failed to acquire metrics from FreeRTOS+TCP tcp_netstat utility. Status: %d.", + ( int ) xMetricsStatus ) ); + eStatus = eMetricsCollectorCollectionFailed; } if( eStatus == eMetricsCollectorSuccess ) @@ -216,28 +227,27 @@ eMetricsCollectorStatus eGetEstablishedConnections( Connection_t * pxOutConnecti * the given array. */ if( pxOutConnectionsArray != NULL ) { + ulCopyAmount = xMetrics.xTCPSocketList.uxCount; + /* Get local IP as the tcp_netstat utility does not give it. */ ulLocalIp = FreeRTOS_GetIPAddress(); - /* Lower the amount of socket infos populated if less are open than will fit - * in the given array. */ - if( xMetrics.xTCPSocketList.uxCount < ulConnectionsArrayLength ) + /* Limit the outputted connections to what can fit in the output array. */ + if( ulConnectionsArrayLength < xMetrics.xTCPSocketList.uxCount ) { - ulConnectionsArrayLength = xMetrics.xTCPSocketList.uxCount; + LogWarn( ( "Ports returned truncated due to insufficient buffer size." ) ); + ulCopyAmount = ulConnectionsArrayLength; } - /* If xMetrics.xTCPSocketList.uxCount > ulConnectionsArrayLength, we - * return the first ulConnectionsArrayLength ports. */ - while( ulConnectionsArrayLength > 0 ) + for( i = 0; i < ulCopyAmount; i++ ) { - ulConnectionsArrayLength--; - pxOutConnectionsArray[ ulConnectionsArrayLength ].ulLocalIp = ulLocalIp; - pxOutConnectionsArray[ ulConnectionsArrayLength ].usLocalPort = - xMetrics.xTCPSocketList.xTCPList[ ulConnectionsArrayLength ].usLocalPort; - pxOutConnectionsArray[ ulConnectionsArrayLength ].ulRemoteIp = - xMetrics.xTCPSocketList.xTCPList[ ulConnectionsArrayLength ].ulRemoteIP; - pxOutConnectionsArray[ ulConnectionsArrayLength ].usRemotePort = - xMetrics.xTCPSocketList.xTCPList[ ulConnectionsArrayLength ].usRemotePort; + pxOutConnectionsArray[ i ].ulLocalIp = ulLocalIp; + pxOutConnectionsArray[ i ].usLocalPort = + xMetrics.xTCPSocketList.xTCPList[ i ].usLocalPort; + pxOutConnectionsArray[ i ].ulRemoteIp = + xMetrics.xTCPSocketList.xTCPList[ i ].ulRemoteIP; + pxOutConnectionsArray[ i ].usRemotePort = + xMetrics.xTCPSocketList.xTCPList[ i ].usRemotePort; } } } diff --git a/FreeRTOS-Plus/Demo/AWS/Device_Defender_Windows_Simulator/Device_Defender_Demo/metrics_collector.h b/FreeRTOS-Plus/Demo/AWS/Device_Defender_Windows_Simulator/Device_Defender_Demo/metrics_collector.h index f6922a1dd..9f49047e1 100644 --- a/FreeRTOS-Plus/Demo/AWS/Device_Defender_Windows_Simulator/Device_Defender_Demo/metrics_collector.h +++ b/FreeRTOS-Plus/Demo/AWS/Device_Defender_Windows_Simulator/Device_Defender_Demo/metrics_collector.h @@ -34,6 +34,8 @@ #ifndef METRICS_COLLECTOR_H_ #define METRICS_COLLECTOR_H_ +#include <stdint.h> + /** * @brief Return codes from metrics collector APIs. */ diff --git a/FreeRTOS-Plus/Demo/AWS/Device_Defender_Windows_Simulator/Device_Defender_Demo/report_builder.c b/FreeRTOS-Plus/Demo/AWS/Device_Defender_Windows_Simulator/Device_Defender_Demo/report_builder.c index fe8222007..8162b603d 100644 --- a/FreeRTOS-Plus/Demo/AWS/Device_Defender_Windows_Simulator/Device_Defender_Demo/report_builder.c +++ b/FreeRTOS-Plus/Demo/AWS/Device_Defender_Windows_Simulator/Device_Defender_Demo/report_builder.c @@ -166,9 +166,9 @@ static eReportBuilderStatus prvWritePortsArray( char * pcBuffer, uint32_t ulOpenPortsArrayLength, uint32_t * pulOutCharsWritten ) { - char * pCurrentWritePos = pcBuffer; + char * pcCurrentWritePos = pcBuffer; uint32_t i, ulRemainingBufferLength = ulBufferLength; - uint32_t ulCharactersWritten; + int32_t ulCharactersWritten; eReportBuilderStatus eStatus = eReportBuilderSuccess; configASSERT( pcBuffer != NULL ); @@ -178,9 +178,9 @@ static eReportBuilderStatus prvWritePortsArray( char * pcBuffer, /* Write the JSON array open marker. */ if( ulRemainingBufferLength > 1 ) { - *pCurrentWritePos = reportbuilderJSON_ARRAY_OPEN_MARKER; + *pcCurrentWritePos = reportbuilderJSON_ARRAY_OPEN_MARKER; ulRemainingBufferLength -= 1; - pCurrentWritePos += 1; + pcCurrentWritePos += 1; } else { @@ -190,7 +190,7 @@ static eReportBuilderStatus prvWritePortsArray( char * pcBuffer, /* Write the array elements. */ for( i = 0; ( ( i < ulOpenPortsArrayLength ) && ( eStatus == eReportBuilderSuccess ) ); i++ ) { - ulCharactersWritten = snprintf( pCurrentWritePos, + ulCharactersWritten = snprintf( pcCurrentWritePos, ulRemainingBufferLength, reportbuilderJSON_PORT_OBJECT_FORMAT, pusOpenPortsArray[ i ] ); @@ -203,7 +203,7 @@ static eReportBuilderStatus prvWritePortsArray( char * pcBuffer, else { ulRemainingBufferLength -= ( uint32_t ) ulCharactersWritten; - pCurrentWritePos += ulCharactersWritten; + pcCurrentWritePos += ulCharactersWritten; } } @@ -212,16 +212,16 @@ static eReportBuilderStatus prvWritePortsArray( char * pcBuffer, /* Discard the last comma. */ if( ulOpenPortsArrayLength > 0 ) { - pCurrentWritePos -= 1; + pcCurrentWritePos -= 1; ulRemainingBufferLength += 1; } /* Write the JSON array close marker. */ if( ulRemainingBufferLength > 1 ) { - *pCurrentWritePos = reportbuilderJSON_ARRAY_CLOSE_MARKER; + *pcCurrentWritePos = reportbuilderJSON_ARRAY_CLOSE_MARKER; ulRemainingBufferLength -= 1; - pCurrentWritePos += 1; + pcCurrentWritePos += 1; } else { @@ -244,9 +244,9 @@ static eReportBuilderStatus prvWriteConnectionsArray( char * pcBuffer, uint32_t ulConnectionsArrayLength, uint32_t * pulOutCharsWritten ) { - char * pCurrentWritePos = pcBuffer; + char * pcCurrentWritePos = pcBuffer; uint32_t i, ulRemainingBufferLength = ulBufferLength; - uint32_t ulCharactersWritten; + int32_t ulCharactersWritten; eReportBuilderStatus eStatus = eReportBuilderSuccess; const Connection_t * pxConn; @@ -257,9 +257,9 @@ static eReportBuilderStatus prvWriteConnectionsArray( char * pcBuffer, /* Write the JSON array open marker. */ if( ulRemainingBufferLength > 1 ) { - *pCurrentWritePos = reportbuilderJSON_ARRAY_OPEN_MARKER; + *pcCurrentWritePos = reportbuilderJSON_ARRAY_OPEN_MARKER; ulRemainingBufferLength -= 1; - pCurrentWritePos += 1; + pcCurrentWritePos += 1; } else { @@ -270,7 +270,7 @@ static eReportBuilderStatus prvWriteConnectionsArray( char * pcBuffer, for( i = 0; ( ( i < ulConnectionsArrayLength ) && ( eStatus == eReportBuilderSuccess ) ); i++ ) { pxConn = &( pxConnectionsArray[ i ] ); - ulCharactersWritten = snprintf( pCurrentWritePos, + ulCharactersWritten = snprintf( pcCurrentWritePos, ulRemainingBufferLength, reportbuilderJSON_CONNECTION_OBJECT_FORMAT, pxConn->usLocalPort, @@ -288,7 +288,7 @@ static eReportBuilderStatus prvWriteConnectionsArray( char * pcBuffer, else { ulRemainingBufferLength -= ulCharactersWritten; - pCurrentWritePos += ulCharactersWritten; + pcCurrentWritePos += ulCharactersWritten; } } @@ -297,16 +297,16 @@ static eReportBuilderStatus prvWriteConnectionsArray( char * pcBuffer, /* Discard the last comma. */ if( ulConnectionsArrayLength > 0 ) { - pCurrentWritePos -= 1; + pcCurrentWritePos -= 1; ulRemainingBufferLength += 1; } /* Write the JSON array close marker. */ if( ulRemainingBufferLength > 1 ) { - *pCurrentWritePos = reportbuilderJSON_ARRAY_CLOSE_MARKER; + *pcCurrentWritePos = reportbuilderJSON_ARRAY_CLOSE_MARKER; ulRemainingBufferLength -= 1; - pCurrentWritePos += 1; + pcCurrentWritePos += 1; } else { @@ -331,14 +331,15 @@ eReportBuilderStatus eGenerateJsonReport( char * pcBuffer, uint32_t ulReportId, uint32_t * pulOutReportLength ) { - char * pCurrentWritePos = pcBuffer; + char * pcCurrentWritePos = pcBuffer; uint32_t ulRemainingBufferLength = ulBufferLength, bufferWritten; eReportBuilderStatus eStatus = eReportBuilderSuccess; - uint32_t ulCharactersWritten; + int32_t ulCharactersWritten; configASSERT( pcBuffer != NULL ); configASSERT( pxMetrics != NULL ); configASSERT( pulOutReportLength != NULL ); + configASSERT( ulBufferLength != 0 ); if( ( pcBuffer == NULL ) || ( ulBufferLength == 0 ) || @@ -357,7 +358,7 @@ eReportBuilderStatus eGenerateJsonReport( char * pcBuffer, /* Write part1. */ if( eStatus == eReportBuilderSuccess ) { - ulCharactersWritten = snprintf( pCurrentWritePos, + ulCharactersWritten = snprintf( pcCurrentWritePos, ulRemainingBufferLength, reportbuilderJSON_REPORT_FORMAT_PART1, ulReportId, @@ -372,14 +373,14 @@ eReportBuilderStatus eGenerateJsonReport( char * pcBuffer, else { ulRemainingBufferLength -= ulCharactersWritten; - pCurrentWritePos += ulCharactersWritten; + pcCurrentWritePos += ulCharactersWritten; } } /* Write TCP ports array. */ if( eStatus == eReportBuilderSuccess ) { - eStatus = prvWritePortsArray( pCurrentWritePos, + eStatus = prvWritePortsArray( pcCurrentWritePos, ulRemainingBufferLength, pxMetrics->pusOpenTcpPortsArray, pxMetrics->ulOpenTcpPortsArrayLength, @@ -387,7 +388,7 @@ eReportBuilderStatus eGenerateJsonReport( char * pcBuffer, if( eStatus == eReportBuilderSuccess ) { - pCurrentWritePos += bufferWritten; + pcCurrentWritePos += bufferWritten; ulRemainingBufferLength -= bufferWritten; } else @@ -399,7 +400,7 @@ eReportBuilderStatus eGenerateJsonReport( char * pcBuffer, /* Write part2. */ if( eStatus == eReportBuilderSuccess ) { - ulCharactersWritten = snprintf( pCurrentWritePos, + ulCharactersWritten = snprintf( pcCurrentWritePos, ulRemainingBufferLength, reportbuilderJSON_REPORT_FORMAT_PART2, pxMetrics->ulOpenTcpPortsArrayLength ); @@ -412,14 +413,14 @@ eReportBuilderStatus eGenerateJsonReport( char * pcBuffer, else { ulRemainingBufferLength -= ulCharactersWritten; - pCurrentWritePos += ulCharactersWritten; + pcCurrentWritePos += ulCharactersWritten; } } /* Write UDP ports array. */ if( eStatus == eReportBuilderSuccess ) { - eStatus = prvWritePortsArray( pCurrentWritePos, + eStatus = prvWritePortsArray( pcCurrentWritePos, ulRemainingBufferLength, pxMetrics->pusOpenUdpPortsArray, pxMetrics->ulOpenUdpPortsArrayLength, @@ -427,7 +428,7 @@ eReportBuilderStatus eGenerateJsonReport( char * pcBuffer, if( eStatus == eReportBuilderSuccess ) { - pCurrentWritePos += bufferWritten; + pcCurrentWritePos += bufferWritten; ulRemainingBufferLength -= bufferWritten; } else @@ -439,7 +440,7 @@ eReportBuilderStatus eGenerateJsonReport( char * pcBuffer, /* Write part3. */ if( eStatus == eReportBuilderSuccess ) { - ulCharactersWritten = snprintf( pCurrentWritePos, + ulCharactersWritten = snprintf( pcCurrentWritePos, ulRemainingBufferLength, reportbuilderJSON_REPORT_FORMAT_PART3, pxMetrics->ulOpenUdpPortsArrayLength, @@ -456,14 +457,14 @@ eReportBuilderStatus eGenerateJsonReport( char * pcBuffer, else { ulRemainingBufferLength -= ulCharactersWritten; - pCurrentWritePos += ulCharactersWritten; + pcCurrentWritePos += ulCharactersWritten; } } /* Write connections array. */ if( eStatus == eReportBuilderSuccess ) { - eStatus = prvWriteConnectionsArray( pCurrentWritePos, + eStatus = prvWriteConnectionsArray( pcCurrentWritePos, ulRemainingBufferLength, pxMetrics->pxEstablishedConnectionsArray, pxMetrics->ulEstablishedConnectionsArrayLength, @@ -471,7 +472,7 @@ eReportBuilderStatus eGenerateJsonReport( char * pcBuffer, if( eStatus == eReportBuilderSuccess ) { - pCurrentWritePos += bufferWritten; + pcCurrentWritePos += bufferWritten; ulRemainingBufferLength -= bufferWritten; } else @@ -483,7 +484,7 @@ eReportBuilderStatus eGenerateJsonReport( char * pcBuffer, /* Write part4. */ if( eStatus == eReportBuilderSuccess ) { - ulCharactersWritten = snprintf( pCurrentWritePos, + ulCharactersWritten = snprintf( pcCurrentWritePos, ulRemainingBufferLength, reportbuilderJSON_REPORT_FORMAT_PART4, pxMetrics->ulEstablishedConnectionsArrayLength ); @@ -496,7 +497,7 @@ eReportBuilderStatus eGenerateJsonReport( char * pcBuffer, else { ulRemainingBufferLength -= ulCharactersWritten; - pCurrentWritePos += ulCharactersWritten; + pcCurrentWritePos += ulCharactersWritten; } } |