lua-users home
lua-l archive

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

Diego Nehab wrote:

Hi Bill,

As a fix I've simply put a test around the above code like this:

   if (alias) {        while (*alias) {
       lua_pushnumber(L, i);
       lua_pushstring(L, *alias);
       lua_settable(L, -3);
       i++; alias++;

The above fix works but I'm not sure if it is the best solution within
the design of luasocket; perhaps a fix deeper in the socket hierarchy
(e.g. usocket.c) would be better.

Seems hard to fix it within usocket.c. I don't object to your approach and
I am happy to prevent LuaSocket from crashing anywhere possible.


Now that I see this I remember another similar error.

gethostbyname and gethostbyaddr return a pointer to NULL when they fail
and (should) set h_errno to something. My operating system does the first
but forgets to set h_errno.
sock_gethostbyaddr and sock_gethostbyname use 0 as a success return
code and the routine returned to uses the NULL pointer  and blows up.

The line:
else return h_errno;

should probably at least contain an assertion that h_errno != IO_DONE
to alert possible porters to the real cause of their problems as soon
as possible.