Changeset: 0fa86209868e for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=0fa86209868e
Modified Files:
monetdb5/modules/mal/mosaic_none.c
monetdb5/modules/mal/mosaic_rle.c
Branch: mosaic
Log Message:
MOSdump_none() & MOSdump_rle(): added cast, guarded with range check
diffs (46 lines):
diff --git a/monetdb5/modules/mal/mosaic_none.c
b/monetdb5/modules/mal/mosaic_none.c
--- a/monetdb5/modules/mal/mosaic_none.c
+++ b/monetdb5/modules/mal/mosaic_none.c
@@ -36,7 +36,8 @@ MOSdump_none(Client cntxt, MOStask task)
{
MosaicBlk hdr = task->hdr;
mnstr_printf(cntxt->fdout,"#none "LLFMT"\n", (lng)(hdr->cnt));
- task->elm -= hdr->cnt;
+ assert(0 <= (lng) hdr->cnt && (lng) hdr->cnt <= (lng) task->elm);
+ task->elm -= (BUN) hdr->cnt;
switch(task->type){
case TYPE_bte: task->hdr = (MosaicBlk)( ((char*) task->hdr) +
MosaicBlkSize + sizeof(bte)* hdr->cnt); break ;
case TYPE_bit: task->hdr = (MosaicBlk)( ((char*) task->hdr) +
MosaicBlkSize + sizeof(bit)* hdr->cnt); break ;
@@ -110,7 +111,8 @@ MOSdecompress_none( MOStask task)
MosaicBlk hdr = (MosaicBlk) task->hdr;
task->time[MOSAIC_NONE] = GDKusec();
- task->elm -= hdr->cnt;
+ assert(0 <= (lng) hdr->cnt && (lng) hdr->cnt <= (lng) task->elm);
+ task->elm -= (BUN) hdr->cnt;
task->compressed += MosaicBlkSize;
switch(task->type){
case TYPE_bte: NONEdecompress(bte); break ;
diff --git a/monetdb5/modules/mal/mosaic_rle.c
b/monetdb5/modules/mal/mosaic_rle.c
--- a/monetdb5/modules/mal/mosaic_rle.c
+++ b/monetdb5/modules/mal/mosaic_rle.c
@@ -53,7 +53,8 @@ static void
MOSdump_rle(Client cntxt, MOStask task)
{
MOSdump_rle_(cntxt,task);
- task->elm -= task->hdr->cnt;
+ assert(0 <= (lng) task->hdr->cnt && (lng) task->hdr->cnt <= (lng)
task->elm);
+ task->elm -= (BUN) task->hdr->cnt;
switch(task->type){
case TYPE_bte: task->hdr = (MosaicBlk)( ((char*)task->hdr) +
MosaicBlkSize + sizeof(bte)); break;
case TYPE_bit: task->hdr = (MosaicBlk)( ((char*)task->hdr) +
MosaicBlkSize + sizeof(bit)); break;
@@ -194,7 +195,8 @@ MOSdecompress_rle( MOStask task)
BUN i;
MosaicBlk hdr = ((MosaicBlk) task->hdr);
task->compressed += MosaicBlkSize;
- task->elm -= hdr->cnt;
+ assert(0 <= (lng) hdr->cnt && (lng) hdr->cnt <= (lng) task->elm);
+ task->elm -= (BUN) hdr->cnt;
task->time[MOSAIC_RLE] = GDKusec();
switch(task->type){
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list