diff --git a/src/wsc/al_wsc.c b/src/wsc/al_wsc.c
index ced28956118b230e9375604e65548c47b6c84d46..699c4c183da78b15758fe6d81a0b756e839e68b4 100644
--- a/src/wsc/al_wsc.c
+++ b/src/wsc/al_wsc.c
@@ -487,6 +487,8 @@ INT8U wscBuildM1(char *interface_name, INT8U **m1, INT16U *m1_size, void **key)
 			memcpy(private_key->key, priv, priv_len);
 
 		memcpy(private_key->mac, x->mac_address, 6);
+		FREE(pub);
+		FREE(priv);
 	}
 
 	// AUTHENTICATION TYPES
@@ -1292,6 +1294,7 @@ INT8U wscBuildM2(INT8U *m1, INT16U m1_size, INT8U **m2, INT16U *m2_size)
 		// We will use it later... save it.
 		local_privkey = priv;
 		local_privkey_len = priv_len;
+		FREE(pub);
 	}
 
 	// Key derivation (no bytes are written to the output buffer in the next
@@ -1763,6 +1766,7 @@ INT8U wscBuildM2(INT8U *m1, INT16U m1_size, INT8U **m2, INT16U *m2_size)
 	*m2 = buffer;
 	*m2_size = abs(p - buffer);
 
+	FREE(local_privkey);
 	return 1;
 }