From 8a05efa36566fbd50c3222e5f31676b52d10fa4a Mon Sep 17 00:00:00 2001 From: Joseph Henry Date: Tue, 13 Oct 2015 17:57:17 -0400 Subject: [PATCH] EBADF, EOPNOTSUPP, EMFILE error repoarting for accept() --- netcon/NetconEthernetTap.cpp | 12 ++++++------ netcon/intercept.c | 34 ++++++++++++++++++++++++++-------- netcon/libintercept.so.1.0 | Bin 52376 -> 52984 bytes 3 files changed, 32 insertions(+), 14 deletions(-) diff --git a/netcon/NetconEthernetTap.cpp b/netcon/NetconEthernetTap.cpp index fc37ee87c..f01dcadf9 100644 --- a/netcon/NetconEthernetTap.cpp +++ b/netcon/NetconEthernetTap.cpp @@ -494,18 +494,18 @@ int NetconEthernetTap::send_return_value(int fd, int retval, int _errno = 0) to be accepted. POSIX.1-2001 allows either error to be returned for this case, and does not require these constants to have the same value, so a portable application should check for both possibilities. - [ ] EBADF - The descriptor is invalid. - [i] ECONNABORTED - A connection has been aborted. + [I] EBADF - The descriptor is invalid. + [I] ECONNABORTED - A connection has been aborted. [i] EFAULT - The addr argument is not in a writable part of the user address space. [ ] EINTR - The system call was interrupted by a signal that was caught before a valid connection arrived; see signal(7). [ ] EINVAL - Socket is not listening for connections, or addrlen is invalid (e.g., is negative). [ ] EINVAL - (accept4()) invalid value in flags. - [ ] EMFILE - The per-process limit of open file descriptors has been reached. + [I] EMFILE - The per-process limit of open file descriptors has been reached. [ ] ENFILE - The system limit on the total number of open files has been reached. [ ] ENOBUFS, ENOMEM - Not enough free memory. This often means that the memory allocation is limited by the socket buffer limits, not by the system memory. [i] ENOTSOCK - The descriptor references a file, not a socket. - [i] EOPNOTSUPP - The referenced socket is not of type SOCK_STREAM. + [I] EOPNOTSUPP - The referenced socket is not of type SOCK_STREAM. [ ] EPROTO - Protocol error. * @@ -675,8 +675,8 @@ void NetconEthernetTap::nc_err(void *arg, err_t err) l->tap->send_return_value(l->conn, -1, EISCONN); break; case ERR_ABRT: - fprintf(stderr, "nc_err(): ERR_ABRT->ETIMEDOUT\n"); // FIXME: Correct? - l->tap->send_return_value(l->conn, -1, ETIMEDOUT); + fprintf(stderr, "nc_err(): ERR_ABRT->ECONNREFUSED\n"); + l->tap->send_return_value(l->conn, -1, ECONNREFUSED); break; // FIXME: Below are errors which don't have a standard errno correlate diff --git a/netcon/intercept.c b/netcon/intercept.c index daf88f6a2..46f01987a 100755 --- a/netcon/intercept.c +++ b/netcon/intercept.c @@ -73,6 +73,8 @@ char *progname = ""; #include "common.h" #ifdef CHECKS + //#include + #include #include /* for NPROTO */ #define SOCK_MAX (SOCK_PACKET + 1) @@ -763,6 +765,30 @@ int accept4(ACCEPT4_SIG) accept() intercept function */ int accept(ACCEPT_SIG) { +#ifdef CHECKS + /* Check that this is a valid fd */ + if(fcntl(sockfd, F_GETFD) < 0) { + return -1; + errno = EBADF; + } + int sock_type = -1; + socklen_t sock_type_len = sizeof(sock_type); + getsockopt(sockfd, SOL_SOCKET, SO_TYPE, + (void *) &sock_type, &sock_type_len); + /* Check that this socket supports accept() */ + if(!(sock_type & (SOCK_STREAM | SOCK_SEQPACKET))) { + errno = EOPNOTSUPP; + return -1; + } + /* Check that we haven't hit the soft-limit file descriptors allowed */ + struct rlimit rl; + getrlimit(RLIMIT_NOFILE, &rl); + if(sockfd >= rl.rlim_cur){ + errno = EMFILE; + return -1; + } +#endif + #ifdef DUMMY return realaccept(sockfd, addr, addrlen); #else @@ -770,17 +796,9 @@ int accept(ACCEPT_SIG) if(sockfd == STDIN_FILENO || sockfd == STDOUT_FILENO || sockfd == STDERR_FILENO) return(realaccept(sockfd, addr, addrlen)); - int sock_type = -1; - socklen_t sock_type_len = sizeof(sock_type); - - getsockopt(sockfd, SOL_SOCKET, SO_TYPE, - (void *) &sock_type, &sock_type_len); - addr->sa_family = AF_INET; /* TODO: also get address info */ - /* FIXME: Check that socket is type SOCK_STREAM */ - char cmd[BUF_SZ]; if(realaccept == NULL) { dwr( "Unresolved symbol: accept()\n"); diff --git a/netcon/libintercept.so.1.0 b/netcon/libintercept.so.1.0 index 4d8b2f198634e13413eeaedb69d91384996867bf..968eb4bf43f03c3158ac2eea55d6fee71fe4792d 100755 GIT binary patch literal 52984 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ÐXi3B64F3=R@VJVMli#r=@Q+Y#!`kj2vw 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 literal 52376 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