mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-02-26 20:22:11 +01:00
Ensure g_key_file_load_from_file() strips a \r on a 4 KB boundary
When g_key_file_parse_data() encountered \n, it was checking the previous character in the current input buffer for a \r to erase, rather than the previous character in the parse buffer. If g_key_file_load_from_file() was given a file with a \r\n sequence straddling a 4 KB boundary, the \n would be the first character in the input buffer, so the \r would not be properly stripped. Bug #640695. Found-by: Jan Harkes <jaharkes@cs.cmu.edu>
This commit is contained in:
parent
e644b29190
commit
440e6f4a61
@ -953,7 +953,9 @@ g_key_file_parse_data (GKeyFile *key_file,
|
|||||||
{
|
{
|
||||||
if (data[i] == '\n')
|
if (data[i] == '\n')
|
||||||
{
|
{
|
||||||
if (i > 0 && data[i - 1] == '\r')
|
if (key_file->parse_buffer->len > 0
|
||||||
|
&& (key_file->parse_buffer->str[key_file->parse_buffer->len - 1]
|
||||||
|
== '\r'))
|
||||||
g_string_erase (key_file->parse_buffer,
|
g_string_erase (key_file->parse_buffer,
|
||||||
key_file->parse_buffer->len - 1,
|
key_file->parse_buffer->len - 1,
|
||||||
1);
|
1);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user