Fix two crashes and add -Wshadow so that this can't happen again.

The two crashes are the s/const char *// changes in tcp.c.  The rest
is cleanup so it will build.
This commit is contained in:
Paul Aurich 2011-04-27 10:42:20 -07:00 committed by Sam Roberts
parent dd83e0a849
commit 908ee2cce1
4 changed files with 32 additions and 32 deletions

View File

@ -48,7 +48,7 @@ CC_linux=gcc
DEF_linux=-DLUASOCKET_DEBUG \ DEF_linux=-DLUASOCKET_DEBUG \
-DLUASOCKET_API='__attribute__((visibility("default")))' \ -DLUASOCKET_API='__attribute__((visibility("default")))' \
-DMIME_API='__attribute__((visibility("default")))' -DMIME_API='__attribute__((visibility("default")))'
CFLAGS_linux= -I$(LUAINC) $(DEF) -pedantic -Wall -O2 -fpic \ CFLAGS_linux= -I$(LUAINC) $(DEF) -pedantic -Wall -Wshadow -Wextra -Wimplicit -O2 -ggdb3 -fpic \
-fvisibility=hidden -fvisibility=hidden
LDFLAGS_linux=-O -shared -fpic -o LDFLAGS_linux=-O -shared -fpic -o
LD_linux=gcc LD_linux=gcc

View File

