mirror of
https://github.com/betaflight/betaflight.git
synced 2025-07-13 19:40:31 +03:00
Fixed parsing of over length custom default headers.
This commit is contained in:
parent
931b3b2b89
commit
4b5273c34e
1 changed files with 11 additions and 8 deletions
|
@ -228,12 +228,15 @@ static char cliBufferTemp[CLI_IN_BUFFER_SIZE];
|
|||
#define CUSTOM_DEFAULTS_CHANGESET_ID_PREFIX ", version: "
|
||||
#define CUSTOM_DEFAULTS_DATE_PREFIX ", date: "
|
||||
|
||||
#define MAX_CHANGESET_ID_LENGTH 8
|
||||
#define MAX_DATE_LENGTH 20
|
||||
|
||||
static bool customDefaultsHeaderParsed = false;
|
||||
static bool customDefaultsFound = false;
|
||||
static char customDefaultsManufacturerId[MAX_MANUFACTURER_ID_LENGTH + 1] = { 0 };
|
||||
static char customDefaultsBoardName[MAX_BOARD_NAME_LENGTH + 1] = { 0 };
|
||||
static char customDefaultsChangesetId[9] = { 0 };
|
||||
static char customDefaultsDate[21] = { 0 };
|
||||
static char customDefaultsChangesetId[MAX_CHANGESET_ID_LENGTH + 1] = { 0 };
|
||||
static char customDefaultsDate[MAX_DATE_LENGTH + 1] = { 0 };
|
||||
#endif
|
||||
|
||||
#if defined(USE_CUSTOM_DEFAULTS_ADDRESS)
|
||||
|
@ -4252,7 +4255,7 @@ static bool customDefaultsHasNext(const char *customDefaultsPtr)
|
|||
return *customDefaultsPtr && *customDefaultsPtr != 0xFF && customDefaultsPtr < customDefaultsEnd;
|
||||
}
|
||||
|
||||
static const char *parseCustomDefaultsHeaderElement(char *dest, const char *customDefaultsPtr, const char *prefix, char terminator)
|
||||
static const char *parseCustomDefaultsHeaderElement(char *dest, const char *customDefaultsPtr, const char *prefix, const char terminator, const unsigned maxLength)
|
||||
{
|
||||
char *endPtr = NULL;
|
||||
unsigned len = strlen(prefix);
|
||||
|
@ -4263,7 +4266,7 @@ static const char *parseCustomDefaultsHeaderElement(char *dest, const char *cust
|
|||
|
||||
if (endPtr && customDefaultsHasNext(endPtr)) {
|
||||
len = endPtr - customDefaultsPtr;
|
||||
memcpy(dest, customDefaultsPtr, len);
|
||||
memcpy(dest, customDefaultsPtr, MIN(len, maxLength));
|
||||
|
||||
customDefaultsPtr += len;
|
||||
|
||||
|
@ -4284,13 +4287,13 @@ static void parseCustomDefaultsHeader(void)
|
|||
customDefaultsPtr++;
|
||||
}
|
||||
|
||||
customDefaultsPtr = parseCustomDefaultsHeaderElement(customDefaultsManufacturerId, customDefaultsPtr, CUSTOM_DEFAULTS_MANUFACTURER_ID_PREFIX, CUSTOM_DEFAULTS_BOARD_NAME_PREFIX[0]);
|
||||
customDefaultsPtr = parseCustomDefaultsHeaderElement(customDefaultsManufacturerId, customDefaultsPtr, CUSTOM_DEFAULTS_MANUFACTURER_ID_PREFIX, CUSTOM_DEFAULTS_BOARD_NAME_PREFIX[0], MAX_MANUFACTURER_ID_LENGTH);
|
||||
|
||||
customDefaultsPtr = parseCustomDefaultsHeaderElement(customDefaultsBoardName, customDefaultsPtr, CUSTOM_DEFAULTS_BOARD_NAME_PREFIX, CUSTOM_DEFAULTS_CHANGESET_ID_PREFIX[0]);
|
||||
customDefaultsPtr = parseCustomDefaultsHeaderElement(customDefaultsBoardName, customDefaultsPtr, CUSTOM_DEFAULTS_BOARD_NAME_PREFIX, CUSTOM_DEFAULTS_CHANGESET_ID_PREFIX[0], MAX_BOARD_NAME_LENGTH);
|
||||
|
||||
customDefaultsPtr = parseCustomDefaultsHeaderElement(customDefaultsChangesetId, customDefaultsPtr, CUSTOM_DEFAULTS_CHANGESET_ID_PREFIX, CUSTOM_DEFAULTS_DATE_PREFIX[0]);
|
||||
customDefaultsPtr = parseCustomDefaultsHeaderElement(customDefaultsChangesetId, customDefaultsPtr, CUSTOM_DEFAULTS_CHANGESET_ID_PREFIX, CUSTOM_DEFAULTS_DATE_PREFIX[0], MAX_CHANGESET_ID_LENGTH);
|
||||
|
||||
customDefaultsPtr = parseCustomDefaultsHeaderElement(customDefaultsDate, customDefaultsPtr, CUSTOM_DEFAULTS_DATE_PREFIX, '\n');
|
||||
customDefaultsPtr = parseCustomDefaultsHeaderElement(customDefaultsDate, customDefaultsPtr, CUSTOM_DEFAULTS_DATE_PREFIX, '\n', MAX_DATE_LENGTH);
|
||||
}
|
||||
|
||||
customDefaultsHeaderParsed = true;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue