Module: wine
Branch: master
Commit: f900ed1474b0fd05dbf0a11907d0bf0682fff979
URL: http://source.winehq.org/git/wine.git/?a=commit;h=f900ed1474b0fd05dbf0a1190…
Author: Ilya Basin <basinilya(a)gmail.com>
Date: Thu Apr 12 18:10:59 2012 +0400
regedit: Fix buffer size when exporting binary values.
---
programs/regedit/regproc.c | 9 +++++----
1 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/programs/regedit/regproc.c b/programs/regedit/regproc.c
index 1a87442..f82d793 100644
--- a/programs/regedit/regproc.c
+++ b/programs/regedit/regproc.c
@@ -1018,12 +1018,13 @@ static void REGPROC_export_binary(WCHAR **line_buf, DWORD *line_buf_size, DWORD
/* - The 2 spaces that concat places at the start of the
* line effectively reduce the space available for data.
* - If the value name and hex prefix are very long
- * ( > REG_FILE_HEX_LINE_LEN) then we may overestimate
+ * ( > REG_FILE_HEX_LINE_LEN) or *line_len divides
+ * without a remainder then we may overestimate
* the needed number of lines by one. But that's ok.
- * - The trailing linefeed takes the place of a comma so
- * it's accounted for already.
+ * - The trailing '\r' takes the place of a comma so
+ * we only need to add 1 for the trailing '\n'
*/
- *line_len += *line_len / (REG_FILE_HEX_LINE_LEN - concat_prefix) * concat_len;
+ *line_len += *line_len / (REG_FILE_HEX_LINE_LEN - concat_prefix) * concat_len + 1;
REGPROC_resize_char_buffer(line_buf, line_buf_size, *line_len);
lstrcpyW(*line_buf + hex_pos, hex_prefix);
if (value_size)