gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] r34089 - in gnunet/src: psyc psycstore


From: gnunet
Subject: [GNUnet-SVN] r34089 - in gnunet/src: psyc psycstore
Date: Thu, 31 Jul 2014 10:18:17 +0200

Author: tg
Date: 2014-07-31 10:18:17 +0200 (Thu, 31 Jul 2014)
New Revision: 34089

Modified:
   gnunet/src/psyc/gnunet-service-psyc.c
   gnunet/src/psycstore/gnunet-service-psycstore.c
Log:
psyc, psycstore: operation result max error size

Modified: gnunet/src/psyc/gnunet-service-psyc.c
===================================================================
--- gnunet/src/psyc/gnunet-service-psyc.c       2014-07-30 21:18:13 UTC (rev 
34088)
+++ gnunet/src/psyc/gnunet-service-psyc.c       2014-07-31 08:18:17 UTC (rev 
34089)
@@ -255,11 +255,6 @@
   uint8_t tmit_state;
 
   /**
-   * FIXME: needed?
-   */
-  uint8_t in_transmit;
-
-  /**
    * Is this a channel master (#GNUNET_YES), or slave (#GNUNET_NO)?
    */
   uint8_t is_master;
@@ -609,17 +604,21 @@
                     int64_t result_code, const char *err_msg)
 {
   struct OperationResult *res;
-  size_t err_len = 0; // FIXME: maximum length
+  size_t err_size = 0;
 
   if (NULL != err_msg)
-    err_len = strlen (err_msg) + 1;
-  res = GNUNET_malloc (sizeof (struct OperationResult) + err_len);
+    err_size = strnlen (err_msg,
+                        GNUNET_SERVER_MAX_MESSAGE_SIZE - sizeof (*res)) + 1;
+  res = GNUNET_malloc (sizeof (struct OperationResult) + err_size);
   res->header.type = htons (GNUNET_MESSAGE_TYPE_PSYC_RESULT_CODE);
-  res->header.size = htons (sizeof (struct OperationResult) + err_len);
+  res->header.size = htons (sizeof (struct OperationResult) + err_size);
   res->result_code = GNUNET_htonll (result_code + INT64_MAX + 1);
   res->op_id = op_id;
-  if (0 < err_len)
-    memcpy (&res[1], err_msg, err_len);
+  if (0 < err_size)
+  {
+    memcpy (&res[1], err_msg, err_size);
+    ((char *) &res[1])[err_size - 1] = '\0';
+  }
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
              "%p Sending result to client for operation #%" PRIu64 ": "
               "%" PRId64 " (%s)\n",

Modified: gnunet/src/psycstore/gnunet-service-psycstore.c
===================================================================
--- gnunet/src/psycstore/gnunet-service-psycstore.c     2014-07-30 21:18:13 UTC 
(rev 34088)
+++ gnunet/src/psycstore/gnunet-service-psycstore.c     2014-07-31 08:18:17 UTC 
(rev 34089)
@@ -105,17 +105,21 @@
                   int64_t result_code, const char *err_msg)
 {
   struct OperationResult *res;
-  size_t err_len = 0; // FIXME: maximum length
+  size_t err_size = 0;
 
   if (NULL != err_msg)
-    err_len = strlen (err_msg) + 1;
-  res = GNUNET_malloc (sizeof (struct OperationResult) + err_len);
+    err_size = strnlen (err_msg,
+                        GNUNET_SERVER_MAX_MESSAGE_SIZE - sizeof (*res)) + 1;
+  res = GNUNET_malloc (sizeof (struct OperationResult) + err_size);
   res->header.type = htons (GNUNET_MESSAGE_TYPE_PSYCSTORE_RESULT_CODE);
-  res->header.size = htons (sizeof (struct OperationResult) + err_len);
+  res->header.size = htons (sizeof (struct OperationResult) + err_size);
   res->result_code = GNUNET_htonll (result_code - INT64_MIN);
   res->op_id = op_id;
-  if (0 < err_len)
-    memcpy (&res[1], err_msg, err_len);
+  if (0 < err_size)
+  {
+    memcpy (&res[1], err_msg, err_size);
+    ((char *) &res[1])[err_size - 1] = '\0';
+  }
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
              "Sending result to client: %" PRId64 " (%s)\n",
              result_code, err_msg);




reply via email to

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