summaryrefslogtreecommitdiff
path: root/noncore
authorerik <erik>2007-01-24 19:46:19 (UTC)
committer erik <erik>2007-01-24 19:46:19 (UTC)
commita017bf21dd89159052f2f7a3fbc043a24956c08c (patch) (side-by-side diff)
tree008be2b62ee5487dc55b8a7c7f043c94268f8362 /noncore
parenta4a7bd22feb060a80e20c81cded43cc24f5cd423 (diff)
downloadopie-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.
Diffstat (limited to 'noncore') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/apps/opie-reader/Bkmks.cpp1
-rw-r--r--noncore/apps/opie-sheet/Excel.cpp4
-rw-r--r--noncore/apps/zsafe/zsafe.cpp57
-rw-r--r--noncore/comm/keypebble/vncauth.c6
-rw-r--r--noncore/net/ftplib/ftplib.c4
-rw-r--r--noncore/todayplugins/stockticker/libstocks/csv.c140
-rw-r--r--noncore/todayplugins/stockticker/libstocks/currency.c1
-rw-r--r--noncore/todayplugins/stockticker/libstocks/lists.h1
-rw-r--r--noncore/todayplugins/stockticker/libstocks/stocks.c189
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);
}