diff --git a/maintner/maintnerd/maintapi/api.go b/maintner/maintnerd/maintapi/api.go
index 1c76fdb..f8ccd4e 100644
--- a/maintner/maintnerd/maintapi/api.go
+++ b/maintner/maintnerd/maintapi/api.go
@@ -11,7 +11,9 @@
 	"fmt"
 	"io"
 	"log"
+	"regexp"
 	"sort"
+	"strconv"
 	"strings"
 	"sync"
 	"time"
@@ -244,6 +246,10 @@
 	ForeachNonChangeRef(fn func(ref string, hash maintner.GitHash) error) error
 }
 
+// releaseBranchRx matches things of the form "release-branch.go1.5" or "release-branch.go2",
+// but not things like "release-branch.go1.10-security".
+var releaseBranchRx = regexp.MustCompile(`^release-branch\.go(\d{1,2})(?:\.(\d{1,3}))?$`)
+
 // supportedGoReleases returns the latest patches of releases
 // that are considered supported per policy.
 func supportedGoReleases(goProj nonChangeRefLister) ([]*apipb.GoRelease, error) {
@@ -289,14 +295,16 @@
 		case strings.HasPrefix(ref, "refs/heads/release-branch.go"):
 			// Release branch.
 			branchName := ref[len("refs/heads/"):]
-			var major, minor int32
-			_, err := fmt.Sscanf(branchName, "release-branch.go%d.%d", &major, &minor)
-			if err == io.ErrUnexpectedEOF {
-				// Do nothing.
-			} else if err != nil {
+			m := releaseBranchRx.FindStringSubmatch(branchName)
+			if m == nil {
 				return nil
 			}
-			branches[majorMinor{major, minor}] = branch{
+			var major, minor int
+			major, _ = strconv.Atoi(m[1])
+			if len(m) > 2 {
+				minor, _ = strconv.Atoi(m[2])
+			}
+			branches[majorMinor{int32(major), int32(minor)}] = branch{
 				Name:   branchName,
 				Commit: hash,
 			}
diff --git a/maintner/maintnerd/maintapi/api_test.go b/maintner/maintnerd/maintapi/api_test.go
index f1c02f9..435700a 100644
--- a/maintner/maintnerd/maintapi/api_test.go
+++ b/maintner/maintnerd/maintapi/api_test.go
@@ -56,9 +56,6 @@
 var hitGerrit = flag.Bool("hit_gerrit", false, "query production Gerrit in TestFindTryWork")
 
 func TestFindTryWork(t *testing.T) {
-	if testing.Short() {
-		t.Skip("skipping in short mode")
-	}
 	if !*hitGerrit {
 		t.Skip("skipping without flag --hit_gerrit")
 	}
@@ -153,6 +150,9 @@
 )
 
 func getGoData(tb testing.TB) *maintner.Corpus {
+	if testing.Short() {
+		tb.Skip("skipping maintner godata test in short mode")
+	}
 	corpusMu.Lock()
 	defer corpusMu.Unlock()
 	if corpusCache != nil {
@@ -185,6 +185,8 @@
 					{"refs/heads/release-branch.go1.1", gitHash("1d6d8fca241bb611af51e265c1b5a2e9ae904702")},
 					{"refs/heads/release-branch.go1.10", gitHash("e97b7d68f107ff60152f5bd5701e0286f221ee93")},
 					{"refs/heads/release-branch.go1.11", gitHash("97781d2ed116d2cd9cb870d0b84fc0ec598c9abc")},
+					{"refs/heads/release-branch.go1.10-security", gitHash("e97b7d68f107ff60152f5bd5701e0286f221ee93")},
+					{"refs/heads/release-branch.go1.11-security", gitHash("97781d2ed116d2cd9cb870d0b84fc0ec598c9abc")},
 					{"refs/heads/release-branch.go1.2", gitHash("43d00b0942c1c6f43993ac71e1eea48e62e22b8d")},
 					{"refs/heads/release-branch.r59", gitHash("5d9765785dff74784bbdad43f7847b6825509032")},
 					{"refs/heads/release-branch.r60", gitHash("394b383a1ee0ac3fec5e453a7dbe590d3ce6d6b0")},
