Преглед изворни кода

rr(s): fix recently introduced avp_cookie name bug

- fix bug introduced in 34dc702 (while trying to fix pointer
  aliasing warnings)
Andrei Pelinescu-Onciul пре 15 година
родитељ
комит
1c588c85a0
1 измењених фајлова са 7 додато и 2 уклоњено
  1. 7 2
      modules_s/rr/avp_cookie.c

+ 7 - 2
modules_s/rr/avp_cookie.c

@@ -56,6 +56,9 @@ str *rr_get_avp_cookies(void) {
 	str *avp_name;
 	str *result = 0;
 	rr_avp_flags_t avp_flags;
+	struct str_int_data *sid;
+	struct str_str_data *ssd;
+
 
 	len = sizeof(crc);
 	for (avp_list_no=0; avp_list_no<MAX_AVP_DIALOG_LISTS; avp_list_no++) {
@@ -66,11 +69,13 @@ str *rr_get_avp_cookies(void) {
 
 			if ((avp->flags&(AVP_NAME_STR|AVP_VAL_STR)) == AVP_NAME_STR) {
 				/* avp type str, int value */
-				avp_name = &  ((struct str_int_data*)avp->d.p)->name;
+				sid = (struct str_int_data*)&avp->d.data[0];
+				avp_name = &sid->name;
 			}
 			else if ((avp->flags&(AVP_NAME_STR|AVP_VAL_STR)) == (AVP_NAME_STR|AVP_VAL_STR)) {
 				/* avp type str, str value */
-				avp_name = & ((struct str_str_data*)avp->d.p)->name;
+				ssd = (struct str_str_data*)&avp->d.data[0];
+				avp_name = &ssd->name;
 			}
 			else
 				avp_name = 0;  /* dummy */