Browse Source

ead: message handling fixes

SVN-Revision: 13828
Felix Fietkau 17 years ago
parent
commit
d9397119c5
2 changed files with 5 additions and 2 deletions
  1. 4 1
      package/ead/src/ead-client.c
  2. 1 1
      package/ead/src/ead.c

+ 4 - 1
package/ead/src/ead-client.c

@@ -143,7 +143,10 @@ static bool
 handle_pong(void)
 {
 	struct ead_msg_pong *pong = EAD_DATA(msg, pong);
-	int len = msg->len - sizeof(struct ead_msg_pong);
+	int len = ntohl(msg->len) - sizeof(struct ead_msg_pong);
+
+	if (len <= 0)
+		return false;
 
 	pong->name[len] = 0;
 	auth_type = ntohs(pong->auth_type);

+ 1 - 1
package/ead/src/ead.c

@@ -330,7 +330,7 @@ handle_ping(struct ead_packet *pkt, int len, int *nstate)
 
 	msg->len = htonl(sizeof(struct ead_msg_pong) + slen);
 	strncpy(pong->name, dev_name, slen);
-	pong->name[len] = 0;
+	pong->name[slen] = 0;
 	pong->auth_type = htons(EAD_AUTH_MD5);
 
 	return true;