gnunet-svn
[Top][All Lists]
Advanced

[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;
 
 





reply via email to

[Prev in Thread] Current Thread [Next in Thread]