Changeset 4557


Ignore:
Timestamp:
07/27/08 08:42:19 (5 years ago)
Author:
tick
Message:

opkg: fix some memory leak and double free issues.

Location:
trunk/src/target/opkg/libopkg
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/target/opkg/libopkg/opkg_cmd.c

    r4475 r4557  
    910910    done = 0; 
    911911 
    912      available = pkg_vec_alloc(); 
    913912     pkg_info_preinstall_check(conf); 
    914913     if ( argc > 0 ) { 
     914        available = pkg_vec_alloc(); 
    915915        pkg_hash_fetch_all_installed(&conf->pkg_hash, available); 
    916916        for (i=0; i < argc; i++) { 
  • trunk/src/target/opkg/libopkg/opkg_remove.c

    r4443 r4557  
    9191    int a; 
    9292    int count; 
    93     pkg_vec_t *dependent_pkgs = pkg_vec_alloc(); 
     93    pkg_vec_t *dependent_pkgs; 
    9494    abstract_pkg_t * ab_pkg; 
    9595 
     
    111111    i = 0; 
    112112    count = 1; 
     113    dependent_pkgs = pkg_vec_alloc(); 
     114 
    113115    while (dependents [i] != NULL) { 
    114116        abstract_pkg_t *dep_ab_pkg = dependents[i]; 
     
    132134    } 
    133135     
    134     if (count == 1) 
    135             return 0; 
     136    if (count == 1) { 
     137        free(dependent_pkgs);   
     138        return 0; 
     139    } 
    136140     
    137141     
     142    int err=0; 
    138143    for (i = 0; i < dependent_pkgs->len; i++) { 
    139         int err = opkg_remove_pkg(conf, dependent_pkgs->pkgs[i],0); 
     144        err = opkg_remove_pkg(conf, dependent_pkgs->pkgs[i],0); 
    140145        if (err) 
    141             return err; 
    142     } 
    143     return 0; 
     146            break; 
     147    } 
     148    free(dependent_pkgs); 
     149    return err; 
    144150} 
    145151 
     
    269275               /* remove packages depending on this package - Karthik */ 
    270276               err = opkg_remove_dependent_pkgs (conf, pkg, dependents); 
    271                free(dependents); 
    272                if (err) return err; 
     277               if (err) { 
     278                 free(dependents); 
     279                 return err; 
     280               } 
    273281          } 
    274282          if (dependents) 
Note: See TracChangeset for help on using the changeset viewer.