mirror of
https://github.com/lunarmodules/luasocket.git
synced 2024-12-27 04:48:21 +01:00
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:
parent
dd83e0a849
commit
908ee2cce1
@ -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
|
||||||
|
44
src/mime.c
44
src/mime.c
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*-------------------------------------------------------------------------*\
|
/*-------------------------------------------------------------------------*\
|
||||||
|
12
src/tcp.c
12
src/tcp.c
@ -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) {
|
||||||
|
@ -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}");
|
||||||
|
Loading…
Reference in New Issue
Block a user