Ilya Basin : regedit: Fix buffer size when exporting binary values.

Alexandre Julliard julliard at winehq.org
Thu Apr 12 15:23:12 CDT 2012


Module: wine
Branch: master
Commit: f900ed1474b0fd05dbf0a11907d0bf0682fff979
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=f900ed1474b0fd05dbf0a11907d0bf0682fff979

Author: Ilya Basin <basinilya at 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)




More information about the wine-cvs mailing list