err_to_errno() doesn't check array index properly.
Suggested patch:
RCS file: /cvsroot/lwip/lwip/src/api/sockets.c,v
retrieving revision 1.25
diff -b -u -r1.25 sockets.c
--- sockets.c 9 Nov 2004 11:44:06 -0000 1.25
+++ sockets.c 3 Feb 2006 22:34:04 -0000
@@ -87,9 +87,12 @@
EADDRINUSE /* ERR_USE -10 Address in use. */
};
+#define ERR_TO_ERRNO_TABLE_SIZE \
+ (sizeof(err_to_errno_table)/sizeof(err_to_errno_table[0]))
+
#define err_to_errno(err) \
- ((err) < (sizeof(err_to_errno_table)/sizeof(int))) ? \
- err_to_errno_table[-(err)] : EIO
+ (-(err) >= 0 && -(err) < ERR_TO_ERRNO_TABLE_SIZE ? \
+ err_to_errno_table[-(err)] : EIO)
#ifdef ERRNO
#define set_errno(err) errno = (err)
Regards,
Curt McDowell
Broadcom Corp.
_______________________________________________
lwip-users mailing list
[email protected]
http://lists.nongnu.org/mailman/listinfo/lwip-users