syncbase/vsync:
1. Fixes nil pointer dereferencing in sync_state.
2. Fixes syncgroup authorization in the responder.

Bug fix for https://github.com/vanadium/issues/issues/1354

Change-Id: Ifae2d507287fe027ec80b652b3c60becb8782189
diff --git a/services/syncbase/vsync/responder.go b/services/syncbase/vsync/responder.go
index 8b79979..49c16f3 100644
--- a/services/syncbase/vsync/responder.go
+++ b/services/syncbase/vsync/responder.go
@@ -183,27 +183,24 @@
 		// Check permissions for the syncgroup.
 		var sg *interfaces.Syncgroup
 		sg, err = getSyncgroupByGid(ctx, rSt.st, sgid)
-		if err != nil {
-			vlog.Errorf("sync: authorizeAndFilterSyncgroups: accessing syncgroup information failed %v, err %v", sgid, err)
-			continue
+		if err == nil {
+			err = authorize(ctx, rSt.call.Security(), sg)
 		}
-		err = authorize(ctx, rSt.call.Security(), sg)
-		if verror.ErrorID(err) == verror.ErrNoAccess.ID {
+		if err == nil {
+			if !rSt.sg {
+				for _, c := range sg.Spec.Collections {
+					allowedPfxs[toCollectionPrefixStr(c)] = struct{}{}
+				}
+			}
+		} else {
+			delete(rSt.sgIds, sgid)
 			if rSt.sg {
 				delete(rSt.initVecs, string(sgid))
 			}
-			continue
-		} else if err != nil {
-			return err
+			if verror.ErrorID(err) != verror.ErrNoAccess.ID {
+				vlog.Errorf("sync: authorizeAndFilterSyncgroups: accessing/authorizing syncgroup failed %v, err %v", sgid, err)
+			}
 		}
-
-		for _, c := range sg.Spec.Collections {
-			allowedPfxs[toCollectionPrefixStr(c)] = struct{}{}
-		}
-	}
-
-	if err != nil {
-		return err
 	}
 
 	if rSt.sg {
diff --git a/services/syncbase/vsync/sync_state.go b/services/syncbase/vsync/sync_state.go
index 3dd55be..e63ce3b 100644
--- a/services/syncbase/vsync/sync_state.go
+++ b/services/syncbase/vsync/sync_state.go
@@ -453,7 +453,11 @@
 			sgoid := sgOID(id)
 			gv := ds.sggenvecs[sgoid]
 			genvecs[sgoid] = gv.DeepCopy()
-			genvecs[sgoid][s.id] = ds.sgs[sgoid].checkptGen
+			var ckpt uint64 = 0
+			if info, ok := ds.sgs[sgoid]; ok {
+				ckpt = info.checkptGen
+			}
+			genvecs[sgoid][s.id] = ckpt
 		}
 	} else {
 		genvecs = ds.genvecs.DeepCopy()