Ticket #567: opensync-alarm_trigger.patch

File opensync-alarm_trigger.patch, 2.2 KB (added by wrobell, 5 years ago)

fix segfault when no alarm trigger specified

  • ./formats/vformats-xml/xml-vcal.c

    old new  
    20082008        int duration; 
    20092009        osync_bool isruntime = FALSE; 
    20102010 
    2011         VFormatAttribute *attr = vformat_attribute_new(NULL, "DALARM"); 
    2012  
    20132011        dtstart = osxml_get_node(root->parent, "DateStarted");  
    20142012        value = osxml_find_node(dtstart, "Value"); 
    20152013 
     
    20252023        if (isruntime) { 
    20262024                runtime = startvtime;  
    20272025        /* Duration */   
    2028         } else { 
     2026        } else if (trigger) { 
    20292027                tmp = osxml_find_node(trigger, "Content"); 
    20302028                duration = osync_time_alarmdu2sec(tmp); 
    20312029                g_free(tmp); 
     
    20472045 
    20482046        g_free(value); 
    20492047 
    2050         vformat_attribute_add_value(attr, runtime); 
     2048        VFormatAttribute *attr = vformat_attribute_new(NULL, "DALARM"); 
     2049        if (runtime) { 
     2050                vformat_attribute_add_value(attr, runtime); 
    20512051         
    2052         add_value(attr, root, "AlarmDuration", encoding); 
    2053         add_value(attr, root, "AlarmRepeat", encoding); 
    2054         add_value(attr, root, "AlarmDescription", encoding); 
    2055  
    2056         action = osxml_find_node(root, "AlarmAction"); 
    2057         if (action) { 
    2058                 if (!strcmp(action, "AUDIO")) { 
    2059                         osync_trace(TRACE_INTERNAL, "Handling audo reminder xml attribute"); 
    2060  
    2061                         attr = vformat_attribute_new(NULL, "AALARM"); 
    2062                         vformat_attribute_add_value(attr, runtime); 
    2063                         add_value(attr, root, "AlarmDuration", encoding); 
    2064                         add_value(attr, root, "AlarmRepeat", encoding); 
    2065                         add_value(attr, root, "AlarmDescription", encoding); 
     2052                add_value(attr, root, "AlarmDuration", encoding); 
     2053                add_value(attr, root, "AlarmRepeat", encoding); 
     2054                add_value(attr, root, "AlarmDescription", encoding); 
     2055                 
     2056                action = osxml_find_node(root, "AlarmAction"); 
     2057                if (action) { 
     2058                        if (!strcmp(action, "AUDIO")) { 
     2059                                osync_trace(TRACE_INTERNAL, "Handling audo reminder xml attribute"); 
     2060                 
     2061                                attr = vformat_attribute_new(NULL, "AALARM"); 
     2062                                vformat_attribute_add_value(attr, runtime); 
     2063                                add_value(attr, root, "AlarmDuration", encoding); 
     2064                                add_value(attr, root, "AlarmRepeat", encoding); 
     2065                                add_value(attr, root, "AlarmDescription", encoding); 
     2066                        } 
    20662067                } 
     2068                 
     2069                vformat_add_attribute(vcard, attr); 
     2070                g_free(action); 
     2071                g_free(runtime); 
     2072                 
    20672073        } 
    2068  
    2069         vformat_add_attribute(vcard, attr); 
    2070         g_free(action); 
    2071         g_free(runtime); 
    2072  
    20732074        return attr; 
    20742075} 
    20752076/* end of vcal only */