diff options
author | scuri <scuri> | 2009-11-20 18:59:03 +0000 |
---|---|---|
committer | scuri <scuri> | 2009-11-20 18:59:03 +0000 |
commit | 9cc6fd6da62bc239bf22ced6ae24c0ffdd994b40 (patch) | |
tree | f91ec6d46895ec1e00fc31927a5c923b65f22fbd | |
parent | d74811ae84f8caebf287eb2fd4cc799fc7dbcee2 (diff) |
* Fixed: invalid memory access in imAnalyzeFindRegions when more than 16k regions where found.
-rw-r--r-- | html/en/history.html | 7 | ||||
-rw-r--r-- | src/process/im_analyze.cpp | 11 |
2 files changed, 12 insertions, 6 deletions
diff --git a/html/en/history.html b/html/en/history.html index 6cb8dd1..fdf2b46 100644 --- a/html/en/history.html +++ b/html/en/history.html @@ -12,6 +12,13 @@ <h2>History of Changes</h2> <h3 dir="ltr"> + CVS (20/11/2009</h3> +<ul dir="ltr"> + <li dir="ltr"><span style="color: #008000"><span style="color: #ff0000">Fixed:</span><span + style="color: #000000"> invalid memory access in <strong> + imAnalyzeFindRegions</strong> when more than 16k regions where found.</span></span></li> +</ul> +<h3 dir="ltr"> <a href="http://sourceforge.net/projects/imtoolkit/files/3.5/">Version 3.5</a> (02/Oct/2009)</h3> <ul> <li><span style="color: #0000FF">New:</span> functions <strong> diff --git a/src/process/im_analyze.cpp b/src/process/im_analyze.cpp index 6fa9405..02748f0 100644 --- a/src/process/im_analyze.cpp +++ b/src/process/im_analyze.cpp @@ -2,7 +2,7 @@ * \brief Image Analysis * * See Copyright Notice in im_lib.h - * $Id: im_analyze.cpp,v 1.2 2009/09/28 20:19:09 scuri Exp $ + * $Id: im_analyze.cpp,v 1.3 2009/11/20 18:59:08 scuri Exp $ */ @@ -139,7 +139,7 @@ static int DoAnalyzeFindRegions(int width, int height, imbyte* map, imushort* ne int region_count = 2; // 0- background, 1-border imushort* alias_table = new imushort [MAX_COUNT]; - memset(alias_table, 0, MAX_COUNT); // aliases are all zero at start (not used) + memset(alias_table, 0, MAX_COUNT*sizeof(imushort)); // aliases are all zero at start (not used) for (i = 1; i < height; i++) { @@ -273,7 +273,7 @@ static int DoAnalyzeFindRegionsBorder(int width, int height, imbyte* map, imusho int region_count = 2; // still consider: 0- background, 1-border imushort* alias_table = new imushort [MAX_COUNT]; - memset(alias_table, 0, MAX_COUNT); // aliases are all zero at start (not used) + memset(alias_table, 0, MAX_COUNT*sizeof(imushort)); // aliases are all zero at start (not used) for (i = 0; i < height; i++) { @@ -402,8 +402,7 @@ int imAnalyzeFindRegions(const imImage* image, imImage* NewImage, int connect, i void imAnalyzeMeasureArea(const imImage* image, int* data_area, int region_count) { imushort* img_data = (imushort*)image->data[0]; - - memset(data_area, 0, region_count*sizeof(int)); + memset(data_area, 0, region_count*sizeof(imushort)); for (int i = 0; i < image->count; i++) { @@ -981,7 +980,7 @@ void imAnalyzeMeasurePerimeter(const imImage* image, float* perim_data, int regi imushort* map = (imushort*)image->data[0]; - memset(perim_data, 0, region_count*sizeof(int)); + memset(perim_data, 0, region_count*sizeof(float)); int width = image->width; int height = image->height; |