mirror of
https://github.com/owntone/owntone-server.git
synced 2025-02-03 09:56:00 -05:00
Don't segfault on invalid utf8 while sorting
`strmblen` returns -1 on invalid sequences, which causes a segfault when passed as length to `stpncpy`.
This commit is contained in:
parent
191ad341c2
commit
bbb21b0bad
@ -184,6 +184,7 @@ sort_tag_create(char **sort_tag, char *src_tag)
|
|||||||
ucs4_t puc;
|
ucs4_t puc;
|
||||||
int numlen;
|
int numlen;
|
||||||
size_t len;
|
size_t len;
|
||||||
|
int charlen;
|
||||||
|
|
||||||
/* Note: include terminating NUL in string length for u8_normalize */
|
/* Note: include terminating NUL in string length for u8_normalize */
|
||||||
|
|
||||||
@ -236,7 +237,11 @@ sort_tag_create(char **sort_tag, char *src_tag)
|
|||||||
if (number)
|
if (number)
|
||||||
append_number = 1; // A number has ended so time to append it
|
append_number = 1; // A number has ended so time to append it
|
||||||
else
|
else
|
||||||
o_ptr = u8_stpncpy(o_ptr, i_ptr, u8_strmblen(i_ptr)); // No numbers in sight, just append char
|
{
|
||||||
|
charlen = u8_strmblen(i_ptr);
|
||||||
|
if (charlen >= 0)
|
||||||
|
o_ptr = u8_stpncpy(o_ptr, i_ptr, charlen); // No numbers in sight, just append char
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Break if less than 100 bytes remain (prevent buffer overflow)
|
// Break if less than 100 bytes remain (prevent buffer overflow)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user