diff --git a/src/meta.c b/src/meta.c
index 260cb005..ff06d0ce 100644
--- a/src/meta.c
+++ b/src/meta.c
@@ -287,7 +287,8 @@ bool receive_meta(connection_t *c) {
 
 			char *request = buffer_readline(&c->inbuf);
 			if(request) {
-				bool result = receive_request(c, request);
+				bool result = false;
+				result = receive_request(c, request);
 				if(!result)
 					return false;
 				continue;
diff --git a/src/net_packet.c b/src/net_packet.c
index 6183e253..a95e9771 100644
--- a/src/net_packet.c
+++ b/src/net_packet.c
@@ -837,6 +837,7 @@ bool receive_sptps_record(void *handle, uint8_t type, const void *data, uint16_t
 	}
 
 	vpn_packet_t inpkt;
+	bzero(&inpkt, sizeof(inpkt));
 	inpkt.offset = DEFAULT_PACKET_OFFSET;
 
 	if(type == PKT_PROBE) {
diff --git a/src/protocol_auth.c b/src/protocol_auth.c
index d30d9e08..78c19ba3 100644
--- a/src/protocol_auth.c
+++ b/src/protocol_auth.c
@@ -498,6 +498,11 @@ bool metakey_h(connection_t *c, const char *request) {
 	char enckey[len];
 	char key[len];
 
+	bzero(key, len);
+	bzero(enckey, len);
+
+	cipher = digest = maclength =compression = 0;
+
 	if(sscanf(request, "%*d %d %d %d %d " MAX_STRING, &cipher, &digest, &maclength, &compression, hexkey) != 5) {
 		logger(DEBUG_ALWAYS, LOG_ERR, "Got bad %s from %s (%s)", "METAKEY", c->name, c->hostname);
 		return false;
@@ -692,7 +697,7 @@ bool send_ack(connection_t *c) {
 	   to create node_t and edge_t structures. */
 
 	struct timeval now;
-	bool choice;
+	bool choice = false;
 
 	/* Estimate weight */