... | ... |
@@ -98,9 +98,18 @@ int add_avp(unsigned short flags, int_str name, int_str val) |
98 | 98 |
|
99 | 99 |
assert( crt_avps!=0 ); |
100 | 100 |
|
101 |
+ if ( name.s==0 ) { |
|
102 |
+ LOG(L_ERR,"ERROR:avp:add_avp: 0 ID or NULL NAME AVP!"); |
|
103 |
+ goto error; |
|
104 |
+ } |
|
105 |
+ |
|
101 | 106 |
/* compute the required mem size */ |
102 | 107 |
len = sizeof(struct usr_avp); |
103 | 108 |
if (flags&AVP_NAME_STR) { |
109 |
+ if ( name.s->s==0 || name.s->len==0) { |
|
110 |
+ LOG(L_ERR,"ERROR:avp:add_avp: EMPTY NAME AVP!"); |
|
111 |
+ goto error; |
|
112 |
+ } |
|
104 | 113 |
if (flags&AVP_VAL_STR) |
105 | 114 |
len += sizeof(struct str_str_data)-sizeof(void*) + name.s->len |
106 | 115 |
+ (val.s->len+1); |
... | ... |
@@ -263,11 +272,21 @@ struct usr_avp *search_first_avp( unsigned short name_type, |
263 | 272 |
if (*crt_avps==0) |
264 | 273 |
return 0; |
265 | 274 |
|
275 |
+ if ( name.s==0) { |
|
276 |
+ LOG(L_ERR,"ERROR:avp:search_first_avp: 0 ID or NULL NAME AVP!"); |
|
277 |
+ return 0; |
|
278 |
+ } |
|
279 |
+ |
|
266 | 280 |
/* search for the AVP by ID (&name) */ |
267 |
- if (name_type&AVP_NAME_STR) |
|
281 |
+ if (name_type&AVP_NAME_STR) { |
|
282 |
+ if ( name.s->s==0 || name.s->len==0) { |
|
283 |
+ LOG(L_ERR,"ERROR:avp:search_first_avp: EMPTY NAME AVP!"); |
|
284 |
+ return 0; |
|
285 |
+ } |
|
268 | 286 |
avp = internal_search_name_avp(*crt_avps,compute_ID(name.s),name.s); |
269 |
- else |
|
287 |
+ } else { |
|
270 | 288 |
avp = internal_search_ID_avp( *crt_avps, name.n ); |
289 |
+ } |
|
271 | 290 |
|
272 | 291 |
/* get the value - if required */ |
273 | 292 |
if (avp && val) |