[Monetdb-developers] [Monetdb-checkins] MonetDB5/src/modules/mal/crackers crackers_partial_sideways.mx, , 1.7, 1.8

Martin Kersten Martin.Kersten at cwi.nl
Tue Nov 10 02:30:43 CET 2009


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, at 3, at 4,GT,LT, at 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, at 3, at 4,GT,LT, at 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_ at 1_@2(h, piece, nodeLow1, m, *pbid, FALSE);
> +                syncs=SyncPiece_ at 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_ at 1(*low, *inclusiveLow, CrackerIndex[h].Tree, cm, BUNfirst(cm), &localNodeLow1, &localNodeHgh1, NULL, NULL);
> -        	if (foundLow == 0)
> -                	if ((SyncPiece_ at 1_@2(h, piece, nodeLow1, m, *pbid, TRUE))>0)
> +
> +        	if (foundLow == 0){
> +			syncs=SyncPiece_ at 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_ at 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_ at 1_@2(h, piece, nodeLow1, m, *pbid, FALSE);
> +		syncs=SyncPiece_ at 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_ at 1(*hgh, *inclusiveHgh, CrackerIndex[h].Tree, cm, BUNfirst(cm), &localNodeLow2, &localNodeHgh2, NULL, NULL);
>  
> -        		if (foundHgh == 0)
> -		                if ((SyncPiece_ at 1_@2(h, piece, nodeLow1, m, *pbid, TRUE)) > 0)
> +        		if (foundHgh == 0){
> +				syncs = SyncPiece_ at 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_ at 1(*hgh, *inclusiveHgh, CrackerIndex[h].Tree, cm, BUNfirst(cm), &localNodeLow2, &localNodeHgh2, NULL, NULL);
> +			}
>  
>  			foundLow = 1;
>  			base = nodeLow1->indexLocal;
> @@ -1317,13 +1342,19 @@
>  @
>  
>  @= SyncAndCrackBasedonBothBounds
> -		SyncPiece_ at 1_@2(h, piece, nodeLow1, m, *pbid, FALSE);
> +		syncs=SyncPiece_ at 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_ at 1(*low, *inclusiveLow, CrackerIndex[h].Tree, cm, BUNfirst(cm), &localNodeLow1, &localNodeHgh1, NULL, NULL);
>  		foundHgh = GetHghNodes_ at 1(*hgh, *inclusiveHgh, CrackerIndex[h].Tree, cm, BUNfirst(cm), &localNodeLow2, &localNodeHgh2, NULL, NULL);
>  
>  		if (foundLow == 0 || foundHgh == 0){
> -		        if ((SyncPiece_ at 1_@2(h, piece, nodeLow1, m, *pbid, TRUE)) > 0 ){
> +			syncs=SyncPiece_ at 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_ at 1(*low, *inclusiveLow, CrackerIndex[h].Tree, cm, BUNfirst(cm), &localNodeLow1, &localNodeHgh1, NULL, NULL);
>  				foundHgh = GetHghNodes_ at 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_ at 1_@2(b, tailBAT, nodeLow1, nodeHgh1, m);
> +			if (piece==NULL)
> +				throw(MAL,"pcracking","Failed to create map piece");
>  			newPiece = TRUE;
>  			
>  	   		localFirst = addCrackerIndexIncrementalSideways_ at 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_ at 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, at 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, at 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 at lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/monetdb-checkins





More information about the developers-list mailing list