Changeset 350

Show
Ignore:
Timestamp:
02/01/08 14:49:47 (10 months ago)
Author:
bellmich
Message:

- introduced safe_(c)free to sml_elements
- removed a wrong g_free on a char array (digest[16])

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/libsyncml/sml_elements.c

    r338 r350  
    8989                 
    9090                if (loc->locURI) 
    91                         g_free(loc->locURI); 
     91                        smlSafeCFree(&(loc->locURI)); 
    9292                         
    9393                if (loc->locName) 
    94                         g_free(loc->locName); 
     94                        smlSafeCFree(&(loc->locName)); 
    9595                         
    96                 g_free(loc); 
     96                smlSafeFree((gpointer *)&loc); 
    9797        } 
    9898         
     
    117117        smlAssert(name); 
    118118        if (loc->locName) 
    119                 g_free(loc->locName); 
     119                smlSafeCFree(&(loc->locName)); 
    120120        loc->locName = g_strdup(name); 
    121121} 
     
    148148         
    149149        if (target->locURI) 
    150                 g_free(target->locURI); 
     150                smlSafeCFree(&(target->locURI)); 
    151151                 
    152152        if (target->locName) 
    153                 g_free(target->locName); 
     153                smlSafeCFree(&(target->locName)); 
    154154                 
    155155        target->locURI = g_strdup(source->locURI); 
     
    168168                char *buffer = g_strndup(output, g_strrstr(output, needle) - output); 
    169169                char *buffer2 = g_strconcat(buffer, replacement ? replacement : "", g_strrstr(output, needle) + strlen(needle), NULL); 
    170                 g_free(output); 
     170                smlSafeCFree(&output); 
    171171                output = buffer2; 
    172                 g_free(buffer); 
     172                smlSafeCFree(&buffer); 
    173173        } 
    174174         
     
    185185        char *buffer = strreplace(url, "./", ""); 
    186186        char *buffer2 = strreplace(buffer, "//", "/"); 
    187         g_free(buffer); 
     187        smlSafeCFree(&buffer); 
    188188         
    189189        if (buffer2[strlen(buffer2) - 1] == '/') 
     
    219219                buffer = g_strconcat(urlroot->locURI, "/", buffer2, NULL); 
    220220                cmpurl = normalizeUrl(buffer); 
    221                 g_free(buffer); 
    222                 g_free(buffer2); 
     221                smlSafeCFree(&buffer); 
     222                smlSafeCFree(&buffer2); 
    223223        } 
    224224         
     
    229229                buffer = g_strconcat(objectroot->locURI, "/", buffer2, NULL); 
    230230                cmpobjurl = normalizeUrl(buffer); 
    231                 g_free(buffer); 
    232                 g_free(buffer2); 
     231                smlSafeCFree(&buffer); 
     232                smlSafeCFree(&buffer2); 
    233233        } 
    234234         
     
    241241                ret = TRUE; 
    242242         
    243         g_free(cmpobjurl); 
    244         g_free(cmpurl); 
     243        smlSafeCFree(&cmpobjurl); 
     244        smlSafeCFree(&cmpurl); 
    245245         
    246246        smlTrace(TRACE_EXIT, "%s: %i", __func__, ret); 
     
    279279        smlAssert(anchor); 
    280280        if (anchor->last) 
    281                 g_free(anchor->last); 
     281                smlSafeCFree(&(anchor->last)); 
    282282                 
    283283        if (anchor->next) 
    284                 g_free(anchor->next); 
    285                  
    286         g_free(anchor); 
     284                smlSafeCFree(&(anchor->next)); 
     285                 
     286        smlSafeFree((gpointer *)&anchor); 
    287287         
    288288        smlTrace(TRACE_EXIT, "%s", __func__); 
     
    294294         
    295295        if (header->sessionID) 
    296                 g_free(header->sessionID); 
     296                smlSafeCFree(&(header->sessionID)); 
    297297 
    298298        if (header->emi) 
    299                 g_free(header->emi); 
     299                smlSafeCFree(&(header->emi)); 
    300300 
    301301        if (header->source) 
     
    305305                smlLocationUnref(header->target); 
    306306         
    307         g_free(header); 
     307        smlSafeFree((gpointer *)&header); 
    308308         
    309309        smlTrace(TRACE_EXIT, "%s", __func__); 
     
    385385                 
    386386                if (item->contenttype) 
    387                         g_free(item->contenttype); 
    388                  
    389                 g_free(item); 
    390                 item = NULL; 
     387                        smlSafeCFree(&(item->contenttype)); 
     388                 
     389                smlSafeFree((gpointer *)&item); 
    391390        } 
    392391         
     
    586585                char *plain = g_strjoin(":", username, password, NULL); 
    587586                data = g_base64_encode(plain, strlen(plain)); 
    588                 g_free(plain); 
     587                smlSafeCFree(&plain); 
    589588        } else if (type == SML_AUTH_TYPE_MD5) { 
    590589                char *plain = g_strjoin(":", username, password, NULL); 
    591590                unsigned char digest[16]; 
    592591                smlMD5GetDigest(plain, strlen(plain), digest); 
    593                 g_free(plain); 
     592                smlSafeCFree(&plain); 
    594593                data = smlMD5ToString(digest, NULL); 
    595                 g_free(digest); 
     594                // digest must not be freed because it is a char array 
    596595        } else { 
    597596                smlErrorSet(error, SML_ERROR_GENERIC, "Unknown type - %s (%s).", type, __func__); 
     
    603602        //     the username is not readable from data => REQUIRED (e.g. syncml:auth-md5) 
    604603        SmlCred *cred = smlCredNew(type, format, data, username, error); 
    605         g_free(data); 
     604        smlSafeCFree(&data); 
    606605 
    607606        smlTrace(TRACE_EXIT, "%s", __func__); 
     
    609608error: 
    610609        if (data) 
    611                 g_free(data); 
     610                smlSafeCFree(&data); 
    612611        smlTrace(TRACE_EXIT_ERROR, "%s: %s", __func__, smlErrorPrint(error)); 
    613612        return NULL;     
     
    639638error: 
    640639        if (cred->data) 
    641                 g_free(cred->data); 
     640                smlSafeCFree(&(cred->data)); 
    642641        if (cred->locName) 
    643                 g_free(cred->locName); 
     642                smlSafeCFree(&(cred->locName)); 
    644643        if (cred) 
    645                 g_free(cred); 
     644                smlSafeFree((gpointer *)&cred); 
    646645        smlTrace(TRACE_EXIT_ERROR, "%s: %s", __func__, smlErrorPrint(error)); 
    647646        return NULL; 
     
    668667                 
    669668                if (cred->data) 
    670                         g_free(cred->data); 
     669                        smlSafeCFree(&(cred->data)); 
    671670                if (cred->locName) 
    672                         g_free(cred->locName); 
     671                        smlSafeCFree(&(cred->locName)); 
    673672                         
    674                 g_free(cred); 
     673                smlSafeFree((gpointer *)&cred); 
    675674        } 
    676675         
     
    690689         
    691690        if (chal->nonce) 
    692                 g_free(chal->nonce); 
    693          
    694         g_free(chal); 
     691                smlSafeCFree(&(chal->nonce)); 
     692         
     693        smlSafeFree((gpointer *)&chal); 
    695694         
    696695        smlTrace(TRACE_EXIT, "%s", __func__); 
     
    722721        smlLocationUnref(item->source); 
    723722error_free_item: 
    724         g_free(item); 
     723        smlSafeFree((gpointer *)&item); 
    725724error: 
    726725        smlTrace(TRACE_EXIT_ERROR, "%s: %s", __func__, smlErrorPrint(error)); 
     
    748747                 
    749748                if (item->source) 
     749                { 
    750750                        smlLocationUnref(item->source); 
     751                        item->source = NULL; 
     752                } 
    751753                 
    752754                if (item->target) 
     755                { 
    753756                        smlLocationUnref(item->target); 
     757                        item->target = NULL; 
     758                } 
    754759                         
    755                 g_free(item); 
     760                smlSafeFree((gpointer *)&item); 
    756761        } 
    757762