fixing error handling for no build number found

Also fixes null pointer reference bugs in db connection and query methods.

BUG=b/239224440

Change-Id: I29083e120e4fd54590c48b00be3eaf4f4a55e2fd
Reviewed-on: https://cos-review.googlesource.com/c/cos/tools/+/35707
Tested-by: Bridget Agyare <bridgetagyare@google.com>
Reviewed-by: Arnav Kansal <rnv@google.com>
Cloud-Build: Arnav Kansal <rnv@google.com>
diff --git a/src/cmd/changelog-webapp/controllers/pageHandlers.go b/src/cmd/changelog-webapp/controllers/pageHandlers.go
index d421f8c..4b7643a 100644
--- a/src/cmd/changelog-webapp/controllers/pageHandlers.go
+++ b/src/cmd/changelog-webapp/controllers/pageHandlers.go
@@ -530,11 +530,6 @@
 		handleError(w, r, utilErr, "/findreleasedbuild/")
 		return
 	}
-	if buildData == nil {
-		log.Errorf("CL %s not found", cl)
-		handleError(w, r, utilErr, "/findreleasedbuild/")
-		return
-	}
 
 	gerritLink := gerrit + "/c/" + buildData.CLNum
 
diff --git a/src/cmd/changelog-webapp/static/templates/findReleasedBuild.html b/src/cmd/changelog-webapp/static/templates/findReleasedBuild.html
index 3b88a41..7e3a1ab 100644
--- a/src/cmd/changelog-webapp/static/templates/findReleasedBuild.html
+++ b/src/cmd/changelog-webapp/static/templates/findReleasedBuild.html
@@ -22,7 +22,7 @@
     <p class="feature-info">
         Find the first Container-Optimized OS released build containing a desired
         changelist.<br>
-      Example input: <b>3280</b> or
+      Example input: <b>3280</b>
     </p>
     <p class="feature-info">
       <b>Note:</b>  It is possible that COS build was released with the cl number so please check out the Landed in tab. 
@@ -65,10 +65,17 @@
     </form>
     <div class="locate-build-result">
       {{if (ne .BuildNum "")}}
-        <p>
-          <a href={{.GerritLink}} target="_blank"> CL {{.CLNum}}</a>
-          released in build <b>{{.BuildNum}}</b>.
-        </p>
+        {{if (ne .BuildNum "0.000.0")}}
+          <p>
+            <a href={{.GerritLink}} target="_blank"> CL {{.CLNum}}</a>
+            released in build <b>{{.BuildNum}}</b>.
+          </p>
+        {{else}}
+          <p>
+            <a href={{.GerritLink}} target="_blank"> CL {{.CLNum}}</a>
+            no released build found.
+          </p>
+        {{end}}
       {{end}}
     </div>
   </div>
diff --git a/src/pkg/findbuild/findbuild.go b/src/pkg/findbuild/findbuild.go
index 0a0ecc6..d0f0b48 100644
--- a/src/pkg/findbuild/findbuild.go
+++ b/src/pkg/findbuild/findbuild.go
@@ -657,6 +657,7 @@
 	db, err := sql.Open("mysql", fmt.Sprintf("%s:%s@cloudsql(%s)/%s", user, password, connectionName, dbName))
 	if err != nil {
 		log.Fatalf("Could not open db: %v", err)
+		return nil, utils.InternalServerError
 	}
 	// query database
 	// SELECT release_build_number FROM DBName WHERE cLNumber = request.CL;
@@ -664,10 +665,12 @@
 	rows, err := db.Query(queryStmt, request.CL)
 	if err != nil {
 		log.Fatalf("Could not query db: %v", err)
+		return nil, utils.InternalServerError
 	}
 	// change rows to BuildResponse type
 	defer rows.Close()
 	var releasedBuildNumber string
+	releasedBuild := BuildResponse{}
 	if rows.Next() {
 		if err := rows.Scan(&releasedBuildNumber); err != nil {
 			log.Errorf("Could not scan result: %v", err)
@@ -675,12 +678,13 @@
 		}
 	} else {
 		log.Errorf("No build number found")
-		return nil, nil
+		releasedBuild.BuildNum = "0.000.0"
+		releasedBuild.CLNum = request.CL
+		return &releasedBuild, nil
 	}
 	if rows.Next() {
 		log.Errorf("More than one build number found")
 	}
-	releasedBuild := BuildResponse{}
 	releasedBuild.BuildNum = releasedBuildNumber
 	releasedBuild.CLNum = request.CL
 	return &releasedBuild, nil