AP_Filesystem: correct run-length encoding in param download

If a parameter's name was a prefix of the previous name we would
suffer an integer-wrap problem and incorrectly encode the parameter name
This commit is contained in:
Peter Barker 2022-05-02 14:48:35 +10:00 committed by Andrew Tridgell
parent 20a2e6aaf0
commit 6eaf2c545a
1 changed files with 6 additions and 1 deletions

View File

@ -181,7 +181,12 @@ uint8_t AP_Filesystem_Param::pack_param(const struct rfile &r, struct cursor &c,
pname++;
last_name++;
}
const uint8_t name_len = strlen(pname);
uint8_t name_len = strlen(pname);
if (name_len == 0) {
name_len = 1;
common_len--;
pname--;
}
const uint8_t type_len = AP_Param::type_size(ptype);
uint8_t packed_len = type_len + name_len + 2;
const uint8_t flags = 0;