Changeset 403:26aafbbc1640 in freeDiameter for extensions/app_radgw/rgwx_auth.c
- Timestamp:
- Jul 8, 2010, 2:24:19 PM (14 years ago)
- Branch:
- default
- Phase:
- public
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
extensions/app_radgw/rgwx_auth.c
r388 r403 236 236 const char * prefix = "Diameter/"; 237 237 size_t pref_len; 238 char* dh = NULL;238 uint8_t * dh = NULL; 239 239 size_t dh_len = 0; 240 char* dr = NULL;240 uint8_t * dr = NULL; 241 241 size_t dr_len = 0; 242 char* si = NULL;242 uint8_t * si = NULL; 243 243 size_t si_len = 0; 244 char* un = NULL;244 uint8_t * un = NULL; 245 245 size_t un_len = 0; 246 uint32_t status_type;247 246 size_t nattr_used = 0; 248 247 struct avp ** avp_tun = NULL, *avp = NULL; … … 316 315 for (idx = 0; idx < rad_req->attr_used; idx++) { 317 316 struct radius_attr_hdr * attr = (struct radius_attr_hdr *)(rad_req->buf + rad_req->attr_pos[idx]); 318 char * attr_val = (char*)(attr + 1);317 uint8_t * attr_val = (uint8_t *)(attr + 1); 319 318 size_t attr_len = attr->length - sizeof(struct radius_attr_hdr); 320 319 … … 343 342 case RADIUS_ATTR_STATE: 344 343 if ((attr_len > pref_len + 5 /* for the '/'s and non empty strings */ ) 345 && ! strncmp(attr_val, prefix, pref_len)) { /* should we make it strncasecmp? */344 && ! memcmp(attr_val, prefix, pref_len)) { 346 345 int i, start; 347 346 … … 376 375 377 376 case RADIUS_ATTR_USER_NAME: 378 TRACE_DEBUG(ANNOYING, "Found a User-Name attribute: '%.*s'", attr_len, attr_len ? attr_val : "");377 TRACE_DEBUG(ANNOYING, "Found a User-Name attribute: '%.*s'", attr_len, attr_len ? (char *)attr_val : ""); 379 378 un = attr_val; 380 379 un_len = attr_len; … … 430 429 if (i <= 0) { 431 430 /* Not found in the User-Name => we use the local domain of this gateway */ 432 value.os.data = fd_g_config->cnf_diamrlm;431 value.os.data = (uint8_t *)fd_g_config->cnf_diamrlm; 433 432 value.os.len = fd_g_config->cnf_diamrlm_len; 434 433 } else { … … 455 454 if (si_len) { 456 455 /* We already have the Session-Id, just use it */ 457 CHECK_FCT( fd_sess_fromsid ( si, si_len, session, NULL) );456 CHECK_FCT( fd_sess_fromsid ( (char *) /* this cast will be removed later */ si, si_len, session, NULL) ); 458 457 } else { 459 458 /* Create a new Session-Id string */ … … 544 543 if (got_empty_eap) { 545 544 value.os.len = 0; 546 value.os.data = "";545 value.os.data = (uint8_t *)""; 547 546 } else { 548 547 CHECK_MALLOC( value.os.data = radius_msg_get_eap(rad_req, &value.os.len) ); … … 1066 1065 struct avp *avp, *next, *avp_x, *avp_y, *asid, *aoh; 1067 1066 struct avp_hdr *ahdr, *sid, *oh; 1068 char buf[254]; /* to store some attributes values (with final '\0') */ 1067 uint8_t buf[254]; /* to store some attributes values (with final '\0') */ 1068 size_t sz; 1069 1069 int ta_set = 0; 1070 1070 int no_str = 0; /* indicate if an STR is required for this server */ … … 1189 1189 /* Now, save the session-id and eventually server info in a STATE or CLASS attribute */ 1190 1190 if ((*rad_fw)->hdr->code == RADIUS_CODE_ACCESS_CHALLENGE) { 1191 if (sizeof(buf) < snprintf(buf, sizeof(buf), "Diameter/%.*s/%.*s/%.*s",1192 oh->avp_value->os.len, oh->avp_value->os.data,1193 ahdr->avp_value->os.len, ahdr->avp_value->os.data,1194 sid->avp_value->os.len, sid->avp_value->os.data)) {1191 if (sizeof(buf) < (sz = snprintf((char *)buf, sizeof(buf), "Diameter/%.*s/%.*s/%.*s", 1192 oh->avp_value->os.len, (char *)oh->avp_value->os.data, 1193 ahdr->avp_value->os.len, (char *)ahdr->avp_value->os.data, 1194 sid->avp_value->os.len, (char *)sid->avp_value->os.data))) { 1195 1195 TRACE_DEBUG(INFO, "Data truncated in State attribute: %s", buf); 1196 1196 } 1197 CONV2RAD_STR(RADIUS_ATTR_STATE, buf, s trlen(buf), 0);1197 CONV2RAD_STR(RADIUS_ATTR_STATE, buf, sz, 0); 1198 1198 } 1199 1199 1200 1200 if ((*rad_fw)->hdr->code == RADIUS_CODE_ACCESS_ACCEPT) { 1201 1201 /* Add the Session-Id */ 1202 if (sizeof(buf) < snprintf(buf, sizeof(buf), "Diameter/%.*s",1203 sid->avp_value->os.len, sid->avp_value->os.data)) {1202 if (sizeof(buf) < (sz = snprintf((char *)buf, sizeof(buf), "Diameter/%.*s", 1203 sid->avp_value->os.len, sid->avp_value->os.data))) { 1204 1204 TRACE_DEBUG(INFO, "Data truncated in Class attribute: %s", buf); 1205 1205 } 1206 CONV2RAD_STR(RADIUS_ATTR_CLASS, buf, s trlen(buf), 0);1206 CONV2RAD_STR(RADIUS_ATTR_CLASS, buf, sz, 0); 1207 1207 } 1208 1208 … … 1587 1587 CHECK_FCT( fd_msg_avp_hdr ( inavp, &ahdr ) ); 1588 1588 1589 if ( ahdr->avp_flags & AVP_FLAG_VENDOR == 0) {1589 if ( ! (ahdr->avp_flags & AVP_FLAG_VENDOR)) { 1590 1590 switch (ahdr->avp_code) { 1591 1591 case DIAM_ATTR_TUNNEL_TYPE: … … 1634 1634 size_t pos; 1635 1635 int i; 1636 size_t buflen;1637 1636 uint8_t * secret; /* S */ 1638 1637 size_t secret_len; … … 1653 1652 1654 1653 /* The plain text string P */ 1655 CHECK_PARAM (ahdr->avp_value->os.len < 240);1654 CHECK_PARAMS(ahdr->avp_value->os.len < 240); 1656 1655 buf[3] = ahdr->avp_value->os.len; 1657 1656 memcpy(&buf[4], ahdr->avp_value->os.data, ahdr->avp_value->os.len); … … 1817 1816 /* Add the auth-application-id required for STR, or 0 if no STR is required */ 1818 1817 CHECK_FCT( fd_msg_hdr( *diam_ans, &hdr ) ); 1819 if (sizeof(buf) < snprintf(buf, sizeof(buf), CLASS_AAI_PREFIX "%u",1820 no_str ? 0 : hdr->msg_appl)) {1818 if (sizeof(buf) < (sz = snprintf((char *)buf, sizeof(buf), CLASS_AAI_PREFIX "%u", 1819 no_str ? 0 : hdr->msg_appl))) { 1821 1820 TRACE_DEBUG(INFO, "Data truncated in Class attribute: %s", buf); 1822 1821 } 1823 CONV2RAD_STR(RADIUS_ATTR_CLASS, buf, s trlen(buf), 0);1822 CONV2RAD_STR(RADIUS_ATTR_CLASS, buf, sz, 0); 1824 1823 } 1825 1824
Note: See TracChangeset
for help on using the changeset viewer.