[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r6205 - GNUnet/src/applications/chat
From: |
gnunet |
Subject: |
[GNUnet-SVN] r6205 - GNUnet/src/applications/chat |
Date: |
Fri, 8 Feb 2008 15:28:28 -0700 (MST) |
Author: nevans
Date: 2008-02-08 15:28:28 -0700 (Fri, 08 Feb 2008)
New Revision: 6205
Modified:
GNUnet/src/applications/chat/chat.c
GNUnet/src/applications/chat/chat.h
Log:
Modified: GNUnet/src/applications/chat/chat.c
===================================================================
--- GNUnet/src/applications/chat/chat.c 2008-02-08 20:38:21 UTC (rev 6204)
+++ GNUnet/src/applications/chat/chat.c 2008-02-08 22:28:28 UTC (rev 6205)
@@ -85,28 +85,49 @@
int i;
int j;
CS_chat_MESSAGE *cmsg;
- P2P_chat_MESSAGE *pmsg;
+
GNUNET_HashCode hc;
+
char *nick;
char *message_content;
+ char *room_name;
+
+ int header_size;
+ unsigned long nick_len;
+ unsigned long msg_len;
+ unsigned long room_size;
- pmsg = (P2P_chat_MESSAGE *) message;
cmsg = (CS_chat_MESSAGE *) message;
- cmsg->header.size = ntohs(cmsg->header.size);
- cmsg->nick_len = ntohl(cmsg->nick_len);
- cmsg->msg_len = ntohl(cmsg->msg_len);
+ if (ntohs (message->size) < sizeof (CS_chat_MESSAGE))
+ {
+ GNUNET_GE_LOG (ectx,
+ GNUNET_GE_WARNING | GNUNET_GE_BULK | GNUNET_GE_USER,
+ _("Message received from client is invalid\n"));
+ return GNUNET_SYSERR; /* invalid message */
+
+ }
- nick = GNUNET_malloc(cmsg->nick_len + 1);
- message_content = GNUNET_malloc(cmsg->msg_len + 1);
- bzero(nick,sizeof(nick));
- bzero(message_content,sizeof(message_content));
+
+ header_size = ntohs(cmsg->header.size);
+ nick_len = ntohl(cmsg->nick_len);
+ msg_len = ntohl(cmsg->msg_len);
+ room_size = ntohl(cmsg->nick_len);
- memcpy(nick,&cmsg->nick[0],cmsg->nick_len);
- memcpy(message_content,&cmsg->nick[sizeof(nick)],cmsg->msg_len);
+ nick = GNUNET_malloc(nick_len + 1);
+ message_content = GNUNET_malloc(msg_len + 1);
+ room_name = GNUNET_malloc(room_size + 1);
+
+ memcpy(nick,&cmsg->nick[0],nick_len);
+ memcpy(message_content,&cmsg->nick[sizeof(nick)],msg_len);
+ memcpy(room_name,&cmsg->nick[sizeof(nick) +
sizeof(message_content)],msg_len);
+
+ nick[nick_len] = '\0';
+ message_content[msg_len] = '\0';
+ room_name[room_size] = '\0';
- GNUNET_hash (pmsg, cmsg->header.size, &hc);
+ GNUNET_hash (cmsg, header_size, &hc);
/* check if we have seen this message already */
j = -1;
@@ -148,34 +169,43 @@
GNUNET_HashCode hc;
char *nick;
char *message_content;
+ char *room_name;
+
+ int header_size;
+ unsigned long nick_len;
+ unsigned long msg_len;
+ unsigned long room_size;
+
+ pmsg = (P2P_chat_MESSAGE *) message;
+ cmsg = (CS_chat_MESSAGE *) message;
- /*if (ntohs (message->size) != sizeof (CS_chat_MESSAGE))
+ if (ntohs (cmsg->header.size) < sizeof (CS_chat_MESSAGE))
{
GNUNET_GE_LOG (ectx,
GNUNET_GE_WARNING | GNUNET_GE_BULK | GNUNET_GE_USER,
_("Message received from client is invalid\n"));
- return GNUNET_SYSERR; */ /* invalid message */
- /*
+ return GNUNET_SYSERR; /* invalid message */
+
}
- */
+
+ header_size = ntohs(cmsg->header.size);
+ nick_len = ntohl(cmsg->nick_len);
+ msg_len = ntohl(cmsg->msg_len);
+ room_size = ntohl(cmsg->nick_len);
+
+ nick = GNUNET_malloc(nick_len + 1);
+ message_content = GNUNET_malloc(msg_len + 1);
+ room_name = GNUNET_malloc(room_size + 1);
- pmsg = (P2P_chat_MESSAGE *) message;
- cmsg = (CS_chat_MESSAGE *) message;
+ memcpy(nick,&cmsg->nick[0],nick_len);
+ memcpy(message_content,&cmsg->nick[sizeof(nick)],msg_len);
+ memcpy(room_name,&cmsg->nick[sizeof(nick) +
sizeof(message_content)],msg_len);
- cmsg->header.size = ntohs(cmsg->header.size);
- cmsg->nick_len = ntohl(cmsg->nick_len);
- cmsg->msg_len = ntohl(cmsg->msg_len);
+ nick[nick_len] = '\0';
+ message_content[msg_len] = '\0';
+ room_name[room_size] = '\0';
- nick = GNUNET_malloc(cmsg->nick_len + 1);
- message_content = GNUNET_malloc(cmsg->msg_len + 1);
- bzero(nick,sizeof(nick));
- bzero(message_content,sizeof(message_content));
-
- memcpy(nick,&cmsg->nick[0],cmsg->nick_len);
- memcpy(message_content,&cmsg->nick[sizeof(nick)],cmsg->msg_len);
-
-
- GNUNET_hash (pmsg, cmsg->header.size, &hc);
+ GNUNET_hash (pmsg, header_size, &hc);
GNUNET_mutex_lock (chatMutex);
markSeen (&hc);
Modified: GNUnet/src/applications/chat/chat.h
===================================================================
--- GNUnet/src/applications/chat/chat.h 2008-02-08 20:38:21 UTC (rev 6204)
+++ GNUnet/src/applications/chat/chat.h 2008-02-08 22:28:28 UTC (rev 6205)
@@ -33,8 +33,9 @@
GNUNET_MessageHeader header;
unsigned long nick_len;
unsigned long msg_len;
+ unsigned long room_name_len;
char nick[1];
- char message[1];
+
} P2P_chat_MESSAGE;
typedef struct
@@ -44,8 +45,7 @@
unsigned long msg_len;
unsigned long room_name_len;
char nick[1];
- char message[1];
- char room_name[1];
+
} CS_chat_MESSAGE;
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r6205 - GNUnet/src/applications/chat,
gnunet <=