URL:
<http://savannah.gnu.org/bugs/?47531>
Summary: One byte heap buffer overflow in x-lua.c (triggered
by make check)
Project: GNU gettext
Submitted by: hanno
Submitted on: Fri 25 Mar 2016 02:02:44 PM CET
Category: None
Severity: 3 - Normal
Item Group: None
Status: None
Privacy: Public
Assigned to: None
Open/Closed: Open
Discussion Lock: Any
_______________________________________________________
Details:
There is a one byte heap buffer overflow in x-lua.c. This is the code:
static void
string_end ()
{
string_buf[string_buf_length] = '\0';
}
The problem is that when string_buf_length is larger than string_buf it will
still write. In the function above (string_add) there is a check for that and
a call to xrealloc in that case. See attached patch for a similar change to
string_end (I realloc only one additional byte because I assume after
string_end no more memory is needed).
This was found by running the test suite (make check) with address sanitizer
enabled. I'll attach the address sanitizer error message as well.
_______________________________________________________
File Attachments:
-------------------------------------------------------
Date: Fri 25 Mar 2016 02:02:44 PM CET Name: gettext-fix-bufferoverflow.diff
Size: 436B By: hanno
<http://savannah.gnu.org/bugs/download.php?file_id=36761>
-------------------------------------------------------
Date: Fri 25 Mar 2016 02:02:44 PM CET Name: gettext-lua-overflow-asan.txt
Size: 4kB By: hanno
<http://savannah.gnu.org/bugs/download.php?file_id=36762>
_______________________________________________________
Reply to this item at:
<http://savannah.gnu.org/bugs/?47531>
_______________________________________________
Message sent via/by Savannah
http://savannah.gnu.org/