version 1.9.56.2, 2022/01/24 16:01:49
|
version 1.9.56.3, 2022/01/24 17:07:24
|
Line 252 buffer2vars(u_char * __restrict buf, int buflen, int v
|
Line 252 buffer2vars(u_char * __restrict buf, int buflen, int v
|
/* |
/* |
* ait_vars2tlv() - Marshaling data from array with variables to TLV buffer |
* ait_vars2tlv() - Marshaling data from array with variables to TLV buffer |
* |
* |
* @buf = Buffer | * @buf = Buffer, If =NULL then we return only needed buffer size |
* @buflen = Size of buffer |
* @buflen = Size of buffer |
* @vars = Variable array |
* @vars = Variable array |
* return: -1 error, 0 nothing done or >0 size of marshaled data |
* return: -1 error, 0 nothing done or >0 size of marshaled data |
Line 265 ait_vars2tlv(u_char * __restrict buf, int buflen, arra
|
Line 265 ait_vars2tlv(u_char * __restrict buf, int buflen, arra
|
ait_val_t *val; |
ait_val_t *val; |
u_char *dat; |
u_char *dat; |
|
|
assert(buf); |
|
assert(vars); |
assert(vars); |
if (!buf || !vars) | if (!vars) |
return -1; |
return -1; |
if (!buflen || !array_Size(vars)) | if (!array_Size(vars)) |
return 0; |
return 0; |
|
|
/* calculate amount of data into buffer */ |
/* calculate amount of data into buffer */ |
for (i = 0, Limit = 0; i < array_Size(vars); i++, | for (i = 0, Limit = 0; i < array_Size(vars); |
Limit += 5 + AIT_LEN(array(vars, i, ait_val_t*))); | Limit += 5 + AIT_LEN(array(vars, i, ait_val_t*)), i++); |
| /* check only needed buffer size */ |
| if (!buf) |
| return Limit; |
| |
if (Limit > buflen) { |
if (Limit > buflen) { |
elwix_SetErr(EMSGSIZE, "Short buffer buflen=%d needed min %d", |
elwix_SetErr(EMSGSIZE, "Short buffer buflen=%d needed min %d", |
buflen, Limit); |
buflen, Limit); |
Line 369 ait_tlv2vars(u_char * __restrict buf, int buflen)
|
Line 372 ait_tlv2vars(u_char * __restrict buf, int buflen)
|
return NULL; |
return NULL; |
|
|
/* de-marshaling */ |
/* de-marshaling */ |
for (i = 0, dat = buf; i < buflen; i++) { | for (i = 0, dat = buf; *dat != empty && dat < (buf + buflen); i++) { |
val = ait_getVars(&vars, i); |
val = ait_getVars(&vars, i); |
if (!val) { |
if (!val) { |
ait_freeVars(&vars); |
ait_freeVars(&vars); |