Fixes crash in #41631
2003-05-07 Rodrigo Moya <rodrigo@ximian.com> Fixes crash in #41631 * src/libicalvcal/icalvcal.c (icalvcal_traverse_objects): changed to return an error code and to return immediately if one of the recurrent calls return an error. (icalvcal_convert_with_defaults): if icalvcal_traverse_objects return an error, return NULL. svn path=/trunk/; revision=21122
This commit is contained in:

committed by
Rodrigo Moya

parent
b01b792f0f
commit
5257f9dc84
@ -1,3 +1,13 @@
|
||||
2003-05-07 Rodrigo Moya <rodrigo@ximian.com>
|
||||
|
||||
Fixes crash in #41631
|
||||
|
||||
* src/libicalvcal/icalvcal.c (icalvcal_traverse_objects): changed to
|
||||
return an error code and to return immediately if one of the recurrent
|
||||
calls return an error.
|
||||
(icalvcal_convert_with_defaults): if icalvcal_traverse_objects return
|
||||
an error, return NULL.
|
||||
|
||||
2003-03-17 Hans Petter Jansson <hpj@ximian.com>
|
||||
|
||||
Part of fix for #34095
|
||||
|
@ -149,10 +149,10 @@ static void convert_floating_time_to_utc (struct icaltimetype *itt)
|
||||
}
|
||||
|
||||
|
||||
static void icalvcal_traverse_objects(VObject *object,
|
||||
icalcomponent* last_comp,
|
||||
icalproperty* last_prop,
|
||||
icalvcal_defaults *defaults)
|
||||
static int icalvcal_traverse_objects(VObject *object,
|
||||
icalcomponent* last_comp,
|
||||
icalproperty* last_prop,
|
||||
icalvcal_defaults *defaults)
|
||||
{
|
||||
VObjectIterator iterator;
|
||||
char* name = "[No Name]";
|
||||
@ -161,8 +161,7 @@ static void icalvcal_traverse_objects(VObject *object,
|
||||
|
||||
if ( vObjectName(object)== 0){
|
||||
printf("ERROR, object has no name");
|
||||
assert(0);
|
||||
return;
|
||||
return 0;
|
||||
}
|
||||
|
||||
name = (char*)vObjectName(object);
|
||||
@ -185,8 +184,7 @@ static void icalvcal_traverse_objects(VObject *object,
|
||||
icalproperty_set_x_name(prop,name);
|
||||
icalcomponent_add_property(last_comp,prop);
|
||||
} else {
|
||||
assert(0);
|
||||
return;
|
||||
return 0;
|
||||
}
|
||||
|
||||
} else {
|
||||
@ -276,12 +274,16 @@ static void icalvcal_traverse_objects(VObject *object,
|
||||
should use it as the 'last_comp' */
|
||||
|
||||
if(subc!=0){
|
||||
icalvcal_traverse_objects(eachProp,subc,last_prop,defaults);
|
||||
if (!icalvcal_traverse_objects(eachProp,subc,last_prop,defaults))
|
||||
return 0;
|
||||
|
||||
} else {
|
||||
icalvcal_traverse_objects(eachProp,last_comp,last_prop,defaults);
|
||||
if (!icalvcal_traverse_objects(eachProp,last_comp,last_prop,defaults))
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
icalcomponent* icalvcal_convert_with_defaults (VObject *object,
|
||||
@ -307,7 +309,8 @@ icalcomponent* icalvcal_convert_with_defaults (VObject *object,
|
||||
printf ("===========================================\n");
|
||||
#endif
|
||||
|
||||
icalvcal_traverse_objects(object,container,0,defaults);
|
||||
if (!icalvcal_traverse_objects(object,container,0,defaults))
|
||||
return 0;
|
||||
|
||||
/* HACK. I am using the extra 'container' component because I am
|
||||
lazy. I know there is a way to get rid of it, but I did not care
|
||||
|
Reference in New Issue
Block a user