Re: Termcap issue in cygwin

2002-04-03 Thread Christopher Faylor

On Wed, Apr 03, 2002 at 04:38:01AM -0800, Eduardo Chappa wrote:
Hello,

 This message has two parts, the long story, and the short story. First
the short story.

   As far as I understand, the function tgetent, has two parameters, which
are documented in the manual for termcap(3) and tgetent, the first one is
of type (char *). According to the manual of the unix system I am using
the length of this string is supposed to be 1024. I have found that the
entries for the linux and cygwin terminal are over 1024 characters long,
which causes this function to corrupt the stack and the program dump core.
A classical buffer overflow bug. I believe this is an issue with the
termcap database, which I believe should be shortened to satisfy the 1024
characters length requirement in (it seems) most (if not all) Unix
systems.

http://cygwin.com/lists.html#see-above
http://cygwin.com/cgi-bin/htsearch?method=andsort=threadrestrict=%2Fml%2Fcygwin%2Fwords=termcap+1024

Now the long story (which puts the short story in context).  My real
goal was to compile Pine for cygwin, which I did, and you are welcome
to give it a try by downloading it from my web page (address below).
The problem that I had was that every time that I started Pine in the
cygwin terminal, it would dump core, due to the problem described
above.  Pine needed to be executed under rxvt, for example, in order to
not to make it dump core.  Although I believed for some time that rxvt
was a requirement in order to execute Pine, now I realize that it is
not, but my request instead is to make the work around of giving more
space to the first argument of tgetent disappear.

Is there any chance that both the linux and the cygwin entries will be
shortened to less than 1024 characters?, or should I just have to
accept this as a given?

Bottom line: If you want to submit a patch which accomplishes this
shortening without eliminating functionality, please do.

Otherwise, increasing the size of your buffer is the correct solution.

cgf

--
Unsubscribe info:  http://cygwin.com/ml/#unsubscribe-simple
Bug reporting: http://cygwin.com/bugs.html
Documentation: http://cygwin.com/docs.html
FAQ:   http://cygwin.com/faq/




Re: Termcap issue in cygwin

2002-04-03 Thread Kurt Roeckx

On Wed, Apr 03, 2002 at 04:38:01AM -0800, Eduardo Chappa wrote:
As far as I understand, the function tgetent, has two parameters, which
 are documented in the manual for termcap(3) and tgetent, the first one is
 of type (char *). According to the manual of the unix system I am using
 the length of this string is supposed to be 1024. I have found that the
 entries for the linux and cygwin terminal are over 1024 characters long,
 which causes this function to corrupt the stack and the program dump core.
 A classical buffer overflow bug. I believe this is an issue with the
 termcap database, which I believe should be shortened to satisfy the 1024
 characters length requirement in (it seems) most (if not all) Unix
 systems.

A small part of the termcap info page:

   With the Unix version of termcap, you must allocate space for the
description yourself and pass the address of the space as the argument
BUFFER.  There is no way you can tell how much space is needed, so the
convention is to allocate a buffer 2048 characters long and assume that
is enough.  (Formerly the convention was to allocate 1024 characters and
assume that was enough.  But one day, for one kind of terminal, that was
not enough.)

It even has some examples.


Kurt


--
Unsubscribe info:  http://cygwin.com/ml/#unsubscribe-simple
Bug reporting: http://cygwin.com/bugs.html
Documentation: http://cygwin.com/docs.html
FAQ:   http://cygwin.com/faq/