author | erik <erik> | 2007-01-24 19:46:19 (UTC) |
---|---|---|
committer | erik <erik> | 2007-01-24 19:46:19 (UTC) |
commit | a017bf21dd89159052f2f7a3fbc043a24956c08c (patch) (side-by-side diff) | |
tree | 008be2b62ee5487dc55b8a7c7f043c94268f8362 /noncore | |
parent | a4a7bd22feb060a80e20c81cded43cc24f5cd423 (diff) | |
download | opie-a017bf21dd89159052f2f7a3fbc043a24956c08c.zip opie-a017bf21dd89159052f2f7a3fbc043a24956c08c.tar.gz opie-a017bf21dd89159052f2f7a3fbc043a24956c08c.tar.bz2 |
Every file in this commit has a memory leak of some kind or another. I think
all of them are minor and should not effect properly running code. But if I
were you I would give libstocks and the stockticker plugin in Today a wide
berth. That library is atrocious.
-rw-r--r-- | noncore/apps/opie-reader/Bkmks.cpp | 1 | ||||
-rw-r--r-- | noncore/apps/opie-sheet/Excel.cpp | 4 | ||||
-rw-r--r-- | noncore/apps/zsafe/zsafe.cpp | 57 | ||||
-rw-r--r-- | noncore/comm/keypebble/vncauth.c | 6 | ||||
-rw-r--r-- | noncore/net/ftplib/ftplib.c | 4 | ||||
-rw-r--r-- | noncore/todayplugins/stockticker/libstocks/csv.c | 140 | ||||
-rw-r--r-- | noncore/todayplugins/stockticker/libstocks/currency.c | 1 | ||||
-rw-r--r-- | noncore/todayplugins/stockticker/libstocks/lists.h | 1 | ||||
-rw-r--r-- | noncore/todayplugins/stockticker/libstocks/stocks.c | 189 |
9 files changed, 246 insertions, 157 deletions
diff --git a/noncore/apps/opie-reader/Bkmks.cpp b/noncore/apps/opie-reader/Bkmks.cpp index 00141a3..45aa045 100644 --- a/noncore/apps/opie-reader/Bkmks.cpp +++ b/noncore/apps/opie-reader/Bkmks.cpp @@ -344,4 +344,5 @@ Bkmk* BkmkFile::read05(BkmkFile* /*_this*/, FILE* f) fread(&pos,sizeof(pos),1,f); b = new Bkmk(nm,anno,pos); + delete [] anno; } } diff --git a/noncore/apps/opie-sheet/Excel.cpp b/noncore/apps/opie-sheet/Excel.cpp index 51fe707..27080e9 100644 --- a/noncore/apps/opie-sheet/Excel.cpp +++ b/noncore/apps/opie-sheet/Excel.cpp @@ -378,5 +378,7 @@ char* ExcelBook::GetDataOfBREC(ExcelBREC* record) if(record->data==NULL) { - ConvertCharToArray(record,Read(record->position,record->length),record->length); + char* readData = Read(record->position,record->length); + ConvertCharToArray(record,readData,record->length); + delete [] readData; }; return record->data;//new? diff --git a/noncore/apps/zsafe/zsafe.cpp b/noncore/apps/zsafe/zsafe.cpp index f70f863..9c0c6ce 100644 --- a/noncore/apps/zsafe/zsafe.cpp +++ b/noncore/apps/zsafe/zsafe.cpp @@ -1769,10 +1769,12 @@ int ZSafe::loadInit(const char* _filename, const char *password) fd = fopen (_filename, "rb"); - QFileInfo f (_filename); - load_buffer_length = f.size(); - load_buffer_length = ((load_buffer_length / 1024)+1) * 1024 * 2; + QFileInfo f (_filename); + load_buffer_length = f.size(); + load_buffer_length = ((load_buffer_length / 1024)+1) * 1024 * 2; - if (fd == NULL) + if (fd == NULL) { + delete krc2; return PWERR_OPEN; + } buffer = (char *)malloc(load_buffer_length); @@ -1789,6 +1791,8 @@ int ZSafe::loadInit(const char* _filename, const char *password) #endif - if (size < 8) + if (size < 8) { + delete krc2; return PWERR_DATA; + } for (count = 0; count < 4; count++) { @@ -1810,4 +1814,5 @@ int ZSafe::loadInit(const char* _filename, const char *password) #endif if (count2 == 0) { + delete krc2; return PWERR_DATA; } @@ -1830,4 +1835,5 @@ int ZSafe::loadInit(const char* _filename, const char *password) buffer[bufferIndex + 1] = '\0'; } /* while ((count = read (fileno (fd), (unsigned char *) charbuf, 8)) > 0) */ + delete krc2; size -= buffer[size - 1]; lastcount = 0; @@ -2100,26 +2106,13 @@ int ZSafe::saveInit(const char *_filename, const char *password) Krc2* krc2 = new Krc2(); - /* first we should check the permissions of the filename */ -/* - if (QFile::exists(_filename)) { - val = checkFile(_filename); - if (val != PWERR_GOOD) - return val; - } else - { - val = creat (_filename, (S_IRUSR | S_IWUSR)); - if (val == -1) - return PWERR_OPEN; - else - close(val); - } -*/ - QFileInfo f (_filename); - save_buffer_length = f.size(); - save_buffer_length = ((save_buffer_length / 1024)+1) * 1024; + QFileInfo f (_filename); + save_buffer_length = f.size(); + save_buffer_length = ((save_buffer_length / 1024)+1) * 1024; fd = fopen (_filename, "wb"); - if (fd == NULL) + if (fd == NULL) { + delete krc2; return PWERR_OPEN; + } buffer = (char*)malloc(save_buffer_length); @@ -2131,4 +2124,5 @@ int ZSafe::saveInit(const char *_filename, const char *password) keylength = j; krc2->rc2_expandkey (key, keylength, 128); + delete krc2; /* First, we make the IV */ @@ -2189,6 +2183,12 @@ int ZSafe::saveEntry(char *entry[FIELD_SIZE]) /* reset the buffer index */ bufferIndex = 0; - if (putc ((unsigned char) (ciphertext[count3] >> 8), fd) == EOF) return PWERR_DATA; - if (putc ((unsigned char) (ciphertext[count3] & 0xff), fd) == EOF) return PWERR_DATA; + if (putc ((unsigned char) (ciphertext[count3] >> 8), fd) == EOF) { + delete krc2; + return PWERR_DATA; + } + if (putc ((unsigned char) (ciphertext[count3] & 0xff), fd) == EOF) { + delete krc2; + return PWERR_DATA; + } } /*for (count3 = 0; count3 < 5; count3++)*/ } /*if (bufferIndex == 5)*/ @@ -2196,6 +2196,6 @@ int ZSafe::saveEntry(char *entry[FIELD_SIZE]) count2 += 2; } /*while (count2 < strlen (buffer))*/ - int ret = PWERR_GOOD; - return ret; + delete krc2; + return PWERR_GOOD; } @@ -2229,4 +2229,5 @@ int ZSafe::saveFinalize(void) fclose (fd); free(buffer); + delete krc2; return retval; } diff --git a/noncore/comm/keypebble/vncauth.c b/noncore/comm/keypebble/vncauth.c index 277d145..7de837a 100644 --- a/noncore/comm/keypebble/vncauth.c +++ b/noncore/comm/keypebble/vncauth.c @@ -95,5 +95,8 @@ vncDecryptPasswdFromFile(char *fname) unsigned char *passwd = (unsigned char *)malloc(9); - if ((fp = fopen(fname,"r")) == NULL) return NULL; + if ((fp = fopen(fname,"r")) == NULL) { + free(passwd); + return NULL; + } for (i = 0; i < 8; i++) { @@ -101,4 +104,5 @@ vncDecryptPasswdFromFile(char *fname) if (ch == EOF) { fclose(fp); + free(passwd); return NULL; } diff --git a/noncore/net/ftplib/ftplib.c b/noncore/net/ftplib/ftplib.c index efcd6f0..addf9d2 100644 --- a/noncore/net/ftplib/ftplib.c +++ b/noncore/net/ftplib/ftplib.c @@ -1173,5 +1173,9 @@ static int FtpXfer(const char *localfile, const char *path, local = (typ == FTPLIB_FILE_WRITE) ? stdin : stdout; if (!FtpAccess(path, typ, mode, nControl, &nData)) + { + if (localfile != NULL) + fclose(local); return 0; + } dbuf = malloc(FTPLIB_BUFSIZ); if (typ == FTPLIB_FILE_WRITE) diff --git a/noncore/todayplugins/stockticker/libstocks/csv.c b/noncore/todayplugins/stockticker/libstocks/csv.c index 86d8607..110df7c 100644 --- a/noncore/todayplugins/stockticker/libstocks/csv.c +++ b/noncore/todayplugins/stockticker/libstocks/csv.c @@ -142,5 +142,9 @@ stock *parse_csv_file(char *csv) ptr = csv_strtok(line, ","); - if (!ptr) return 0; + if (!ptr) + { + free_stock(StockPtr); + return 0; + } symbol = (char *)malloc(strlen(ptr)+1); @@ -155,5 +159,9 @@ stock *parse_csv_file(char *csv) ptr = csv_strtok(NULL, ","); - if (!ptr) return 0; + if (!ptr) + { + free_stock(StockPtr); + return 0; + } name = (char *)malloc(strlen(ptr)+1); @@ -168,9 +176,17 @@ stock *parse_csv_file(char *csv) ptr = csv_strtok(NULL, ","); - if (!ptr) return 0; + if (!ptr) + { + free_stock(StockPtr); + return 0; + } sscanf(ptr,"%f",&(StockPtr->CurrentPrice)); ptr = csv_strtok(NULL, ","); - if (!ptr) return 0; + if (!ptr) + { + free_stock(StockPtr); + return 0; + } date = (char *)malloc(strlen(ptr)+1); @@ -185,5 +201,9 @@ stock *parse_csv_file(char *csv) ptr = csv_strtok(NULL, ","); - if (!ptr) return 0; + if (!ptr) + { + free_stock(StockPtr); + return 0; + } time = (char *)malloc(strlen(ptr)+1); @@ -198,5 +218,9 @@ stock *parse_csv_file(char *csv) ptr = csv_strtok(NULL, ","); - if (!ptr) return 0; + if (!ptr) + { + free_stock(StockPtr); + return 0; + } sscanf(ptr,"%f",&(StockPtr->Variation)); @@ -207,17 +231,33 @@ stock *parse_csv_file(char *csv) ptr = csv_strtok(NULL, ","); - if (!ptr) return 0; + if (!ptr) + { + free_stock(StockPtr); + return 0; + } sscanf(ptr,"%f",&(StockPtr->OpenPrice)); ptr = csv_strtok(NULL, ","); - if (!ptr) return 0; + if (!ptr) + { + free_stock(StockPtr); + return 0; + } sscanf(ptr,"%f",&(StockPtr->MaxPrice)); ptr = csv_strtok(NULL, ","); - if (!ptr) return 0; + if (!ptr) + { + free_stock(StockPtr); + return 0; + } sscanf(ptr,"%f",&(StockPtr->MinPrice)); ptr = csv_strtok(NULL, ","); - if (!ptr) return 0; + if (!ptr) + { + free_stock(StockPtr); + return 0; + } StockPtr->Volume = atoi(ptr); @@ -248,5 +288,9 @@ stock *parse_csv_file(char *csv) ptr = csv_strtok(line, ","); - if (!ptr) return 0; + if (!ptr) + { + free_stock(StockPtr); + return 0; + } symbol = (char *)malloc(strlen(ptr)+1); @@ -329,5 +373,11 @@ stock *parse_csv_history_file(char *csv_file) /* Date */ ptr = strtok(line, ","); - if (!ptr) return 0; + if (!ptr) + { + free_stock(StockPtr); + free_stock(FirstStockPtr); + free_stock(LastStockPtr); + return 0; + } sscanf(ptr,"%d-%3s-%d",&day,smonth,&year); @@ -345,9 +395,9 @@ stock *parse_csv_history_file(char *csv_file) date = (char *)malloc(DATE_LENGTH); if (date==NULL) - { - fprintf(stderr,"Memory allocating error (%s line %d)\n" - ,__FILE__, __LINE__); - exit(1); - } + { + fprintf(stderr,"Memory allocating error (%s line %d)\n" + ,__FILE__, __LINE__); + exit(1); + } sprintf(date,"%.2d%.2d%.2d", year, month, day); StockPtr->Date = date; @@ -355,20 +405,44 @@ stock *parse_csv_history_file(char *csv_file) /* Open */ ptr = strtok(NULL, ","); - if (!ptr) return 0; + if (!ptr) + { + free_stock(StockPtr); + free_stock(FirstStockPtr); + free_stock(LastStockPtr); + return 0; + } sscanf(ptr,"%f",&(StockPtr->OpenPrice)); /* High */ ptr = strtok(NULL, ","); - if (!ptr) return 0; + if (!ptr) + { + free_stock(StockPtr); + free_stock(FirstStockPtr); + free_stock(LastStockPtr); + return 0; + } sscanf(ptr,"%f",&(StockPtr->MaxPrice)); /* Low */ ptr = strtok(NULL, ","); - if (!ptr) return 0; + if (!ptr) + { + free_stock(StockPtr); + free_stock(FirstStockPtr); + free_stock(LastStockPtr); + return 0; + } sscanf(ptr,"%f",&(StockPtr->MinPrice)); /* Close */ ptr = strtok(NULL, ","); - if (!ptr) return 0; + if (!ptr) + { + free_stock(StockPtr); + free_stock(FirstStockPtr); + free_stock(LastStockPtr); + return 0; + } sscanf(ptr,"%f",&(StockPtr->LastPrice)); @@ -377,23 +451,23 @@ stock *parse_csv_history_file(char *csv_file) ptr = strtok(NULL, ","); if (!ptr) - /* It seems to be an indice */ - /* No volume for indices */ - StockPtr->Volume = 0; + /* It seems to be an indice */ + /* No volume for indices */ + StockPtr->Volume = 0; else - StockPtr->Volume = atoi(ptr); + StockPtr->Volume = atoi(ptr); if( !FirstStockPtr ) - { - FirstStockPtr = StockPtr; - StockPtr->PreviousStock = 0; - } + { + FirstStockPtr = StockPtr; + StockPtr->PreviousStock = 0; + } StockPtr->NextStock = 0; if (LastStockPtr) - { - LastStockPtr->NextStock = StockPtr; - StockPtr->PreviousStock = LastStockPtr; - } + { + LastStockPtr->NextStock = StockPtr; + StockPtr->PreviousStock = LastStockPtr; + } LastStockPtr = StockPtr; diff --git a/noncore/todayplugins/stockticker/libstocks/currency.c b/noncore/todayplugins/stockticker/libstocks/currency.c index 9a08a9d..e0090e2 100644 --- a/noncore/todayplugins/stockticker/libstocks/currency.c +++ b/noncore/todayplugins/stockticker/libstocks/currency.c @@ -53,4 +53,5 @@ libstocks_return_code get_currency_exchange(char *from, error = get_stocks(symbol, &data); + free(symbol); if (error) { diff --git a/noncore/todayplugins/stockticker/libstocks/lists.h b/noncore/todayplugins/stockticker/libstocks/lists.h index 0132317..a0eb434 100644 --- a/noncore/todayplugins/stockticker/libstocks/lists.h +++ b/noncore/todayplugins/stockticker/libstocks/lists.h @@ -31,4 +31,5 @@ PUBEXT_LISTS stock *malloc_stock(void); +PUBEXT_LISTS void free_stock(stock*); diff --git a/noncore/todayplugins/stockticker/libstocks/stocks.c b/noncore/todayplugins/stockticker/libstocks/stocks.c index eb04ba9..3a26a47 100644 --- a/noncore/todayplugins/stockticker/libstocks/stocks.c +++ b/noncore/todayplugins/stockticker/libstocks/stocks.c @@ -106,5 +106,5 @@ yahoo_source find_yahoo_source(char *symbol) if (!test) return YAHOO_US; } - + /* We suppose now it is a European stock */ return YAHOO_EUROPE; @@ -117,6 +117,6 @@ yahoo_source find_yahoo_source(char *symbol) /* count allows to connect to all country servers */ /*****************************************************************************/ -libstocks_return_code download_stocks(char *stocks, - stock **stock_datas, +libstocks_return_code download_stocks(char *stocks, + stock **stock_datas, yahoo_source source) { @@ -139,5 +139,5 @@ libstocks_return_code download_stocks(char *stocks, stocks_server = (char *)yahoo_us_stocks_server; break; - + case YAHOO_EUROPE: stocks_server = (char *)yahoo_eu_stocks_server; @@ -146,5 +146,5 @@ libstocks_return_code download_stocks(char *stocks, stocks_server = (char *)yahoo_us_stocks_server; break; - + } @@ -165,11 +165,11 @@ libstocks_return_code download_stocks(char *stocks, strcat(url, stocks); strcat(url, url_end); - + error=http_get(url, stocks_server, &data); - + free(url); if (error) return error; - + *stock_datas = parse_csv_file(data); @@ -223,5 +223,5 @@ libstocks_return_code get_stocks(const char *stocks, stock **stock_datas) fprintf(stderr,"Memory allocating error (%s line %d)\n" ,__FILE__, __LINE__); - exit(1); + exit(1); } strcpy(tok_ptr, stocks); @@ -236,75 +236,73 @@ libstocks_return_code get_stocks(const char *stocks, stock **stock_datas) switch (source) - { - case YAHOO_US: - - if (us_quotes) - { - lgr_us_quotes = strlen(us_quotes); - lgr_symbol = strlen(symbol); - - us_quotes_temp = malloc(lgr_us_quotes + lgr_symbol +2); - if(us_quotes_temp==NULL) - { - fprintf(stderr,"Memory allocating error (%s line %d)\n" - ,__FILE__, __LINE__); - exit(1); - } - strcpy(us_quotes_temp, us_quotes); - strcat(us_quotes_temp,"+"); - strcat(us_quotes_temp,symbol); - - free(us_quotes); - us_quotes = us_quotes_temp; - } - else - { - us_quotes = malloc(strlen(symbol)+1); - - if(us_quotes==NULL) - { - fprintf(stderr,"Memory allocating error (%s line %d)\n" - ,__FILE__, __LINE__); - exit(1); - } - strcpy(us_quotes, symbol); - } - - break; - - case YAHOO_EUROPE: - - if (eu_quotes) - { - lgr_eu_quotes = strlen(eu_quotes); - lgr_symbol = strlen(symbol); - - eu_quotes_temp = malloc(lgr_eu_quotes + lgr_symbol +2); - if(eu_quotes_temp==NULL) - { - fprintf(stderr,"Memory allocating error (%s line %d)\n" - ,__FILE__, __LINE__); - exit(1); - } - strcpy(eu_quotes_temp, eu_quotes); - strcat(eu_quotes_temp, "+"); - strcat(eu_quotes_temp, symbol); - - free(eu_quotes); - eu_quotes = eu_quotes_temp; - } - else - { - eu_quotes = malloc(strlen(symbol)+1); - if(eu_quotes==NULL) - { - fprintf(stderr,"Memory allocating error (%s line %d)\n" - ,__FILE__, __LINE__); - exit(1); - } - strcpy(eu_quotes, symbol); - } - break; - } + { + case YAHOO_US: + if (us_quotes) + { + lgr_us_quotes = strlen(us_quotes); + lgr_symbol = strlen(symbol); + + us_quotes_temp = malloc(lgr_us_quotes + lgr_symbol +2); + if(us_quotes_temp==NULL) + { + fprintf(stderr,"Memory allocating error (%s line %d)\n", + __FILE__, __LINE__); + exit(1); + } + strcpy(us_quotes_temp, us_quotes); + strcat(us_quotes_temp,"+"); + strcat(us_quotes_temp,symbol); + + free(us_quotes); + us_quotes = us_quotes_temp; + } + else + { + us_quotes = malloc(strlen(symbol)+1); + + if(us_quotes==NULL) + { + fprintf(stderr,"Memory allocating error (%s line %d)\n", + __FILE__, __LINE__); + exit(1); + } + strcpy(us_quotes, symbol); + } + + break; + + case YAHOO_EUROPE: + if (eu_quotes) + { + lgr_eu_quotes = strlen(eu_quotes); + lgr_symbol = strlen(symbol); + + eu_quotes_temp = malloc(lgr_eu_quotes + lgr_symbol +2); + if(eu_quotes_temp==NULL) + { + fprintf(stderr,"Memory allocating error (%s line %d)\n", + __FILE__, __LINE__); + exit(1); + } + strcpy(eu_quotes_temp, eu_quotes); + strcat(eu_quotes_temp, "+"); + strcat(eu_quotes_temp, symbol); + + free(eu_quotes); + eu_quotes = eu_quotes_temp; + } + else + { + eu_quotes = malloc(strlen(symbol)+1); + if(eu_quotes==NULL) + { + fprintf(stderr,"Memory allocating error (%s line %d)\n", + __FILE__, __LINE__); + exit(1); + } + strcpy(eu_quotes, symbol); + } + break; + } } @@ -315,33 +313,36 @@ libstocks_return_code get_stocks(const char *stocks, stock **stock_datas) /* Gets us quotes */ error = download_stocks(us_quotes, &stocks_tmp, YAHOO_US); + free(us_quotes); if (error) return error; } - + if (eu_quotes) { /* Gets european quotes */ error = download_stocks(eu_quotes, &stocks_getted, YAHOO_EUROPE); + free(eu_quotes); if (error) return error; /* concats lists if needed */ if (stocks_tmp) - { - stocks_tmp2 = stocks_tmp; + { + stocks_tmp2 = stocks_tmp; - while(stocks_tmp2 != NULL) - { - last_stock = stocks_tmp2; - stocks_tmp2 = next_stock(stocks_tmp2); - } + while(stocks_tmp2 != NULL) + { + last_stock = stocks_tmp2; + stocks_tmp2 = next_stock(stocks_tmp2); + } - last_stock->NextStock = stocks_getted; - stocks_getted->PreviousStock = last_stock; + last_stock->NextStock = stocks_getted; + stocks_getted->PreviousStock = last_stock; - } - else (stocks_tmp = stocks_getted); + } + else + (stocks_tmp = stocks_getted); } - *stock_datas = stocks_tmp; - + *stock_datas = stocks_tmp; + return(0); } |