discovery/ble: minor clean up

Change-Id: Icbcc46cb27c1f53a7ac466f5b37c958b2ece86a2
diff --git a/lib/discovery/encoding.go b/lib/discovery/encoding.go
index 54aac5f..d5ba037 100644
--- a/lib/discovery/encoding.go
+++ b/lib/discovery/encoding.go
@@ -9,6 +9,7 @@
 	"compress/flate"
 	"encoding/binary"
 	"errors"
+	"fmt"
 	"io"
 	"io/ioutil"
 
@@ -63,6 +64,9 @@
 	if err != nil {
 		return nil, err
 	}
+	if n < 0 {
+		return nil, fmt.Errorf("invalid length %d", n)
+	}
 	p := e.buf.Next(n)
 	if len(p) < n {
 		return nil, io.EOF
diff --git a/lib/discovery/plugins/ble/encoding.go b/lib/discovery/plugins/ble/encoding.go
index 47c029f..eb9f3fa 100644
--- a/lib/discovery/plugins/ble/encoding.go
+++ b/lib/discovery/plugins/ble/encoding.go
@@ -95,7 +95,7 @@
 	buf.Write(idiscovery.EncodeTimestamp(adinfo.TimestampNs))
 
 	if len(adinfo.Ad.Attachments) == 0 {
-		buf.WriteBytes(idiscovery.PackAddresses(nil)) // No DirAddrs necessary
+		buf.WriteBytes(nil) // No DirAddrs necessary
 		buf.WriteInt(int(idiscovery.AdReady))
 	} else {
 		buf.WriteBytes(idiscovery.PackAddresses(adinfo.DirAddrs))
diff --git a/lib/discovery/plugins/ble/scanner.go b/lib/discovery/plugins/ble/scanner.go
index e9eb10f..bf0bd43 100644
--- a/lib/discovery/plugins/ble/scanner.go
+++ b/lib/discovery/plugins/ble/scanner.go
@@ -95,8 +95,8 @@
 	stopScan := func() {
 		if isScanning {
 			s.driver.StopScan()
+			isScanning = false
 		}
-		isScanning = false
 	}
 	defer stopScan()