starter: Fail sending stroke message if a string exceeds the buffer size

Instead of silently setting the string value to NULL, we fail completely in
sending the message to notify the user.

Fixes #844.
This commit is contained in:
Martin Willi
2015-02-06 16:44:27 +01:00
parent b851f0a105
commit eaa964b34e
+13 -1
View File
@@ -35,10 +35,16 @@ static char* push_string(stroke_msg_t *msg, char *string)
{
unsigned long string_start = msg->length;
if (string == NULL || msg->length + strlen(string) >= sizeof(stroke_msg_t))
if (string == NULL)
{
return NULL;
}
else if ((size_t)msg->length + strlen(string) >= sizeof(stroke_msg_t))
{
/* set invalid length to fail during message send */
msg->length = ~0;
return NULL;
}
else
{
msg->length += strlen(string) + 1;
@@ -53,6 +59,12 @@ static int send_stroke_msg (stroke_msg_t *msg)
char *uri, buffer[64];
int count;
if (msg->length > sizeof(stroke_msg_t))
{
DBG1(DBG_APP, "stroke message exceeds buffer size");
return -1;
}
/* starter is not called from commandline, and therefore absolutely silent */
msg->output_verbosity = -1;