Changeset 706:4ffbc9f1e922 in freeDiameter for extensions/app_radgw/rgwx_acct.c
- Timestamp:
- Feb 9, 2011, 3:26:58 PM (13 years ago)
- Branch:
- default
- Phase:
- public
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
extensions/app_radgw/rgwx_acct.c
r705 r706 306 306 const char * prefix = "Diameter/"; 307 307 size_t pref_len; 308 uint8_t *si = NULL;308 os0_t si = NULL; 309 309 size_t si_len = 0; 310 uint8_t *un = NULL;310 os0_t un = NULL; 311 311 size_t un_len = 0; 312 312 … … 487 487 /* Create the Session-Id AVP if needed */ 488 488 if (!*session) { 489 CHECK_FCT( fd_sess_fromsid ( (char *)/* cast should be removed later */si, si_len, session, NULL) );489 CHECK_FCT( fd_sess_fromsid ( si, si_len, session, NULL) ); 490 490 491 491 TRACE_DEBUG(FULL, "[acct.rgwx] Translating new accounting message for session '%.*s'...", si_len, si); … … 663 663 char * attr_val, *auth_val; 664 664 attr_val = (char *)(attr + 1); 665 auth_val = attr_val + strlen(CLASS_AAI_PREFIX);666 if ( (attr->length > sizeof(struct radius_attr_hdr) + strlen(CLASS_AAI_PREFIX) )667 && (attr->length < sizeof(struct radius_attr_hdr) + strlen(CLASS_AAI_PREFIX) + sizeof(buf))668 && ! strncmp(attr_val, CLASS_AAI_PREFIX, strlen(CLASS_AAI_PREFIX))) {665 auth_val = attr_val + CONSTSTRLEN(CLASS_AAI_PREFIX); 666 if ( (attr->length > sizeof(struct radius_attr_hdr) + CONSTSTRLEN(CLASS_AAI_PREFIX) ) 667 && (attr->length < sizeof(struct radius_attr_hdr) + CONSTSTRLEN(CLASS_AAI_PREFIX) + sizeof(buf)) 668 && ! strncmp(attr_val, CLASS_AAI_PREFIX, CONSTSTRLEN(CLASS_AAI_PREFIX))) { 669 669 670 670 memset(buf, 0, sizeof(buf)); 671 memcpy(buf, auth_val, attr->length - sizeof(struct radius_attr_hdr) - strlen(CLASS_AAI_PREFIX));671 memcpy(buf, auth_val, attr->length - sizeof(struct radius_attr_hdr) - CONSTSTRLEN(CLASS_AAI_PREFIX)); 672 672 if (sscanf(buf, "%u", &auth_appl) == 1) { 673 673 TRACE_DEBUG(ANNOYING, "Found Class attribute with '%s' prefix (attr #%d), AAI:%u.", CLASS_AAI_PREFIX, idx, auth_appl); … … 1301 1301 struct msg * str = NULL; 1302 1302 struct msg_hdr * hdr = NULL; 1303 char * fqdn; 1304 char * realm; 1303 DiamId_t fqdn; 1304 size_t fqdn_len; 1305 DiamId_t realm; 1306 size_t realm_len; 1305 1307 union avp_value avp_val; 1306 1308 … … 1323 1325 1324 1326 /* Get information on the NAS */ 1325 CHECK_FCT( rgw_clients_get_origin(cli, &fqdn, & realm) );1327 CHECK_FCT( rgw_clients_get_origin(cli, &fqdn, &fqdn_len, &realm, &realm_len) ); 1326 1328 1327 1329 /* Add the Origin-Host as next AVP */ … … 1329 1331 memset(&avp_val, 0, sizeof(avp_val)); 1330 1332 avp_val.os.data = (unsigned char *)fqdn; 1331 avp_val.os.len = strlen(fqdn);1333 avp_val.os.len = fqdn_len; 1332 1334 CHECK_FCT( fd_msg_avp_setvalue ( avp, &avp_val ) ); 1333 1335 CHECK_FCT( fd_msg_avp_add ( str, MSG_BRW_LAST_CHILD, avp) ); … … 1337 1339 memset(&avp_val, 0, sizeof(avp_val)); 1338 1340 avp_val.os.data = (unsigned char *)realm; 1339 avp_val.os.len = strlen(realm);1341 avp_val.os.len = realm_len; 1340 1342 CHECK_FCT( fd_msg_avp_setvalue ( avp, &avp_val ) ); 1341 1343 CHECK_FCT( fd_msg_avp_add ( str, MSG_BRW_LAST_CHILD, avp) );
Note: See TracChangeset
for help on using the changeset viewer.