On Wed, Nov 18, 2015 at 12:53:16AM +0100, Markus Teich wrote:
> Joerg Jung wrote:
> > Here comes another one...
> > 
> > As mentioned in this thread:
> > http://marc.info/?t=144772469400002&r=1&w=2 in this mail:
> > http://marc.info/?l=oss-security&m=144774881126397&w=2
> > 
> > 'sent empty' with empty being a 0-length file will produce a memory
> > access error.  On OpenBSD with malloc.conf -> J it happily dereferences a
> > 0xd0d0d0d0d0d0d0 pointer since there is not such input as line[0] if the
> > file is empty.
> > 
> > Same for a file with blank lines.
> 
> I cannot reproduce both of these bugs with current HEAD. I get the usage 
> message
> as it is expected due to the following two lines in main():
> 
>     if (!slides || !slides[0].lines)
>         usage();

Have you compiled sent with address sanitizer as suggested in the
link, or enabled the malloc.conf J option on OpenBSD, 
as mentioned above?

> Maybe you or they are running an old version?

Nope.

> Please try the latest one.

Issue is still present in git head, see below.

$ uname -rs
OpenBSD 5.8

$ touch foo

$ ./sent foo               
sent 0.2 (c) 2014-2015 markus.te...@stusta.mhn.de
usage: sent FILE1 [FILE2 ...]

$ export MALLOC_OPTIONS="J"

$ ./sent foo
Bus error (core dumped)

$ gdb -q ./sent
(gdb) run foo
Starting program: /home/yogi/dls/sent/sent foo

Program received signal SIGBUS, Bus error.
0x00000b0a0b303b81 in xdraw () at sent.c:335
335                     curw = drw_fontset_getwidth(d, s->lines[i]);
(gdb) bt
#0  0x00000b0a0b303b81 in xdraw () at sent.c:335
#1  0x00000b0a0b304a38 in main (argc=1, argv=Variable "argv" is not
available.
) at sent.c:510
(gdb) quit
The program is running.  Exit anyway? (y or n) y

$ echo "" >> foo2
$ echo "" >> foo2

$ gdb -q ./sent 
(gdb) run foo2
Starting program: /home/yogi/dls/sent/sent foo2

Program received signal SIGBUS, Bus error.
0x00001c855e203b81 in xdraw () at sent.c:335
335                     curw = drw_fontset_getwidth(d, s->lines[i]);
(gdb) bt
#0  0x00001c855e203b81 in xdraw () at sent.c:335
#1  0x00001c855e204a38 in main (argc=1, argv=Variable "argv" is not
available.
) at sent.c:510
(gdb) quit
The program is running.  Exit anyway? (y or n) y


Reply via email to