aboutsummaryrefslogtreecommitdiff
path: root/src/psycstore
diff options
context:
space:
mode:
authorGabor X Toth <*@tg-x.net>2014-07-31 08:18:17 +0000
committerGabor X Toth <*@tg-x.net>2014-07-31 08:18:17 +0000
commit21db96c7ef17c463ae7127f48b29de0568424c2f (patch)
tree71ef583c23d2e3695c029541fdf939b786f16897 /src/psycstore
parent40884377f3126bbecbfd3243d47224b3094914f9 (diff)
downloadgnunet-21db96c7ef17c463ae7127f48b29de0568424c2f.tar.gz
gnunet-21db96c7ef17c463ae7127f48b29de0568424c2f.zip
psyc, psycstore: operation result max error size
Diffstat (limited to 'src/psycstore')
-rw-r--r--src/psycstore/gnunet-service-psycstore.c16
1 files changed, 10 insertions, 6 deletions
diff --git a/src/psycstore/gnunet-service-psycstore.c b/src/psycstore/gnunet-service-psycstore.c
index 87a2c87ab..3228659cc 100644
--- a/src/psycstore/gnunet-service-psycstore.c
+++ b/src/psycstore/gnunet-service-psycstore.c
@@ -105,17 +105,21 @@ send_result_code (struct GNUNET_SERVER_Client *client, uint64_t op_id,
105 int64_t result_code, const char *err_msg) 105 int64_t result_code, const char *err_msg)
106{ 106{
107 struct OperationResult *res; 107 struct OperationResult *res;
108 size_t err_len = 0; // FIXME: maximum length 108 size_t err_size = 0;
109 109
110 if (NULL != err_msg) 110 if (NULL != err_msg)
111 err_len = strlen (err_msg) + 1; 111 err_size = strnlen (err_msg,
112 res = GNUNET_malloc (sizeof (struct OperationResult) + err_len); 112 GNUNET_SERVER_MAX_MESSAGE_SIZE - sizeof (*res)) + 1;
113 res = GNUNET_malloc (sizeof (struct OperationResult) + err_size);
113 res->header.type = htons (GNUNET_MESSAGE_TYPE_PSYCSTORE_RESULT_CODE); 114 res->header.type = htons (GNUNET_MESSAGE_TYPE_PSYCSTORE_RESULT_CODE);
114 res->header.size = htons (sizeof (struct OperationResult) + err_len); 115 res->header.size = htons (sizeof (struct OperationResult) + err_size);
115 res->result_code = GNUNET_htonll (result_code - INT64_MIN); 116 res->result_code = GNUNET_htonll (result_code - INT64_MIN);
116 res->op_id = op_id; 117 res->op_id = op_id;
117 if (0 < err_len) 118 if (0 < err_size)
118 memcpy (&res[1], err_msg, err_len); 119 {
120 memcpy (&res[1], err_msg, err_size);
121 ((char *) &res[1])[err_size - 1] = '\0';
122 }
119 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, 123 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
120 "Sending result to client: %" PRId64 " (%s)\n", 124 "Sending result to client: %" PRId64 " (%s)\n",
121 result_code, err_msg); 125 result_code, err_msg);