libical/libical-0.40-icalvalue-crash.patch
Kevin Kofler 1cedd9fd6a - Update to 0.40.
- Add patch from upstream to fix crash in icalvalue.c.
2008-10-28 05:07:56 +00:00

82 lines
2.1 KiB
Diff

--- trunk/libical/src/libical/icalvalue.c 2008/10/27 16:19:27 890
+++ trunk/libical/src/libical/icalvalue.c 2008/10/27 23:20:34 891
@@ -948,24 +948,29 @@
void print_time_to_string(char* str, const struct icaltimetype *data)
{
char temp[20];
+ str[0] = '\0';
- if (icaltime_is_utc(*data)){
- snprintf(temp,sizeof(temp),"%02d%02d%02dZ",data->hour,data->minute,data->second);
- } else {
- snprintf(temp,sizeof(temp),"%02d%02d%02d",data->hour,data->minute,data->second);
- }
-
- strcat(str,temp);
+ if (data != 0) {
+ if (icaltime_is_utc(*data)){
+ snprintf(temp,sizeof(temp),"%02d%02d%02dZ",data->hour,data->minute,data->second);
+ strncat(str,temp,7);
+ } else {
+ snprintf(temp,sizeof(temp),"%02d%02d%02d",data->hour,data->minute,data->second);
+ strncat(str,temp,6);
+ }
+ }
}
void print_date_to_string(char* str, const struct icaltimetype *data)
{
char temp[20];
+ str[0] = '\0';
- snprintf(temp,sizeof(temp),"%04d%02d%02d",data->year,data->month,data->day);
-
- strcat(str,temp);
+ if (data != 0) {
+ snprintf(temp,sizeof(temp),"%04d%02d%02d",data->year,data->month,data->day);
+ strncat(str,temp,8);
+ }
}
static char* icalvalue_date_as_ical_string_r(const icalvalue* value) {
@@ -977,7 +982,7 @@
str = (char*)icalmemory_new_buffer(9);
- str[0] = 0;
+ str[0] = '\0';
print_date_to_string(str,&data);
return str;
@@ -985,10 +990,17 @@
void print_datetime_to_string(char* str, const struct icaltimetype *data)
{
- print_date_to_string(str,data);
- if ( !data->is_date ) {
- strcat(str,"T");
- print_time_to_string(str,data);
+ char temp[20];
+ str[0] = '\0';
+
+ if (data != 0) {
+ print_date_to_string(str,data);
+ if ( !data->is_date ) {
+ strncat(str,"T",19);
+ temp[0] = '\0';
+ print_time_to_string(temp,data);
+ strncat(str,temp,19);
+ }
}
}
@@ -1013,7 +1025,6 @@
str = (char*)icalmemory_new_buffer(20);
str[0] = 0;
-
print_datetime_to_string(str,&data);
return str;