Re: [Monetdb-developers] [Monetdb-checkins] MonetDB5/src/modules/mal/crackers crackers_partial_sideways.mx, , 1.7, 1.8
stratos wrote:
Update of /cvsroot/monetdb/MonetDB5/src/modules/mal/crackers In directory 23jxhf1.ch3.sourceforge.com:/tmp/cvs-serv26417
Modified Files: crackers_partial_sideways.mx Log Message: more safety checks from coverity
Index: crackers_partial_sideways.mx =================================================================== RCS file: /cvsroot/monetdb/MonetDB5/src/modules/mal/crackers/crackers_partial_sideways.mx,v retrieving revision 1.7 retrieving revision 1.8 diff -u -d -r1.7 -r1.8 --- crackers_partial_sideways.mx 9 Nov 2009 22:06:57 -0000 1.7 +++ crackers_partial_sideways.mx 10 Nov 2009 00:05:34 -0000 1.8 @@ -647,9 +647,9 @@ oid i;
if (nodeLow == NULL) - printf("\n crackers.createPieceMap Unexpected case: Low node is NULL\n ");
Printf is not to be used for this. Either you want to leave a debugging message, then use stream_printf(GDKout,"\n..... or return an exception string so the upper layers can deal with it
+ return NULL; if (nodeHgh == NULL) - printf("\n crackers.createPieceMap Unexpected case: Hgh node is NULL \n "); + return NULL;
if (nodeLow->indexLocal == 0) pos1 = 0; else pos1 = nodeLow->indexLocal + 1; @@ -920,7 +920,7 @@ return 0;
if ((h = BATdescriptor(cur->tape)) == NULL) - printf("\n\n crackers.sync Cannot access tape \n\n"); + return -1;
/* check if the current pair is already synced */ cursor = getTapeCursor(cur,tailBatId); @@ -936,7 +936,7 @@ } /* Take the index of the bat */ if ((c = BATdescriptor(CrackerIndex[m].cid)) == NULL) - printf(" \n\n crackers.sync Cannot access crack index \n\n"); + return -1;
syncs = size - cursor;
@@ -1057,7 +1057,8 @@
@= EnrichMaxTailResultIncrementalSideways size+=@5; - + if (pairt==NULL) + throw(MAL,"pcrack", "Unexpected error during max. Empty input."); if (BATcount(p) == 0){ *maxt = *pairt; j = 1; @@ -1070,6 +1071,8 @@ *maxt = *pairt; pairt ++; } + if(piece==NULL) + throw(MAL,"pcrack", "Unexpected error. Cur piece is NULL."); if (newPiece) BBPkeepref(piece->batCacheid); else @@ -1106,6 +1109,8 @@ if (*inclusiveLow2==FALSE && *inclusiveHgh2==FALSE){ @:analyzeTailConjunction(@2,@3,@4,GT,LT,@5)@ } + if(piece==NULL) + throw(MAL,"pcrack", "Unexpected error. Cur piece is NULL."); if (newPiece) BBPkeepref(piece->batCacheid); else @@ -1143,6 +1148,8 @@ @:analyzeTailConjunctionPivot(@2,@3,@4,GT,LT,@5)@ }
+ if(piece==NULL) + throw(MAL,"pcrack", "Unexpected error. Cur piece is NULL."); if (newPiece) BBPkeepref(piece->batCacheid); else @@ -1159,6 +1166,8 @@ pivott ++;
} + if(piece==NULL) + throw(MAL,"pcrack", "Unexpected error in projection. Cur piece is NULL."); if (newPiece) BBPkeepref(piece->batCacheid); else @@ -1177,6 +1186,8 @@ pivott ++;
} + if(piece==NULL) + throw(MAL,"pcrack", "Unexpected error. Cur piece is NULL."); if (newPiece) BBPkeepref(piece->batCacheid); else @@ -1271,11 +1282,19 @@ @
@= SyncAndCrackBasedonFirstBound - SyncPiece_@1_@2(h, piece, nodeLow1, m, *pbid, FALSE); + syncs=SyncPiece_@1_@2(h, piece, nodeLow1, m, *pbid, FALSE); + if (syncs<0) + throw(MAL,"pcrack", "Failed to access cracker index or tape during syncing."); + foundLow = GetLowNodes_@1(*low, *inclusiveLow, CrackerIndex[h].Tree, cm, BUNfirst(cm), &localNodeLow1, &localNodeHgh1, NULL, NULL); - if (foundLow == 0) - if ((SyncPiece_@1_@2(h, piece, nodeLow1, m, *pbid, TRUE))>0) + + if (foundLow == 0){ + syncs=SyncPiece_@1_@2(h, piece, nodeLow1, m, *pbid, TRUE); + if (syncs<0) + throw(MAL,"pcrack", "Failed to access cracker index or tape during syncing."); + if (syncs>0) foundLow = GetLowNodes_@1(*low, *inclusiveLow, CrackerIndex[h].Tree, cm, BUNfirst(cm), &localNodeLow1, &localNodeHgh1, NULL, NULL); + } foundHgh = 1; base = nodeLow1->indexLocal; CrackPiece = SyncAndCrackBasedonFirstBound = TRUE; @@ -1288,7 +1307,9 @@ @
@= SyncAndCrackBasedonLastBound - SyncPiece_@1_@2(h, piece, nodeLow1, m, *pbid, FALSE); + syncs=SyncPiece_@1_@2(h, piece, nodeLow1, m, *pbid, FALSE); + if (syncs<0) + throw(MAL,"pcrack", "Failed to access cracker index or tape during syncing.");
/* if the high bound falls in here we crack this piece */ if ( (*(@1*)Tloc(c, BUNfirst(c)+nodeHgh1->position)) > *hgh || @@ -1296,9 +1317,13 @@ nodeHgh1->inclusive == HBound) ){ foundHgh = GetHghNodes_@1(*hgh, *inclusiveHgh, CrackerIndex[h].Tree, cm, BUNfirst(cm), &localNodeLow2, &localNodeHgh2, NULL, NULL);
- if (foundHgh == 0) - if ((SyncPiece_@1_@2(h, piece, nodeLow1, m, *pbid, TRUE)) > 0) + if (foundHgh == 0){ + syncs = SyncPiece_@1_@2(h, piece, nodeLow1, m, *pbid, TRUE); + if (syncs<0) + throw(MAL,"pcrack", "Failed to access cracker index or tape during syncing."); + if (syncs > 0) foundHgh = GetHghNodes_@1(*hgh, *inclusiveHgh, CrackerIndex[h].Tree, cm, BUNfirst(cm), &localNodeLow2, &localNodeHgh2, NULL, NULL); + }
foundLow = 1; base = nodeLow1->indexLocal; @@ -1317,13 +1342,19 @@ @
@= SyncAndCrackBasedonBothBounds - SyncPiece_@1_@2(h, piece, nodeLow1, m, *pbid, FALSE); + syncs=SyncPiece_@1_@2(h, piece, nodeLow1, m, *pbid, FALSE); + if (syncs<0) + throw(MAL,"pcrack", "Failed to access cracker index or tape during syncing."); + /* get the new node after the sync */ foundLow = GetLowNodes_@1(*low, *inclusiveLow, CrackerIndex[h].Tree, cm, BUNfirst(cm), &localNodeLow1, &localNodeHgh1, NULL, NULL); foundHgh = GetHghNodes_@1(*hgh, *inclusiveHgh, CrackerIndex[h].Tree, cm, BUNfirst(cm), &localNodeLow2, &localNodeHgh2, NULL, NULL);
if (foundLow == 0 || foundHgh == 0){ - if ((SyncPiece_@1_@2(h, piece, nodeLow1, m, *pbid, TRUE)) > 0 ){ + syncs=SyncPiece_@1_@2(h, piece, nodeLow1, m, *pbid, TRUE); + if (syncs<0) + throw(MAL,"pcrack", "Failed to access cracker index or tape during syncing."); + if (syncs > 0 ){ foundLow = GetLowNodes_@1(*low, *inclusiveLow, CrackerIndex[h].Tree, cm, BUNfirst(cm), &localNodeLow1, &localNodeHgh1, NULL, NULL); foundHgh = GetHghNodes_@1(*hgh, *inclusiveHgh, CrackerIndex[h].Tree, cm, BUNfirst(cm), &localNodeLow2, &localNodeHgh2, NULL, NULL); } @@ -1341,6 +1372,8 @@ @= makeNewMapPiece1 /*printStorageInfo(); can be used to what is in the Storage management structure */ piece = createPieceMap_@1_@2(b, tailBAT, nodeLow1, nodeHgh1, m); + if (piece==NULL) + throw(MAL,"pcracking","Failed to create map piece"); newPiece = TRUE;
localFirst = addCrackerIndexIncrementalSideways_@1(h, *(@1*)Tloc(c, BUNfirst(c)+nodeLow1->position), nodeLow1->inclusive, 0, nodeLow1->indexLocal, cm, FALSE, TRUE, piece->batCacheid); @@ -1350,6 +1383,8 @@
@= makeNewMapPiece2 piece = createPieceMap_@1_@2(b, tailBAT, nodeLow1, nodeHgh1, m); + if (piece==NULL) + throw(MAL,"pcracking","Failed to create map piece"); newPiece = TRUE; localNodeLow1->first = TRUE; localNodeLow1->indexLocal = 0; @@ -1421,12 +1456,16 @@ crkTwoLTree = TRUE; else{ posl = 0; + if (nodeHgh1==NULL) + throw(MAL,"pcrack", "Unexpected error. High node is NULL."); posh = nodeHgh1->indexLocal; crkThreeTree = TRUE; } done = TRUE; }else if (nodeHgh1 == NULL && nodeHgh2 == NULL) { + if (nodeLow1==NULL) + throw(MAL,"pcrack", "Unexpected error. Low node is NULL."); if (foundLow != 0){ nodeLow1->first = TRUE; crkTwoRTree = TRUE; @@ -1442,6 +1481,8 @@ else /* A previous query has already created a piece for this area */ if (nodeLow1->first == TRUE){ + if (nodeHgh1==NULL) + throw(MAL,"pcrack", "Unexpected error. High node is NULL.");
@:makeNewMapPiece1(@1,@2)@
@@ -1463,6 +1504,8 @@ nodeLow1->first = TRUE; else if (foundLow == 0 && foundHgh ==0){ + if (nodeHgh1==NULL) + throw(MAL,"pcrack", "Unexpected error. High node is NULL."); posl = nodeLow1->indexLocal+1; posh = nodeHgh1->indexLocal; crkThreeTree = TRUE; @@ -1533,6 +1576,7 @@ bit AnalyzeRemainingPiece = FALSE; bit crkTwoLTree, crkTwoRTree, crkThreeTree; bit CrackPiece = FALSE, SyncAndCrackBasedonFirstBound = FALSE, SyncAndCrackBasedonBothBounds = FALSE, SyncAndCrackBasedonLastBound = FALSE; + lng syncs=0;
if (@3_GT(low,hgh,@4@1)) throw(MAL, "crackers.crack", "illegal range"); @@ -1662,6 +1706,8 @@ curPieceNodeLast = getNextNonLocalNode(localNodeHgh1); } else if (localNodeLow1->localBound == FALSE && localNodeLow1->first == FALSE){ + if (localNodeLow2==NULL) + throw(MAL,"pcrack", "Unexpected error. Low node is NULL."); if (*(oid*)Hloc(cm,BUNfirst(cm)+localNodeLow1->position) == *(oid*)Hloc(cm,BUNfirst(cm)+localNodeLow2->position)) /* Both bounds fall within a non materialized area of the map */ BothBoundsWithinAnExistingArea=TRUE; @@ -1716,14 +1762,15 @@ Each piece in this area needs to be synced if necessary and enrich the result If the hgh bound falls in a piece then we also have to crack it */ while(done == FALSE){ + if (curPieceNodeLast==NULL || curCBatNodeLast ==NULL) + throw(MAL,"pcrack", "Unexpected error. Low node is NULL."); + LastBoundWithinAnExistingArea = FALSE; localNodeLow1 = curPieceNodeLast; localNodeHgh1 = getNextNonLocalNode(findNextPiece(localNodeLow1)); nodeLow1 = curCBatNodeLast; nodeHgh1 = findNextPiece(nodeLow1);
- if (localNodeLow1==NULL) - throw(MAL, "partial sideways cracking", "Unexpected error while traversing cracker map. Low node is NULL.");
if (localNodeHgh1==NULL){ if (nodeHgh1 == NULL){
------------------------------------------------------------------------------ Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day trial. Simplify your report design, integration and deployment - and focus on what you do best, core application coding. Discover what's new with Crystal Reports now. http://p.sf.net/sfu/bobj-july _______________________________________________ Monetdb-checkins mailing list Monetdb-checkins@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/monetdb-checkins
participants (1)
-
Martin Kersten