Selaa lähdekoodia

core: proper cloning of xavp list with no-data type

- function used for cloning xavps stored in location record
- reported by Luca Mularoni
Daniel-Constantin Mierla 10 vuotta sitten
vanhempi
commit
4efb386ebf
1 muutettua tiedostoa jossa 3 lisäystä ja 1 poistoa
  1. 3 1
      xavp.c

+ 3 - 1
xavp.c

@@ -641,6 +641,7 @@ sr_xavp_t *xavp_clone_level_nodata(sr_xavp_t *xold)
 		LM_ERR("cannot create cloned root xavp\n");
 		LM_ERR("cannot create cloned root xavp\n");
 		return NULL;
 		return NULL;
 	}
 	}
+	LM_DBG("cloned root xavp [%.*s]\n", xold->name.len, xold->name.s);
 
 
 	if(xold->val.type!=SR_XTYPE_XAVP)
 	if(xold->val.type!=SR_XTYPE_XAVP)
 	{
 	{
@@ -667,15 +668,16 @@ sr_xavp_t *xavp_clone_level_nodata(sr_xavp_t *xold)
 					return NULL;
 					return NULL;
 				}
 				}
 			}
 			}
+			LM_DBG("cloned inner xavp [%.*s]\n", oavp->name.len, oavp->name.s);
 			if(xnew->val.v.xavp == NULL)
 			if(xnew->val.v.xavp == NULL)
 			{
 			{
 				/* link to val in head xavp */
 				/* link to val in head xavp */
 				xnew->val.v.xavp = navp;
 				xnew->val.v.xavp = navp;
-				pavp = navp;
 			} else {
 			} else {
 				/* link to prev xavp in the list */
 				/* link to prev xavp in the list */
 				pavp->next = navp;
 				pavp->next = navp;
 			}
 			}
+			pavp = navp;
 		}
 		}
 		oavp = oavp->next;
 		oavp = oavp->next;
 	}
 	}