Changeset 2103

Show
Ignore:
Timestamp:
06/09/07 01:12:14 (1 year ago)
Author:
dgollub
Message:

Fixed memory leaks, invalid read of size, ...

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • plugins/gnokii-sync/src/gnokii_contact.c

    r2102 r2103  
    359359        gn_phonebook_entry *contact = NULL; 
    360360        gn_memory_status memstat; 
    361         gn_data *data = (gn_data *) malloc(sizeof(gn_data)); 
    362  
    363         memset(data, 0, sizeof(gn_data)); 
     361        gn_data *data = osync_try_malloc0(sizeof(gn_data), &error);  
    364362 
    365363        OSyncObjTypeSink *sink = osync_plugin_info_get_sink(info); 
     
    422420                                continue; 
    423421 
     422                        // prepare UID with gnokii-contact-<memory type>-<memory location> 
     423                        uid = gnokii_contact_uid(contact); 
     424 
    424425                        hash = gnokii_contact_hash(contact); 
    425426                        OSyncChangeType type = osync_hashtable_get_changetype(sinkenv->hashtable, uid, hash); 
     
    427428                        if (type == OSYNC_CHANGE_TYPE_UNMODIFIED) { 
    428429                                g_free(hash); 
     430                                g_free(uid); 
     431                                g_free(contact); 
    429432                                continue; 
    430433                        } 
     
    434437                        OSyncChange *change = osync_change_new(&error); 
    435438 
    436                         // prepare UID with gnokii-contact-<memory type>-<memory location> 
    437                         uid = gnokii_contact_uid(contact); 
    438439 
    439440                        osync_change_set_uid(change, uid); 
     
    443444                        // set data 
    444445                        osync_trace(TRACE_INTERNAL, "objformat: %p", sinkenv->objformat); 
    445                         OSyncData *data = osync_data_new((char *) contact, sizeof(gn_phonebook_entry), sinkenv->objformat, &error); 
    446                         if (!data) { 
     446                        OSyncData *odata = osync_data_new((char *) contact, sizeof(gn_phonebook_entry), sinkenv->objformat, &error); 
     447                        if (!odata) { 
    447448                                osync_change_unref(change); 
    448449                                osync_context_report_osyncwarning(ctx, error); 
     
    450451                                g_free(hash); 
    451452                                g_free(uid); 
     453                                g_free(contact); 
    452454                                continue; 
    453455                        } 
    454456 
    455                         osync_data_set_objtype(data, osync_objtype_sink_get_name(sink)); 
    456                         osync_change_set_data(change, data); 
    457                         osync_data_unref(data); 
     457                        osync_data_set_objtype(odata, osync_objtype_sink_get_name(sink)); 
     458                        osync_change_set_data(change, odata); 
     459                        osync_data_unref(odata); 
    458460 
    459461                        osync_context_report_change(ctx, change); 
     
    466468                        g_free(hash); 
    467469                        g_free(uid); 
    468  
    469470                } 
    470471        } 
     472 
     473        g_free(data); 
    471474 
    472475 
  • plugins/gnokii-sync/src/gnokii_contact_format.c

    r2101 r2103  
    3434static osync_bool conv_gnokii_contact_to_xmlformat(char *input, unsigned int inpsize, char **output, unsigned int *outpsize, osync_bool *free_input, const char *config, OSyncError **error) 
    3535{ 
    36         osync_trace(TRACE_ENTRY, "%s(%p, %p, %i, %p, %p, %p, %s, %p)", __func__, input, inpsize, output, outpsize, free_input, config, error); 
     36        osync_trace(TRACE_ENTRY, "%s(%p, %i, %p, %p, %p, %s, %p)", __func__, input, inpsize, output, outpsize, free_input, config, error); 
    3737 
    3838        OSyncXMLField *xmlfield = NULL; 
  • plugins/gnokii-sync/src/gnokii_sync.c

    r2102 r2103  
    2424        osync_trace(TRACE_ENTRY, "%s()", __func__); 
    2525 
     26        while (env->sinks) { 
     27                gnokii_sinkenv *sinkenv = env->sinks->data; 
     28 
     29                osync_objtype_sink_unref(sinkenv->sink); 
     30                g_free(sinkenv); 
     31 
     32                env->sinks = g_list_remove(env->sinks, sinkenv); 
     33        } 
     34 
    2635        if (env->state) 
    2736                g_free(env->state); 
     
    117126        free_gnokiienv(env); 
    118127 
     128 
    119129        osync_trace(TRACE_EXIT, "%s", __func__); 
    120130} 
     
    131141        GList *s = NULL; 
    132142        for (s = env->sinks; s; s = s->next) { 
    133                 OSyncObjTypeSink *sink = s->data; 
    134                 osync_objtype_sink_set_available(sink, TRUE); 
     143                gnokii_sinkenv *sinkenv = s->data; 
     144                osync_objtype_sink_set_available(sinkenv->sink, TRUE); 
    135145        } 
    136146 
     
    222232 
    223233        env->sinks = g_list_append(env->sinks, event_sinkenv); 
    224  
    225234         
    226235        //Process the config data here and set the options on your environment