summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2019-06-15 15:45:15 +0200
committerChristian Grothoff <christian@grothoff.org>2019-06-15 15:45:15 +0200
commitad58257c5b5fc728faee55aaaea3ce747447a28a (patch)
tree45c9898bc9fda3dd77df49f36030b4e2e683968f
parent6574f81dc505637bb6717066074119463cd944de (diff)
downloadtwister-ad58257c5b5fc728faee55aaaea3ce747447a28a.tar.gz
twister-ad58257c5b5fc728faee55aaaea3ce747447a28a.tar.bz2
twister-ad58257c5b5fc728faee55aaaea3ce747447a28a.zip
do never crash if API is miss-used, simply log and return NULL (#5744)
-rw-r--r--src/twister/twister_api.c47
1 files changed, 29 insertions, 18 deletions
diff --git a/src/twister/twister_api.c b/src/twister/twister_api.c
index faa879d..7087d62 100644
--- a/src/twister/twister_api.c
+++ b/src/twister/twister_api.c
@@ -324,6 +324,12 @@ TALER_TWISTER_flip_download
struct TWISTER_FlipPath *src; //FIXME 'src' right name?
uint16_t stralloc;
+ stralloc = strlen (path) + 1;
+ if (stralloc + sizeof (struct TWISTER_FlipPath) > UINT16_MAX)
+ {
+ GNUNET_break (0);
+ return NULL;
+ }
op = GNUNET_new (struct TALER_TWISTER_Operation);
op->h = h;
op->cb = cb;
@@ -331,10 +337,6 @@ TALER_TWISTER_flip_download
GNUNET_CONTAINER_DLL_insert_tail (h->op_head,
h->op_tail,
op);
- stralloc = strlen (path) + 1;
-
- GNUNET_assert
- (stralloc + sizeof (struct TWISTER_FlipPath) < UINT16_MAX);
env = GNUNET_MQ_msg_extra (src,
stralloc,
TWISTER_MESSAGE_TYPE_FLIP_PATH_DL);
@@ -373,6 +375,11 @@ TALER_TWISTER_flip_upload
struct TWISTER_FlipPath *src; //FIXME 'src' right name?
uint16_t stralloc = strlen (path) + 1;
+ if (stralloc + sizeof (struct TWISTER_FlipPath) > UINT16_MAX)
+ {
+ GNUNET_break (0);
+ return NULL;
+ }
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
"Will UL-flip: %s\n",
path);
@@ -385,8 +392,6 @@ TALER_TWISTER_flip_upload
h->op_tail,
op);
- GNUNET_assert
- (stralloc + sizeof (struct TWISTER_FlipPath) < UINT16_MAX);
env = GNUNET_MQ_msg_extra (src,
stralloc,
TWISTER_MESSAGE_TYPE_FLIP_PATH_UL);
@@ -423,6 +428,12 @@ TALER_TWISTER_delete_path
struct TWISTER_DeletePath *src; //FIXME 'src' right name?
uint16_t stralloc;
+ stralloc = strlen (path) + 1;
+ if (stralloc + sizeof (struct TWISTER_DeletePath) > UINT16_MAX)
+ {
+ GNUNET_break (0);
+ return NULL;
+ }
op = GNUNET_new (struct TALER_TWISTER_Operation);
op->h = h;
op->cb = cb;
@@ -430,12 +441,6 @@ TALER_TWISTER_delete_path
GNUNET_CONTAINER_DLL_insert_tail (h->op_head,
h->op_tail,
op);
-
- stralloc = strlen (path) + 1;
-
-
- GNUNET_assert
- (stralloc + sizeof (struct TWISTER_DeletePath) < UINT16_MAX);
env = GNUNET_MQ_msg_extra (src,
stralloc,
TWISTER_MESSAGE_TYPE_DELETE_PATH);
@@ -472,6 +477,12 @@ TALER_TWISTER_modify_path_dl (struct TALER_TWISTER_Handle *h,
struct TWISTER_ModifyPath *src;
uint16_t stralloc;
+ stralloc = strlen (path) + strlen (value) + 2;
+ if (sizeof (*src) + stralloc > UINT16_MAX)
+ {
+ GNUNET_break (0);
+ return NULL;
+ }
op = GNUNET_new (struct TALER_TWISTER_Operation);
op->h = h;
op->cb = cb;
@@ -479,9 +490,6 @@ TALER_TWISTER_modify_path_dl (struct TALER_TWISTER_Handle *h,
GNUNET_CONTAINER_DLL_insert_tail (h->op_head,
h->op_tail,
op);
-
- stralloc = strlen (path) + strlen (value) + 2;
- GNUNET_assert (sizeof (*src) + stralloc < UINT16_MAX);
env = GNUNET_MQ_msg_extra (src,
stralloc,
TWISTER_MESSAGE_TYPE_MODIFY_PATH_DL);
@@ -521,6 +529,12 @@ TALER_TWISTER_modify_path_ul (struct TALER_TWISTER_Handle *h,
struct TWISTER_ModifyPath *src;
uint16_t stralloc;
+ stralloc = strlen (path) + strlen (value) + 2;
+ if (sizeof (*src) + stralloc > UINT16_MAX)
+ {
+ GNUNET_break (0);
+ return NULL;
+ }
op = GNUNET_new (struct TALER_TWISTER_Operation);
op->h = h;
op->cb = cb;
@@ -528,9 +542,6 @@ TALER_TWISTER_modify_path_ul (struct TALER_TWISTER_Handle *h,
GNUNET_CONTAINER_DLL_insert_tail (h->op_head,
h->op_tail,
op);
-
- stralloc = strlen (path) + strlen (value) + 2;
- GNUNET_assert (sizeof (*src) + stralloc < UINT16_MAX);
env = GNUNET_MQ_msg_extra (src,
stralloc,
TWISTER_MESSAGE_TYPE_MODIFY_PATH_UL);