[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [MiNT] SYS_NMLN
Hi,
Frank Naumann wrote:
Hello!
Brief check gave me that this constan represents length of the
entries of the utsname structure defined in sys/utsname.h.
Correct.
This constant should be also defined in sys/utsname.h and should
be at least 256, so adding
No, 256 is a quite large value. It is not a required minimum.
#define SYS_NMLN 256
seems resonable.
Can the library mainainer(s) express their opinion about it?
I'm the ex-maintainer...
After looking at it it's not POSIX (POSIX explicitly state that the length
The macro comes from SVID (System V Interface Description).
Since it is not ANSI C, it should not be defined unconditionally, but
rather like this:
#ifdef __USE_SVID
# define SYS_NMLN 9
#endif
But you should not define that macro at all for the MiNTLib because the
definition of that constant suggests that all members of "struct
utsname" have a constant length, which is _not_ the case with the
MiNTLib. Defining it to a wrong value, may lead to a buffer overflow.
The only "safe" definition would be the minimum value 9.
So, what's the use of the macro? If it is used as the *constant* size of
the structure members, you have to re-write the sources anyhow, since
this assumption is wrong for MiNT. If it is used to retrieve the size
of a particular member, you can just as well use the sizeof operator.
As long as "struct utsname" uses these small sizes, I would rather not
define SYS_NMLN at all. This will intentionally provoke compile-time
errors, that are easy to fix.
Ciao
Guido
--
Imperia AG, Development
Leyboldstr. 10 - D-50354 Hürth - http://www.imperia.net/