Changeset 15430


Ignore:
Timestamp:
2009-04-27T03:38:15+02:00 (8 years ago)
Author:
jow
Message:

[package] unvram: get rid of some memory leaks

Location:
trunk/package/unvram
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/package/unvram/Makefile

    r15429 r15430  
    99 
    1010PKG_NAME:=unvram 
    11 PKG_RELEASE:=2 
     11PKG_RELEASE:=3 
    1212 
    1313PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME) 
  • trunk/package/unvram/src/nvram.c

    r15429 r15430  
    339339{ 
    340340        int fd; 
     341        char *mtd = NULL; 
    341342        nvram_handle_t *h; 
    342343        nvram_header_t *header; 
     
    346347        { 
    347348                /* Finding the mtd will set the appropriate erase size */ 
    348                 if( file == NULL ) 
    349                         file = nvram_find_mtd(); 
    350                 else 
    351                         (void) nvram_find_mtd(); 
    352  
    353                 if( nvram_erase_size == 0 ) 
     349                if( (mtd = nvram_find_mtd()) == NULL || nvram_erase_size == 0 ) 
     350                { 
     351                        free(mtd); 
    354352                        return NULL; 
    355         } 
    356  
    357         if( (fd = open(file, O_RDWR)) > -1 ) 
     353                } 
     354        } 
     355 
     356        if( (fd = open(file ? file : mtd, O_RDWR)) > -1 ) 
    358357        { 
    359358                char *mmap_area = (char *) mmap( 
     
    378377                                { 
    379378                                        _nvram_rehash(h); 
     379                                        free(mtd); 
    380380                                        return h; 
    381381                                } 
     
    389389        } 
    390390 
     391        free(mtd); 
    391392        return NULL; 
    392393} 
     
    404405 
    405406/* Determine NVRAM device node. */ 
    406 const char * nvram_find_mtd(void) 
     407char * nvram_find_mtd(void) 
    407408{ 
    408409        FILE *fp; 
     
    412413        struct stat s; 
    413414 
    414         // "/dev/mtdblock/" + ( 0 < x < 99 ) + \0 = 19 
    415         if( (path = (char *) malloc(19)) == NULL ) 
    416                 return NULL; 
    417  
    418         if ((fp = fopen("/proc/mtd", "r"))) { 
    419                 while (fgets(dev, sizeof(dev), fp)) { 
    420                         if (strstr(dev, "nvram") && sscanf(dev, "mtd%d: %08x", &i, &esz)) 
     415        if( (fp = fopen("/proc/mtd", "r")) ) 
     416        { 
     417                while( fgets(dev, sizeof(dev), fp) ) 
     418                { 
     419                        if( strstr(dev, "nvram") && sscanf(dev, "mtd%d: %08x", &i, &esz) ) 
    421420                        { 
    422421                                nvram_erase_size = esz; 
     
    452451 
    453452/* Check NVRAM staging file. */ 
    454 const char * nvram_find_staging(void) 
     453char * nvram_find_staging(void) 
    455454{ 
    456455        struct stat s; 
     
    468467{ 
    469468        int fdmtd, fdstg, stat; 
    470         const char *mtd = nvram_find_mtd(); 
     469        char *mtd = nvram_find_mtd(); 
    471470        char buf[nvram_erase_size]; 
    472471 
     
    493492        } 
    494493 
     494        free(mtd); 
    495495        return stat; 
    496496} 
     
    500500{ 
    501501        int fdmtd, fdstg, stat; 
    502         const char *mtd = nvram_find_mtd(); 
     502        char *mtd = nvram_find_mtd(); 
    503503        char buf[nvram_erase_size]; 
    504504 
     
    527527        } 
    528528 
     529        free(mtd); 
    529530        return stat; 
    530531} 
  • trunk/package/unvram/src/nvram.h

    r15429 r15430  
    9191 
    9292/* Determine NVRAM device node. */ 
    93 const char * nvram_find_mtd(void); 
     93char * nvram_find_mtd(void); 
    9494 
    9595/* Copy NVRAM contents to staging file. */ 
     
    100100 
    101101/* Check NVRAM staging file. */ 
    102 const char * nvram_find_staging(void); 
     102char * nvram_find_staging(void); 
    103103 
    104104 
Note: See TracChangeset for help on using the changeset viewer.