[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Strange Segfault with V 0.9.3 an MinGW Cross Compile


Hello,

On Wed, Jan 15, 2020 at 9:48 AM <g4-lisz@xxxxxxxxxxxx> wrote:

> On 15.01.20 08:27, Andreas Schneider wrote:
>
> > On Wednesday, 15 January 2020 01:22:13 CET g4-lisz@xxxxxxxxxxxx wrote:
> >> I cross compiled V 0.9.3 with MinGW on Ubuntu. The compilation worked
> >> flawlessly.
> >>
> >> But when I run my code linked to the resulting libssh.dll, it crashes
> >> immediately when I set verbosity to > 2.
> >>
> >> I could track this down to vsnprintf() which is called through line 865
> >> in channels.c:
> >>
> >>   SSH_LOG(SSH_LOG_PACKET,
> >>           "placing %zu bytes into channel buffer (%s)",
> >>           len,
> >>           s_stderr ? "stderr" : "stdout");
> > Try s_stderr -> is_stderr
>
> Hi Andreas,
>
> Haha that would be a silly issue, when the compiler would not complain
> about this...
>
> Sorry, I somehow lost the 'i' when I pasted the code into the mail.
>


I can imagine two things which could went wrong:
a) libstdc (or whomever implements the vsnprintf()) doesn't know the `%zu`
format, so this one is skipped and the `len` argument is used for the (%s)
format
b) 32/64 bit mismatch - the format (count of bytes) of the `len` on the
stack doesn't correspond to the format (count of bytes) of the `%zu`
specifier, so for the second (%s) format, some `grabage from the stack` is
used

Both these two scenarios can lead to mysterious crashes ....

Regards

Zdenek OGAR Skalak

>
> Cheers,
> Till
>
>
>

-- 
Ing. Zdeněk OGAR Skalák
Monet+ a.s.            <http://www.monetplus.cz>
Za Dvorem 505, 763 14 Zlín - Štípa, CZ
Tel: +420 / 577 110 411,  Fax: +420 / 577 914 557

Archive administrator: postmaster@lists.cynapses.org