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

Reply via email to