diff --git a/services/syncbase/bridge/blessings.go b/services/syncbase/bridge/blessings.go
index e8dc8ba..5f97c4f 100644
--- a/services/syncbase/bridge/blessings.go
+++ b/services/syncbase/bridge/blessings.go
@@ -26,9 +26,9 @@
 	seclib "v.io/x/ref/lib/security"
 )
 
-// SetBlessings exchanges an OAuth token for blessings from the dev.v.io server.
-// Currently, oauthProvider must be set to "google".
-func SetBlessings(ctx *context.T, oauthProvider string, oauthToken string) error {
+// SeekAndSetBlessings exchanges an OAuth token for blessings from the dev.v.io
+// server. Currently, oauthProvider must be set to "google".
+func SeekAndSetBlessings(ctx *context.T, oauthProvider string, oauthToken string) error {
 	if strings.ToLower(oauthProvider) != "google" {
 		return fmt.Errorf("unsupported oauthProvider %q; currently, \"google\" is the only supported provider", oauthProvider)
 	}
diff --git a/services/syncbase/bridge/cgo/impl.go b/services/syncbase/bridge/cgo/impl.go
index 2f951bc..4617232 100644
--- a/services/syncbase/bridge/cgo/impl.go
+++ b/services/syncbase/bridge/cgo/impl.go
@@ -95,7 +95,7 @@
 
 //export v23_syncbase_Login
 func v23_syncbase_Login(cOAuthProvider C.v23_syncbase_String, cOAuthToken C.v23_syncbase_String, cErr *C.v23_syncbase_VError) {
-	cErr.init(bridge.SetBlessings(b.Ctx, cOAuthProvider.extract(), cOAuthToken.extract()))
+	cErr.init(bridge.SeekAndSetBlessings(b.Ctx, cOAuthProvider.extract(), cOAuthToken.extract()))
 }
 
 ////////////////////////////////////////
diff --git a/services/syncbase/bridge/cgo/types.go b/services/syncbase/bridge/cgo/types.go
index a7b645c..26907ab 100644
--- a/services/syncbase/bridge/cgo/types.go
+++ b/services/syncbase/bridge/cgo/types.go
@@ -77,7 +77,7 @@
 	}
 	x.n = C.int(len(b))
 	x.p = (*C.uint8_t)(C.malloc(C.size_t(x.n)))
-	C.memcpy(unsafe.Pointer(x.p), unsafe.Pointer(&b[0]), C.size_t(len(b)))
+	C.memcpy(unsafe.Pointer(x.p), unsafe.Pointer(&b[0]), C.size_t(x.n))
 }
 
 func (x *C.v23_syncbase_Bytes) extract() []byte {
diff --git a/services/syncbase/bridge/mojo/blessings.go b/services/syncbase/bridge/mojo/blessings.go
index fbce4c1..b1a24f2 100644
--- a/services/syncbase/bridge/mojo/blessings.go
+++ b/services/syncbase/bridge/mojo/blessings.go
@@ -67,7 +67,7 @@
 	error
 }
 
-func SetBlessings(v23ctx *context.T, appctx application.Context) error {
+func SeekAndSetBlessings(v23ctx *context.T, appctx application.Context) error {
 	// Get an OAuth2 token from the mojo authentication service.
 	// At the time of this writing, the mojo authentication
 	// service was implemented only for Android, so in absence
@@ -94,7 +94,7 @@
 		return err
 	}
 	ctx.Infof("Obtained OAuth2 token, will exchange for blessings")
-	return bridge.SetBlessings(v23ctx, "google", token)
+	return bridge.SeekAndSetBlessings(v23ctx, "google", token)
 }
 
 func oauthToken(ctx application.Context) (string, error) {
diff --git a/services/syncbase/syncbased/mojo_main.go b/services/syncbase/syncbased/mojo_main.go
index dd45bbb..3695e72 100644
--- a/services/syncbase/syncbased/mojo_main.go
+++ b/services/syncbase/syncbased/mojo_main.go
@@ -40,7 +40,7 @@
 	opts.InitFlags(flag.CommandLine)
 	roaming.SetArgs(actx)
 	d.ctx, d.shutdown = v23.Init() // calls flag.Parse
-	if err := bridge.SetBlessings(d.ctx, actx); err != nil {
+	if err := bridge.SeekAndSetBlessings(d.ctx, actx); err != nil {
 		panic(err)
 	}
 	d.srv, d.disp, d.cleanup = syncbaselib.Serve(d.ctx, opts)