@ -35,12 +35,12 @@ static int mime_global_eol(lua_State *L);
static int mime_global_dot(lua_State *L); static int mime_global_dot(lua_State *L);
static size_t dot(int c, size_t state, luaL_Buffer *buffer); static size_t dot(int c, size_t state, luaL_Buffer *buffer);
static void b64setup(UC *b64unbase); static void b64setup(UC *base);
static size_t b64encode(UC c, UC *input, size_t size, luaL_Buffer *buffer); static size_t b64encode(UC c, UC *input, size_t size, luaL_Buffer *buffer);
static size_t b64pad(const UC *input, size_t size, luaL_Buffer *buffer); static size_t b64pad(const UC *input, size_t size, luaL_Buffer *buffer);
static size_t b64decode(UC c, UC *input, size_t size, luaL_Buffer *buffer); static size_t b64decode(UC c, UC *input, size_t size, luaL_Buffer *buffer);
static void qpsetup(UC *qpclass, UC *qpunbase); static void qpsetup(UC *class, UC *unbase);
static void qpquote(UC c, luaL_Buffer *buffer); static void qpquote(UC c, luaL_Buffer *buffer);
static size_t qpdecode(UC c, UC *input, size_t size, luaL_Buffer *buffer); static size_t qpdecode(UC c, UC *input, size_t size, luaL_Buffer *buffer);
static size_t qpencode(UC c, UC *input, size_t size, static size_t qpencode(UC c, UC *input, size_t size,
@ -149,12 +149,12 @@ static int mime_global_wrp(lua_State *L)
/*-------------------------------------------------------------------------*\ /*-------------------------------------------------------------------------*\
* Fill base64 decode map. * Fill base64 decode map.
\*-------------------------------------------------------------------------*/ \*-------------------------------------------------------------------------*/
static void b64setup(UC *b64unbase) static void b64setup(UC *unbase)
{ {
int i; int i;
for (i = 0; i <= 255; i++) b64unbase[i] = (UC) 255; for (i = 0; i <= 255; i++) unbase[i] = (UC) 255;
for (i = 0; i < 64; i++) b64unbase[b64base[i]] = (UC) i; for (i = 0; i < 64; i++) unbase[b64base[i]] = (UC) i;
b64unbase['='] = 0; unbase['='] = 0;
} }
/*-------------------------------------------------------------------------*\ /*-------------------------------------------------------------------------*\
@ -349,24 +349,24 @@ static int mime_global_unb64(lua_State *L)
* Split quoted-printable characters into classes * Split quoted-printable characters into classes
* Precompute reverse map for encoding * Precompute reverse map for encoding
\*-------------------------------------------------------------------------*/ \*-------------------------------------------------------------------------*/
static void qpsetup(UC *qpclass, UC *qpunbase) static void qpsetup(UC *cl, UC *unbase)
{ {
int i; int i;
for (i = 0; i < 256; i++) qpclass[i] = QP_QUOTED; for (i = 0; i < 256; i++) cl[i] = QP_QUOTED;
for (i = 33; i <= 60; i++) qpclass[i] = QP_PLAIN; for (i = 33; i <= 60; i++) cl[i] = QP_PLAIN;
for (i = 62; i <= 126; i++) qpclass[i] = QP_PLAIN; for (i = 62; i <= 126; i++) cl[i] = QP_PLAIN;
qpclass['\t'] = QP_IF_LAST; cl['\t'] = QP_IF_LAST;
qpclass[' '] = QP_IF_LAST; cl[' '] = QP_IF_LAST;
qpclass['\r'] = QP_CR; cl['\r'] = QP_CR;
for (i = 0; i < 256; i++) qpunbase[i] = 255; for (i = 0; i < 256; i++) unbase[i] = 255;
qpunbase['0'] = 0; qpunbase['1'] = 1; qpunbase['2'] = 2; unbase['0'] = 0; unbase['1'] = 1; unbase['2'] = 2;
qpunbase['3'] = 3; qpunbase['4'] = 4; qpunbase['5'] = 5; unbase['3'] = 3; unbase['4'] = 4; unbase['5'] = 5;
qpunbase['6'] = 6; qpunbase['7'] = 7; qpunbase['8'] = 8; unbase['6'] = 6; unbase['7'] = 7; unbase['8'] = 8;
qpunbase['9'] = 9; qpunbase['A'] = 10; qpunbase['a'] = 10; unbase['9'] = 9; unbase['A'] = 10; unbase['a'] = 10;
qpunbase['B'] = 11; qpunbase['b'] = 11; qpunbase['C'] = 12; unbase['B'] = 11; unbase['b'] = 11; unbase['C'] = 12;
qpunbase['c'] = 12; qpunbase['D'] = 13; qpunbase['d'] = 13; unbase['c'] = 12; unbase['D'] = 13; unbase['d'] = 13;
qpunbase['E'] = 14; qpunbase['e'] = 14; qpunbase['F'] = 15; unbase['E'] = 14; unbase['e'] = 14; unbase['F'] = 15;
qpunbase['f'] = 15; unbase['f'] = 15;
} }
/*-------------------------------------------------------------------------*\ /*-------------------------------------------------------------------------*\

View File

@ -40,7 +40,7 @@ static int meth_setfd(lua_State *L);
static int meth_dirty(lua_State *L); static int meth_dirty(lua_State *L);
/* tcp object methods */ /* tcp object methods */
static luaL_reg tcp[] = { static luaL_reg tcp_methods[] = {
{"__gc", meth_close}, {"__gc", meth_close},
{"__tostring", auxiliar_tostring}, {"__tostring", auxiliar_tostring},
{"accept", meth_accept}, {"accept", meth_accept},
@ -88,9 +88,9 @@ static luaL_reg func[] = {
int tcp_open(lua_State *L) int tcp_open(lua_State *L)
{ {
/* create classes */ /* create classes */
auxiliar_newclass(L, "tcp{master}", tcp); auxiliar_newclass(L, "tcp{master}", tcp_methods);
auxiliar_newclass(L, "tcp{client}", tcp); auxiliar_newclass(L, "tcp{client}", tcp_methods);
auxiliar_newclass(L, "tcp{server}", tcp); auxiliar_newclass(L, "tcp{server}", tcp_methods);
/* create class groups */ /* create class groups */
auxiliar_add2group(L, "tcp{master}", "tcp{any}"); auxiliar_add2group(L, "tcp{master}", "tcp{any}");
auxiliar_add2group(L, "tcp{client}", "tcp{any}"); auxiliar_add2group(L, "tcp{client}", "tcp{any}");
@ -359,7 +359,7 @@ static const char *trybind6(const char *localaddr, const char *localserv,
for (iterator = resolved; iterator; iterator = iterator->ai_next) { for (iterator = resolved; iterator; iterator = iterator->ai_next) {
/* create a new socket each time because parameters /* create a new socket each time because parameters
* may have changed */ * may have changed */
const char *err = socket_strerror(socket_create(&tcp->sock, err = socket_strerror(socket_create(&tcp->sock,
iterator->ai_family, iterator->ai_socktype, iterator->ai_family, iterator->ai_socktype,
iterator->ai_protocol)); iterator->ai_protocol));
/* if failed to create socket, bail out */ /* if failed to create socket, bail out */
@ -445,7 +445,7 @@ static const char *tryconnect6(const char *remoteaddr, const char *remoteserv,
p_timeout tm = timeout_markstart(&tcp->tm); p_timeout tm = timeout_markstart(&tcp->tm);
/* create new socket if one wasn't created by the bind stage */ /* create new socket if one wasn't created by the bind stage */
if (tcp->sock == SOCKET_INVALID) { if (tcp->sock == SOCKET_INVALID) {
const char *err = socket_strerror(socket_create(&tcp->sock, err = socket_strerror(socket_create(&tcp->sock,
iterator->ai_family, iterator->ai_socktype, iterator->ai_family, iterator->ai_socktype,
iterator->ai_protocol)); iterator->ai_protocol));
if (err != NULL) { if (err != NULL) {

View File

@ -44,7 +44,7 @@ static int meth_setfd(lua_State *L);
static int meth_dirty(lua_State *L); static int meth_dirty(lua_State *L);
/* udp object methods */ /* udp object methods */
static luaL_reg udp[] = { static luaL_reg udp_methods[] = {
{"__gc", meth_close}, {"__gc", meth_close},
{"__tostring", auxiliar_tostring}, {"__tostring", auxiliar_tostring},
{"close", meth_close}, {"close", meth_close},
@ -98,8 +98,8 @@ static luaL_reg func[] = {
int udp_open(lua_State *L) int udp_open(lua_State *L)
{ {
/* create classes */ /* create classes */
auxiliar_newclass(L, "udp{connected}", udp); auxiliar_newclass(L, "udp{connected}", udp_methods);
auxiliar_newclass(L, "udp{unconnected}", udp); auxiliar_newclass(L, "udp{unconnected}", udp_methods);
/* create class groups */ /* create class groups */
auxiliar_add2group(L, "udp{connected}", "udp{any}"); auxiliar_add2group(L, "udp{connected}", "udp{any}");
auxiliar_add2group(L, "udp{unconnected}", "udp{any}"); auxiliar_add2group(L, "udp{unconnected}", "udp{any}");