X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;ds=sidebyside;f=src%2Frmr%2Fcommon%2Fsrc%2Fwrapper.c;h=9d3dd72cc1a8b70864a026e684ed1ded8c9e6e73;hb=69d7bfd7bbe046dda3afa50e0362448d60301258;hp=68af08474fe6b9748116bc887c8e432e92078ef2;hpb=68c1ab2191d9959fde0bd275a560f7c9cf6df485;p=ric-plt%2Flib%2Frmr.git diff --git a/src/rmr/common/src/wrapper.c b/src/rmr/common/src/wrapper.c index 68af084..9d3dd72 100644 --- a/src/rmr/common/src/wrapper.c +++ b/src/rmr/common/src/wrapper.c @@ -32,7 +32,7 @@ #include "../include/rmr.h" -#define ADD_SEP 1 +#define ADD_SEP 1 #define NO_SEP 0 /* @@ -63,8 +63,9 @@ static char* build_sval( char* name, char* val, int add_sep ) { strcat src is freed as a convenience. Max is the max amount that target can accept; we don't bang on if src len is larger than max. Return is the size of src; 0 if the - target was not modified. If target is not modified, then - src is NOT released. + target was not modified. + + Source is ALWAYS freed! */ static int bang_on( char* target, char* src, int max ) { int len; @@ -73,11 +74,13 @@ static int bang_on( char* target, char* src, int max ) { if( src && target ) { len = strlen( src ); if( (rc = len <= max ? len : 0 ) > 0 ) { // if it fits, add it. - strcat( target, src ); - free( src ); + strncat( target, src, len ); } } + if( src ) { + free( src ); + } return rc; } @@ -108,6 +111,8 @@ extern char* rmr_get_consts( ) { remain -= bang_on( wbuf, phrase, remain ); phrase = build_ival( "RMRFL_AUTO_ALLOC", RMRFL_AUTO_ALLOC, ADD_SEP ); remain -= bang_on( wbuf, phrase, remain ); + phrase = build_ival( "RMRFL_MTCALL", RMRFL_MTCALL, ADD_SEP ); + remain -= bang_on( wbuf, phrase, remain ); phrase = build_ival( "RMR_DEF_SIZE", RMR_DEF_SIZE, ADD_SEP ); remain -= bang_on( wbuf, phrase, remain ); @@ -150,6 +155,6 @@ extern char* rmr_get_consts( ) { phrase = build_ival( "RMR_ERR_INITFAILED", RMR_ERR_INITFAILED, NO_SEP ); remain -= bang_on( wbuf, phrase, remain ); - strcat( wbuf, " }" ); + strncat( wbuf, " }", remain ); return strdup( wbuf ); // chop unused space and return }