Skip to content

Commit 1a647bf

Browse files
committed
Update unit test to handle null characters in input strings.
1 parent 19c1887 commit 1a647bf

File tree

1 file changed

+37
-0
lines changed

1 file changed

+37
-0
lines changed

test/unit-test/core_http_utest.c

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -592,6 +592,30 @@ void test_Http_InitializeRequestHeaders_Insufficient_Memory()
592592
HTTP_TEST_REQUEST_LINE_LEN ) != 0 );
593593
}
594594

595+
void test_Http_InitializeRequestHeaders_NullByteInPath()
596+
{
597+
HTTPStatus_t httpStatus = HTTPSuccess;
598+
HTTPRequestHeaders_t requestHeaders = { 0 };
599+
HTTPRequestInfo_t requestInfo = { 0 };
600+
const char * const pathWithNullByte = "/AB\0CDEF/";
601+
602+
expectedHeaders.dataLen = HTTP_TEST_PREFIX_HEADER_LEN -
603+
HTTP_TEST_REQUEST_PATH_LEN +
604+
HTTP_EMPTY_PATH_LEN;
605+
606+
setupRequestInfo( &requestInfo );
607+
setupBuffer( &requestHeaders );
608+
609+
requestInfo.pPath = pathWithNullByte;
610+
requestInfo.pathLen = ( sizeof( pathWithNullByte ) - 1 );
611+
requestInfo.reqFlags = 0U;
612+
613+
requestHeaders.pBuffer = testBuffer;
614+
requestHeaders.bufferLen = expectedHeaders.dataLen;
615+
httpStatus = HTTPClient_InitializeRequestHeaders( &requestHeaders, &requestInfo );
616+
TEST_ASSERT_EQUAL( HTTPInvalidParameter, httpStatus );
617+
}
618+
595619
/* ===================== Testing HTTPClient_AddHeader ======================= */
596620

597621
/**
@@ -827,6 +851,7 @@ void test_Http_AddHeader_Invalid_Fields()
827851
const char * colonInField = "head:er-field";
828852
const char * linefeedInField = "head\ner-field";
829853
const char * carriageReturnInField = "head\rer-field";
854+
const char * nullInField = "head\0er-field";
830855

831856
setupBuffer( &requestHeaders );
832857

@@ -851,6 +876,11 @@ void test_Http_AddHeader_Invalid_Fields()
851876
carriageReturnInField, strlen( carriageReturnInField ),
852877
HTTP_TEST_HEADER_VALUE, HTTP_TEST_HEADER_VALUE_LEN );
853878
TEST_ASSERT_EQUAL( HTTPSecurityAlertInvalidCharacter, httpStatus );
879+
880+
httpStatus = HTTPClient_AddHeader( &requestHeaders,
881+
nullInField, sizeof( nullInField ),
882+
HTTP_TEST_HEADER_VALUE, HTTP_TEST_HEADER_VALUE_LEN );
883+
TEST_ASSERT_EQUAL( HTTPSecurityAlertInvalidCharacter, httpStatus );
854884
}
855885

856886
/**
@@ -865,6 +895,7 @@ void test_Http_AddHeader_Invalid_Values()
865895
const char * colonInValue = "head:er-value";
866896
const char * linefeedInValue = "head\ner-Value";
867897
const char * carriageReturnInValue = "head\rer-Value";
898+
const char * nullInValue = "head\0er-Value";
868899

869900
setupBuffer( &requestHeaders );
870901

@@ -909,6 +940,11 @@ void test_Http_AddHeader_Invalid_Values()
909940
HTTP_TEST_HEADER_FIELD, HTTP_TEST_HEADER_FIELD_LEN,
910941
carriageReturnInValue, strlen( carriageReturnInValue ) );
911942
TEST_ASSERT_EQUAL( HTTPSecurityAlertInvalidCharacter, httpStatus );
943+
944+
httpStatus = HTTPClient_AddHeader( &requestHeaders,
945+
HTTP_TEST_HEADER_FIELD, HTTP_TEST_HEADER_FIELD_LEN,
946+
carriageReturnInValue, sizeof( nullInValue ) - 1 );
947+
TEST_ASSERT_EQUAL( HTTPSecurityAlertInvalidCharacter, httpStatus );
912948
}
913949

914950
/* ============== Testing HTTPClient_AddRangeHeader ================== */
@@ -996,6 +1032,7 @@ void test_Http_AddRangeHeader_Insufficient_Memory( void )
9961032
&expectedHeaders,
9971033
PREEXISTING_HEADER_DATA );
9981034
size_t preHeadersLen = testHeaders.headersLen;
1035+
9991036
testRangeStart = 5;
10001037
testRangeEnd = 10;
10011038

0 commit comments

Comments
 (0)