CI: Add silent cmake SonarCloud scan
[ric-plt/lib/rmr.git] / test / mbuf_api_static_test.c
index 1ee2858..d4eca07 100644 (file)
@@ -40,6 +40,7 @@
 #include "rmr.h"
 #include "rmr_agnostic.h"
 
+// ---------------------------------------------------------------------------------------------
 
 int mbuf_api_test( ) {
        unsigned char* c;
@@ -49,6 +50,8 @@ int mbuf_api_test( ) {
        char*   buf;
        void*   ptr;
        rmr_mbuf_t*     mbuf;
+       rmr_mbuf_t*     mbuf2;
+       rmr_mbuf_t*     mbuf3;
        uta_mhdr_t*     hdr;
        unsigned char src_buf[256];
        unsigned char dest_buf[256];
@@ -68,7 +71,7 @@ int mbuf_api_test( ) {
        mbuf->header = mbuf->tp_buf;
        mbuf->alloc_len = 1024;
        mbuf->payload = PAYLOAD_ADDR( mbuf->header );
-       hdr = (rmr_mbuf_t *) mbuf->header;
+       hdr = (uta_mhdr_t *) mbuf->header;
        mbuf->xaction = hdr->xid;
 
 
@@ -107,11 +110,19 @@ int mbuf_api_test( ) {
        errors += fail_if( i > 0, "(rv) attempt to copy bytes to meid with nil message" );
 
        errno = 0;
+       strncpy( src_buf, "a very long string that should trigger an error when stuffing it into meid", sizeof( src_buf ) );            // ensure no zero byte at field length
        i = rmr_bytes2meid( mbuf, src_buf, RMR_MAX_MEID + 1 );
        errors += fail_if( errno == 0, "(errno) attempt to copy bytes to meid with large source buffer" );
        errors += fail_if( i != RMR_MAX_MEID, "(rv) attempt to copy bytes to meid with large source buffer" );
+       
+       errno = 0;
+       i = rmr_bytes2meid( mbuf, src_buf, RMR_MAX_MEID );                      // it's not 0 terminated at length expect failure
+       errors += fail_if( errno == 0, "(errno) attempt to copy non-zero termianted bytes to meid with large source buffer" );
+       errors += fail_if( i != RMR_MAX_MEID, "(rv) attempt to copy bytes to meid with large source buffer" );
 
        errno = 0;
+       memset( src_buf, 0, RMR_MAX_MEID+2 );
+       strcpy( src_buf, "smaller bytes" );
        i = rmr_bytes2meid( mbuf, src_buf, RMR_MAX_MEID  );
        errors += fail_if( errno != 0, "copy bytes to meid; expected errno to be ok" );
        errors += fail_if( i != RMR_MAX_MEID, "copy bytes to meid; expected return value to be max meid len" );
@@ -152,10 +163,18 @@ int mbuf_api_test( ) {
        c = rmr_get_meid( mbuf, NULL );                 // should allocate and return c
        errors += fail_if( c == NULL, "get meid with nil dest pointer (did not allocate a buffer)" );
        errors += fail_if( strcmp( c, "test-meid" ) != 0, "did not get expected meid from mbuffer" );
+       if( c ) {
+               free( c );
+               c = NULL;
+       }
 
        c = rmr_get_meid( mbuf, c );
        errors += fail_if( c == NULL, "get meid with a dest pointer returned no pointer" );
        errors += fail_if( strcmp( c, "test-meid" ) != 0, "did not get expected meid from mbuffer" );
+       if( c ) {
+               free( c );
+               c = NULL;
+       }
 
 
        // --- test transaction field  access functions ---------------------------------------------------
@@ -195,6 +214,7 @@ int mbuf_api_test( ) {
                i = strcmp( ptr, src_buf );
                errors += fail_not_equal( i, 0, "get xaction did not fetch expected string cmp return (a) was not 0" );
                free( ptr );
+               ptr = NULL;
        }
        
        errno = 999;
@@ -231,6 +251,7 @@ int mbuf_api_test( ) {
        errors += fail_if( i == RMR_OK, "(rv) attempt to copy string to xact with large source buffer" );
 
 
+       rmr_free_msg( mbuf );
 
        // ------------ trace data tests ----------------------------------------------------------------
        // CAUTION: to support standalone mbuf api tests, the underlying buffer reallocation functions are NOT used
@@ -336,5 +357,6 @@ int mbuf_api_test( ) {
        test_set_ver( mbuf, 2 );                                                        // set older message version to ensure properly handled
        buf = rmr_get_srcip( mbuf, src_buf );
 
+
        return errors > 0;                      // overall exit code bad if errors
 }