On Wed, May 29, 2019 at 5:11 AM Nguyễn Thái Ngọc Duy <pclo...@gmail.com> wrote:
> Most number-related OPT_ macros store the value in an 'int'
> variable. Many of the variables in 'struct diff_options' have a
> different type, but during the conversion to using parse_options() I
> failed to notice and correct.
>
> The problem was reported on s360x which is a big-endian
> architechture. The variable to store '-w' option in this case is
> xdl_opts, 'long' type, 8 bytes. But since parse_options() assumes
> 'int' (4 bytes), it will store bits in the wrong part of xdl_opts. The
> problem was found on little-endian platforms because parse_options()

Did you mean s/found/not &/ ?

> will accidentally store at the right part of xdl_opts.
>
> There aren't much to say about the type change (except that 'int' for

s/aren't/isn't/

> xdl_opts should still be big enough, since Windows' long is the same
> size as 'int' and nobody has complained so far). Some safety checks may
> be implemented in the future to prevent class of bugs.
>
> Reported-by: Todd Zullinger <t...@pobox.com>
> Signed-off-by: Nguyễn Thái Ngọc Duy <pclo...@gmail.com>

Reply via email to