From f5ded723494f90bc66f79bfae1f2e430cda495de Mon Sep 17 00:00:00 2001
From: "Gomez Goiri, Aitor" <aitor.gomez@tecnalia.com>
Date: Wed, 2 Mar 2022 12:48:45 +0100
Subject: [PATCH] Returning error if not existing bid is accepted or rejected

---
 chaincode/controller/bid/bid_controller.go | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/chaincode/controller/bid/bid_controller.go b/chaincode/controller/bid/bid_controller.go
index 91d183e..c6a19ef 100644
--- a/chaincode/controller/bid/bid_controller.go
+++ b/chaincode/controller/bid/bid_controller.go
@@ -57,6 +57,7 @@ var (
 	errChildrenMissmatch    = errors.New("number of requested childs and proposed id count mismatch")
 	errBidirectionalLink	= errors.New("failed to bidirectonally link base asset on current transaction")
 	errInvalidBidQuantity   = errors.New("bid quantity is greater than the available quantity")
+	errInvalidBidder   		= errors.New("bidder has no registered bid")
 )
 
 // constructor like function
@@ -192,10 +193,10 @@ func (c BidDecisionController) bidResponse(stub shared.LedgerBuildrStubInterface
 		return nil, nil, err
 	}
 
-	var selectedBid Bid
+	var selectedBid *Bid = nil
 	for i, bid := range auxArr {
         if bid.Bidder.Id == bidDecisionParams.Bidder  {
-			selectedBid = bid
+			selectedBid = &bid
 			if acceptBid {
 				auxArr[i].Status = Accepted
 			} else {
@@ -205,10 +206,14 @@ func (c BidDecisionController) bidResponse(stub shared.LedgerBuildrStubInterface
         }
     }
 
+	if selectedBid == nil {
+		return nil, nil, errInvalidBidder
+	}
+
 	biddableAsset.Add("bids", auxArr)
 	biddableAsset.MarkModification(stub)
 
-	return biddableAsset, &selectedBid, nil
+	return biddableAsset, selectedBid, nil
 }
 
 func (c BidDecisionController) RejectBid(stub shared.LedgerBuildrStubInterface, params shared.LedgerBuildrAsset) protos.Response {
-- 
GitLab