#include "rmr.h"
#include "rmr_agnostic.h"
+// ---------------------------------------------------------------------------------------------
int mbuf_api_test( ) {
unsigned char* c;
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];
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;
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" );
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
}