[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Re: Lua and networking - possibly basic question
- From: Steve Kemp <steve@...>
- Date: Sat, 29 Oct 2005 20:04:53 +0100
On Sat, Oct 29, 2005 at 03:56:35PM -0300, Alex Queiroz wrote:
> In function pRead of libhttpd.c:
>
> ----
> n = read(sockfd,buffer,sizeof(buffer)-1);
>
>
> lua_pushnumber(L, n );
> lua_pushstring(L, buffer );
> ----
>
> Are you sure the buffer is always null-terminated?
>
I think I can be pretty sure that the buffer will have a
trailing null. Looking at the code:
/* Buffer we read() into */
char buffer[4096];
memset( buffer, '\0', sizeof(buffer));
..
n = read(sockfd,buffer,sizeof(buffer)-1);
1. Create a buffer 4096 bytes long.
2. Set it full of '\0'.
3. Read no more than 4095 bytes into it: (sizeof(buffer)-1);
So there will *always* be at least one trailing NULL on the end
of the buffer.
(This from the CVS repository - some things changed, including the
size of the read buffer, but the memset/sizeof(-1) is the same in
the code you quoted).
A more interesting question is what to do if the data read contains
NULLs. So far that hasn't been a problem, but I'm not sure without
checking whether Lua strings are NULL-clean..
Steve
--