[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[taler-anastasis] 02/02: fix crash when server url is not given with com
From: |
gnunet |
Subject: |
[taler-anastasis] 02/02: fix crash when server url is not given with command 'server add' |
Date: |
Fri, 21 Aug 2020 16:53:13 +0200 |
This is an automated email from the git hooks/post-receive script.
dennis-neufeld pushed a commit to branch master
in repository anastasis.
commit 728128561073ee232a2ccc26895412a8a242fbe2
Author: Dennis Neufeld <dennis.neufeld@students.bfh.ch>
AuthorDate: Fri Aug 21 13:30:35 2020 +0000
fix crash when server url is not given with command 'server add'
---
src/cli/anastasis-cli-splitter.c | 64 +++++++++++++++++++++++++++++++++++-----
1 file changed, 57 insertions(+), 7 deletions(-)
diff --git a/src/cli/anastasis-cli-splitter.c b/src/cli/anastasis-cli-splitter.c
index b166065..ba8a5a0 100644
--- a/src/cli/anastasis-cli-splitter.c
+++ b/src/cli/anastasis-cli-splitter.c
@@ -694,6 +694,8 @@ read_keyboard_command (void *cls)
{
(void) cls;
+ // Configure readline to auto-complete paths when the tab key is hit.
+ rl_bind_key ('\t', rl_complete);
char *buffer = readline ("anastasis-splitter> ");
size_t characters = strlen (buffer);
@@ -739,6 +741,7 @@ read_keyboard_command (void *cls)
"Unknown command '%c'\n",
buffer[0]);
free (buffer);
+ buffer = (char *)NULL;
break;
}
start_read_keyboard ();
@@ -768,7 +771,7 @@ read_keyboard_command (void *cls)
printf ("Please add a server before!\n");
free (buffer);
- buffer = NULL;
+ buffer = (char *)NULL;
start_read_keyboard ();
return;
}
@@ -780,7 +783,16 @@ read_keyboard_command (void *cls)
struct SaltState *ss = GNUNET_new (struct SaltState);
size_t url_len = characters - strlen ("server add ");
-
+ if (0 == url_len ||
+ characters < strlen ("server add "))
+ {
+ printf ("Sorry, something went wrong with your command: Server Url
missing.\n");
+ free (buffer);
+ buffer = (char *)NULL;
+ keyboard_task = NULL;
+ start_read_keyboard ();
+ return;
+ }
char *url = &buffer[strlen ("server add ")];
server->backend_url = GNUNET_malloc (url_len + 1);
GNUNET_strlcpy (server->backend_url,
@@ -800,6 +812,7 @@ read_keyboard_command (void *cls)
{
GNUNET_break (0);
free (buffer);
+ buffer = (char *)NULL;
keyboard_task = NULL;
return;
}
@@ -836,7 +849,7 @@ read_keyboard_command (void *cls)
printf ("Please add a truth before!\n");
free (buffer);
- buffer = NULL;
+ buffer = (char *)NULL;
keyboard_task = NULL;
start_read_keyboard ();
return;
@@ -867,6 +880,15 @@ read_keyboard_command (void *cls)
"At %s:%d server number is %u\n", __FILE__, __LINE__,
server_num);
token = strtok (NULL, " ");
+ if (!token)
+ {
+ printf ("Sorry, something went wrong with your command.\n");
+ free (buffer);
+ buffer = (char *)NULL;
+ keyboard_task = NULL;
+ start_read_keyboard ();
+ return;
+ }
tus->method = GNUNET_malloc (strlen (token) + 1);
GNUNET_strlcpy (tus->method,
token,
@@ -874,13 +896,21 @@ read_keyboard_command (void *cls)
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
"At %s:%d method is %s\n", __FILE__, __LINE__,
tus->method);
-
if (NULL != strstr (servers[server_num].backend_methods,
tus->method))
{
if (0 == strcmp ("question", tus->method))
{
token = strtok (NULL, "\"");
+ if (!token)
+ {
+ printf ("Sorry, something went wrong with your command.\n");
+ free (buffer);
+ buffer = (char *)NULL;
+ keyboard_task = NULL;
+ start_read_keyboard ();
+ return;
+ }
tus->secret_question = GNUNET_malloc (strlen (token) + 1);
GNUNET_strlcpy (tus->secret_question,
token,
@@ -891,6 +921,15 @@ read_keyboard_command (void *cls)
token = strtok (NULL, "\"");
token = strtok (NULL, "\"");
+ if (!token)
+ {
+ printf ("Sorry, something went wrong with your command.\n");
+ free (buffer);
+ buffer = (char *)NULL;
+ keyboard_task = NULL;
+ start_read_keyboard ();
+ return;
+ }
tus->secret_answer = GNUNET_malloc (strlen (token) + 1);
GNUNET_strlcpy (tus->secret_answer,
token,
@@ -928,6 +967,7 @@ read_keyboard_command (void *cls)
error.column,
error.position);
free (buffer);
+ buffer = (char *)NULL;
GNUNET_SCHEDULER_shutdown ();
return;
}
@@ -950,6 +990,7 @@ read_keyboard_command (void *cls)
{
GNUNET_break (0);
free (buffer);
+ buffer = (char *)NULL;
return;
}
GNUNET_array_append (tu_states,
@@ -959,6 +1000,7 @@ read_keyboard_command (void *cls)
tus->index,
server_num);
free (buffer);
+ buffer = (char *)NULL;
return;
}
else
@@ -971,6 +1013,7 @@ read_keyboard_command (void *cls)
printf ("Please add a server before!\n");
free (buffer);
+ buffer = (char *)NULL;
keyboard_task = NULL;
start_read_keyboard ();
return;
@@ -1004,6 +1047,7 @@ read_keyboard_command (void *cls)
printf ("Please add a truth before!\n");
free (buffer);
+ buffer = (char *)NULL;
start_read_keyboard ();
return;
}
@@ -1031,6 +1075,7 @@ read_keyboard_command (void *cls)
else
printf ("Please add a policy before!\n");
free (buffer);
+ buffer = (char *)NULL;
start_read_keyboard ();
return;
}
@@ -1050,6 +1095,7 @@ read_keyboard_command (void *cls)
{
printf ("Wrong argument: %s!\n", token);
free (buffer);
+ buffer = (char *)NULL;
start_read_keyboard ();
return;
}
@@ -1067,6 +1113,7 @@ read_keyboard_command (void *cls)
printf ("Policy #%u defined\n",
(pc_states_length > 0) ? pc_states_length - 1 : 0);
free (buffer);
+ buffer = (char *)NULL;
start_read_keyboard ();
return;
}
@@ -1108,6 +1155,7 @@ read_keyboard_command (void *cls)
error.column,
error.position);
free (buffer);
+ buffer = (char *)NULL;
GNUNET_SCHEDULER_shutdown ();
return;
}
@@ -1151,6 +1199,7 @@ read_keyboard_command (void *cls)
characters);
pds[i]->payment_order_id = (const char *) payment_order_id;
free (buffer);
+ buffer = (char *)NULL;
}
printf ("\n");
}
@@ -1173,12 +1222,15 @@ read_keyboard_command (void *cls)
{
GNUNET_break (0);
free (buffer);
+ buffer = (char *)NULL;
return;
}
free (buffer);
+ buffer = (char *)NULL;
return;
}
free (buffer);
+ buffer = (char *)NULL;
return;
}
@@ -1186,6 +1238,7 @@ read_keyboard_command (void *cls)
"Unknown command '%s'\n",
(char *) buffer);
free (buffer);
+ buffer = (char *)NULL;
keyboard_task = NULL;
start_read_keyboard ();
}
@@ -1292,9 +1345,6 @@ run (void *cls,
(void) args;
(void) cfgfile;
- // Configure readline to auto-complete paths when the tab key is hit.
- rl_bind_key ('\t', rl_complete);
-
GNUNET_log (GNUNET_ERROR_TYPE_INFO,
"Starting anastasis-splitter\n");
--
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.