summaryrefslogtreecommitdiff
path: root/rpcapd
diff options
context:
space:
mode:
authorGuy Harris <guy@alum.mit.edu>2019-06-29 19:30:05 -0700
committerGuy Harris <guy@alum.mit.edu>2019-06-29 19:30:05 -0700
commit81e850934fc00eb60c12b240fda57b7c05223cff (patch)
tree600f1099d3c3b58415cd455c5ab51569b35d23af /rpcapd
parent94dfe9f2fe7abcd306ec67b7c8a44cbc7e6b1f75 (diff)
downloadlibpcap-81e850934fc00eb60c12b240fda57b7c05223cff.tar.gz
Have a pcap_fmt_errmsg_for_win32_err() routine and use it.
It's like pcap_fmt_errmsg_for_errno(), but for Windows error codes. Use it, rather than calling pcap_win32_err_to_str() and then formatting a message with pcap_strerror(). Clean up some error messages while we're at it.
Diffstat (limited to 'rpcapd')
-rw-r--r--rpcapd/daemon.c22
-rw-r--r--rpcapd/rpcapd.c53
-rw-r--r--rpcapd/win32-svc.c6
3 files changed, 44 insertions, 37 deletions
diff --git a/rpcapd/daemon.c b/rpcapd/daemon.c
index ab1a6a00..aaa54c9e 100644
--- a/rpcapd/daemon.c
+++ b/rpcapd/daemon.c
@@ -436,7 +436,7 @@ daemon_serviceloop(SOCKET sockctrl, int isactive, char *passiveClients,
if (getpeername(pars.sockctrl, (struct sockaddr *)&from,
&fromlen) == -1)
{
- sock_geterror("getpeername(): ", errmsgbuf, PCAP_ERRBUF_SIZE);
+ sock_geterror("getpeername()", errmsgbuf, PCAP_ERRBUF_SIZE);
if (rpcap_senderror(pars.sockctrl, pars.ssl, 0, PCAP_ERR_NETW, errmsgbuf, errbuf) == -1)
rpcapd_log(LOGPRIO_ERROR, "Send to client failed: %s", errbuf);
goto end;
@@ -510,7 +510,7 @@ daemon_serviceloop(SOCKET sockctrl, int isactive, char *passiveClients,
retval = select((int)pars.sockctrl + 1, &rfds, NULL, NULL, &tv);
if (retval == -1)
{
- sock_geterror("select failed: ", errmsgbuf, PCAP_ERRBUF_SIZE);
+ sock_geterror("select() failed", errmsgbuf, PCAP_ERRBUF_SIZE);
if (rpcap_senderror(pars.sockctrl, pars.ssl, 0, PCAP_ERR_NETW, errmsgbuf, errbuf) == -1)
rpcapd_log(LOGPRIO_ERROR, "Send to client failed: %s", errbuf);
goto end;
@@ -747,7 +747,7 @@ daemon_serviceloop(SOCKET sockctrl, int isactive, char *passiveClients,
retval = select((int)pars.sockctrl + 1, &rfds, NULL, NULL, &tv);
if (retval == -1)
{
- sock_geterror("select failed: ", errmsgbuf, PCAP_ERRBUF_SIZE);
+ sock_geterror("select() failed", errmsgbuf, PCAP_ERRBUF_SIZE);
if (rpcap_senderror(pars.sockctrl, pars.ssl,
0, PCAP_ERR_NETW,
errmsgbuf, errbuf) == -1)
@@ -1415,7 +1415,8 @@ daemon_AuthUserPwd(char *username, char *password, char *errbuf)
HANDLE Token;
if (LogonUser(username, ".", password, LOGON32_LOGON_NETWORK, LOGON32_PROVIDER_DEFAULT, &Token) == 0)
{
- pcap_win32_err_to_str(GetLastError(), errbuf);
+ pcap_fmt_errmsg_for_win32_err(errbuf, PCAP_ERRBUF_SIZE,
+ GetLastError(), "LogonUser() failed");
return -1;
}
@@ -1423,7 +1424,8 @@ daemon_AuthUserPwd(char *username, char *password, char *errbuf)
// I didn't test it.
if (ImpersonateLoggedOnUser(Token) == 0)
{
- pcap_win32_err_to_str(GetLastError(), errbuf);
+ pcap_fmt_errmsg_for_win32_err(errbuf, PCAP_ERRBUF_SIZE,
+ GetLastError(), "ImpersonateLoggedOnUser() failed");
CloseHandle(Token);
return -1;
}
@@ -1924,7 +1926,7 @@ daemon_msg_startcap_req(uint8 ver, struct daemon_slpars *pars, uint32 plen,
saddrlen = sizeof(struct sockaddr_storage);
if (getpeername(pars->sockctrl, (struct sockaddr *) &saddr, &saddrlen) == -1)
{
- sock_geterror("getpeername(): ", errmsgbuf, PCAP_ERRBUF_SIZE);
+ sock_geterror("getpeername()", errmsgbuf, PCAP_ERRBUF_SIZE);
goto error;
}
@@ -1941,7 +1943,7 @@ daemon_msg_startcap_req(uint8 ver, struct daemon_slpars *pars, uint32 plen,
if (getnameinfo((struct sockaddr *) &saddr, saddrlen, peerhost,
sizeof(peerhost), NULL, 0, NI_NUMERICHOST))
{
- sock_geterror("getnameinfo(): ", errmsgbuf, PCAP_ERRBUF_SIZE);
+ sock_geterror("getnameinfo()", errmsgbuf, PCAP_ERRBUF_SIZE);
goto error;
}
@@ -1966,7 +1968,7 @@ daemon_msg_startcap_req(uint8 ver, struct daemon_slpars *pars, uint32 plen,
saddrlen = sizeof(struct sockaddr_storage);
if (getsockname(session->sockdata, (struct sockaddr *) &saddr, &saddrlen) == -1)
{
- sock_geterror("getsockname(): ", errmsgbuf, PCAP_ERRBUF_SIZE);
+ sock_geterror("getsockname()", errmsgbuf, PCAP_ERRBUF_SIZE);
goto error;
}
@@ -1974,7 +1976,7 @@ daemon_msg_startcap_req(uint8 ver, struct daemon_slpars *pars, uint32 plen,
if (getnameinfo((struct sockaddr *) &saddr, saddrlen, NULL,
0, portdata, sizeof(portdata), NI_NUMERICSERV))
{
- sock_geterror("getnameinfo(): ", errmsgbuf, PCAP_ERRBUF_SIZE);
+ sock_geterror("getnameinfo()", errmsgbuf, PCAP_ERRBUF_SIZE);
goto error;
}
}
@@ -2042,7 +2044,7 @@ daemon_msg_startcap_req(uint8 ver, struct daemon_slpars *pars, uint32 plen,
if (socktemp == INVALID_SOCKET)
{
- sock_geterror("accept(): ", errbuf, PCAP_ERRBUF_SIZE);
+ sock_geterror("accept()", errbuf, PCAP_ERRBUF_SIZE);
rpcapd_log(LOGPRIO_ERROR, "Accept of data connection failed: %s",
errbuf);
goto error;
diff --git a/rpcapd/rpcapd.c b/rpcapd/rpcapd.c
index fec263d7..25eb67d6 100644
--- a/rpcapd/rpcapd.c
+++ b/rpcapd/rpcapd.c
@@ -346,9 +346,9 @@ int main(int argc, char *argv[])
state_change_event = CreateEvent(NULL, FALSE, FALSE, NULL);
if (state_change_event == NULL)
{
- sock_geterror(NULL, errbuf, PCAP_ERRBUF_SIZE);
- rpcapd_log(LOGPRIO_ERROR, "Can't create state change event: %s",
- errbuf);
+ sock_geterror("Can't create state change event", errbuf,
+ PCAP_ERRBUF_SIZE);
+ rpcapd_log(LOGPRIO_ERROR, "%s", errbuf);
exit(2);
}
@@ -357,9 +357,9 @@ int main(int argc, char *argv[])
//
if (!SetConsoleCtrlHandler(main_ctrl_event, TRUE))
{
- sock_geterror(NULL, errbuf, PCAP_ERRBUF_SIZE);
- rpcapd_log(LOGPRIO_ERROR, "Can't set control handler: %s",
- errbuf);
+ sock_geterror("Can't set control handler", errbuf,
+ PCAP_ERRBUF_SIZE);
+ rpcapd_log(LOGPRIO_ERROR, "%s", errbuf);
exit(2);
}
#else
@@ -412,9 +412,9 @@ int main(int argc, char *argv[])
sockctrl = dup(0);
if (sockctrl == -1)
{
- sock_geterror(NULL, errbuf, PCAP_ERRBUF_SIZE);
- rpcapd_log(LOGPRIO_ERROR, "Can't dup standard input: %s",
- errbuf);
+ sock_geterror("Can't dup standard input", errbuf,
+ PCAP_ERRBUF_SIZE);
+ rpcapd_log(LOGPRIO_ERROR, "%s", errbuf);
exit(2);
}
@@ -721,8 +721,9 @@ send_state_change_event(void)
if (!SetEvent(state_change_event))
{
- sock_geterror(NULL, errbuf, PCAP_ERRBUF_SIZE);
- rpcapd_log(LOGPRIO_ERROR, "SetEvent on shutdown event failed: %s", errbuf);
+ sock_geterror("SetEvent on shutdown event failed", errbuf,
+ PCAP_ERRBUF_SIZE);
+ rpcapd_log(LOGPRIO_ERROR, "%s", errbuf);
}
}
@@ -888,14 +889,16 @@ accept_connections(void)
event = WSACreateEvent();
if (event == WSA_INVALID_EVENT)
{
- sock_geterror(NULL, errbuf, PCAP_ERRBUF_SIZE);
- rpcapd_log(LOGPRIO_ERROR, "Can't create socket event: %s", errbuf);
+ sock_geterror("Can't create socket event", errbuf,
+ PCAP_ERRBUF_SIZE);
+ rpcapd_log(LOGPRIO_ERROR, "%s", errbuf);
exit(2);
}
if (WSAEventSelect(sock_info->sock, event, FD_ACCEPT) == SOCKET_ERROR)
{
- sock_geterror(NULL, errbuf, PCAP_ERRBUF_SIZE);
- rpcapd_log(LOGPRIO_ERROR, "Can't setup socket event: %s", errbuf);
+ sock_geterror("Can't setup socket event", errbuf,
+ PCAP_ERRBUF_SIZE);
+ rpcapd_log(LOGPRIO_ERROR, "%s", errbuf);
exit(2);
}
events[i] = event;
@@ -912,8 +915,9 @@ accept_connections(void)
WSA_INFINITE, FALSE);
if (ret == WSA_WAIT_FAILED)
{
- sock_geterror(NULL, errbuf, PCAP_ERRBUF_SIZE);
- rpcapd_log(LOGPRIO_ERROR, "WSAWaitForMultipleEvents failed: %s", errbuf);
+ sock_geterror("WSAWaitForMultipleEvents failed", errbuf,
+ PCAP_ERRBUF_SIZE);
+ rpcapd_log(LOGPRIO_ERROR, "%s", errbuf);
exit(2);
}
@@ -951,8 +955,9 @@ accept_connections(void)
if (WSAEnumNetworkEvents(sock_info->sock,
events[i], &network_events) == SOCKET_ERROR)
{
- sock_geterror(NULL, errbuf, PCAP_ERRBUF_SIZE);
- rpcapd_log(LOGPRIO_ERROR, "WSAEnumNetworkEvents failed: %s", errbuf);
+ sock_geterror("WSAEnumNetworkEvents failed",
+ errbuf, PCAP_ERRBUF_SIZE);
+ rpcapd_log(LOGPRIO_ERROR, "%s", errbuf);
exit(2);
}
if (network_events.lNetworkEvents & FD_ACCEPT)
@@ -965,11 +970,11 @@ accept_connections(void)
//
// Yes - report it and keep going.
//
- sock_fmterror(NULL,
+ sock_fmterror("Socket error",
network_events.iErrorCode[FD_ACCEPT_BIT],
errbuf,
PCAP_ERRBUF_SIZE);
- rpcapd_log(LOGPRIO_ERROR, "Socket error: %s", errbuf);
+ rpcapd_log(LOGPRIO_ERROR, "%s", errbuf);
continue;
}
@@ -1154,7 +1159,7 @@ accept_connection(SOCKET listen_sock)
// Don't check for errors here, since the error can be due to the fact that the thread
// has been killed
- sock_geterror("accept(): ", errbuf, PCAP_ERRBUF_SIZE);
+ sock_geterror("accept()", errbuf, PCAP_ERRBUF_SIZE);
rpcapd_log(LOGPRIO_ERROR, "Accept of control connection from client failed: %s",
errbuf);
return;
@@ -1178,14 +1183,14 @@ accept_connection(SOCKET listen_sock)
//
if (WSAEventSelect(sockctrl, NULL, 0) == SOCKET_ERROR)
{
- sock_geterror("WSAEventSelect: ", errbuf, PCAP_ERRBUF_SIZE);
+ sock_geterror("WSAEventSelect()", errbuf, PCAP_ERRBUF_SIZE);
rpcapd_log(LOGPRIO_ERROR, "%s", errbuf);
sock_close(sockctrl, NULL, 0);
return;
}
if (ioctlsocket(sockctrl, FIONBIO, &off) == SOCKET_ERROR)
{
- sock_geterror("ioctlsocket(FIONBIO): ", errbuf, PCAP_ERRBUF_SIZE);
+ sock_geterror("ioctlsocket(FIONBIO)", errbuf, PCAP_ERRBUF_SIZE);
rpcapd_log(LOGPRIO_ERROR, "%s", errbuf);
sock_close(sockctrl, NULL, 0);
return;
diff --git a/rpcapd/win32-svc.c b/rpcapd/win32-svc.c
index 40c8303f..3a19910d 100644
--- a/rpcapd/win32-svc.c
+++ b/rpcapd/win32-svc.c
@@ -57,9 +57,9 @@ int svc_start(void)
// This call is blocking. A new thread is created which will launch
// the svc_main() function
if ((rc = StartServiceCtrlDispatcher(ste)) == 0) {
- pcap_win32_err_to_str(GetLastError(), string);
- rpcapd_log(LOGPRIO_ERROR,
- "StartServiceCtrlDispatcher() failed: %s", string);
+ pcap_fmt_errmsg_for_win32_err(string, sizeof (string),
+ GetLastError(), "StartServiceCtrlDispatcher() failed");
+ rpcapd_log(LOGPRIO_ERROR, "%s", string);
}
return rc; // FALSE if this is not started as a service