diff options
author | Gabor X Toth <*@tg-x.net> | 2014-07-31 08:18:17 +0000 |
---|---|---|
committer | Gabor X Toth <*@tg-x.net> | 2014-07-31 08:18:17 +0000 |
commit | 21db96c7ef17c463ae7127f48b29de0568424c2f (patch) | |
tree | 71ef583c23d2e3695c029541fdf939b786f16897 /src/psycstore | |
parent | 40884377f3126bbecbfd3243d47224b3094914f9 (diff) | |
download | gnunet-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.c | 16 |
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); |