From 45c8a364095764ac1e13105995388d73f9dcd961 Mon Sep 17 00:00:00 2001 From: Ralf Habacker Date: Tue, 31 Mar 2015 21:53:22 +0200 Subject: [PATCH] Use typedef DBusSocket for sockets fd's to avoid conversion warnings. [smcv: remove unneeded and invalid dbus-sysdeps.h from public header; make prototype of _dbus_socketpair() consistent; undo conversion of getaddrinfo result from int to SOCKET; don't call _dbus_return_val_if_fail() from internal function] Bug: https://bugs.freedesktop.org/show_bug.cgi?id=89444 --- dbus/dbus-mainloop.c | 12 +++++----- dbus/dbus-nonce.c | 8 +++---- dbus/dbus-nonce.h | 5 +++-- dbus/dbus-server-debug-pipe.c | 2 +- dbus/dbus-server-socket.c | 18 +++++++-------- dbus/dbus-server-socket.h | 2 +- dbus/dbus-server-unix.c | 2 +- dbus/dbus-spawn-win.c | 12 +++++----- dbus/dbus-sysdeps-unix.c | 10 ++++----- dbus/dbus-sysdeps-win.c | 52 +++++++++++++++++++++---------------------- dbus/dbus-sysdeps.h | 41 +++++++++++++++++++++------------- dbus/dbus-watch.c | 8 +++++++ dbus/dbus-watch.h | 2 ++ 13 files changed, 98 insertions(+), 76 deletions(-) diff --git a/dbus/dbus-mainloop.c b/dbus/dbus-mainloop.c index 2501967..a02b29f 100644 --- a/dbus/dbus-mainloop.c +++ b/dbus/dbus-mainloop.c @@ -270,11 +270,11 @@ dbus_bool_t _dbus_loop_add_watch (DBusLoop *loop, DBusWatch *watch) { - int fd; + DBusSocket fd; DBusList **watches; - fd = dbus_watch_get_socket (watch); - _dbus_assert (fd != -1); + fd = _dbus_watch_get_socket (watch); + _dbus_assert (fd != DBUS_SOCKET_INVALID); watches = ensure_watch_table_entry (loop, fd); @@ -323,13 +323,13 @@ _dbus_loop_remove_watch (DBusLoop *loop, { DBusList **watches; DBusList *link; - int fd; + DBusSocket fd; /* This relies on people removing watches before they invalidate them, * which has been safe since fd.o #33336 was fixed. Assert about it * so we don't regress. */ - fd = dbus_watch_get_socket (watch); - _dbus_assert (fd != -1); + fd = _dbus_watch_get_socket (watch); + _dbus_assert (fd != DBUS_SOCKET_INVALID); watches = _dbus_hash_table_lookup_int (loop->watches, fd); diff --git a/dbus/dbus-nonce.c b/dbus/dbus-nonce.c index 44c46b2..280abb2 100644 --- a/dbus/dbus-nonce.c +++ b/dbus/dbus-nonce.c @@ -142,10 +142,10 @@ _dbus_read_nonce (const DBusString *fname, DBusString *nonce, DBusError* error) return TRUE; } -int -_dbus_accept_with_noncefile (int listen_fd, const DBusNonceFile *noncefile) +DBusSocket +_dbus_accept_with_noncefile (DBusSocket listen_fd, const DBusNonceFile *noncefile) { - int fd; + DBusSocket fd; DBusString nonce; _dbus_assert (noncefile != NULL); @@ -431,7 +431,7 @@ _dbus_noncefile_get_path (const DBusNonceFile *noncefile) * and matches the nonce from the given nonce file */ dbus_bool_t -_dbus_noncefile_check_nonce (int fd, +_dbus_noncefile_check_nonce (DBusSocket fd, const DBusNonceFile *noncefile, DBusError* error) { diff --git a/dbus/dbus-nonce.h b/dbus/dbus-nonce.h index 474ea72..26308fd 100644 --- a/dbus/dbus-nonce.h +++ b/dbus/dbus-nonce.h @@ -27,6 +27,7 @@ #include #include #include +#include DBUS_BEGIN_DECLS @@ -46,13 +47,13 @@ dbus_bool_t _dbus_noncefile_create (DBusNonceFile *noncefile, dbus_bool_t _dbus_noncefile_delete (DBusNonceFile *noncefile, DBusError *error); -dbus_bool_t _dbus_noncefile_check_nonce (int fd, +dbus_bool_t _dbus_noncefile_check_nonce (DBusSocket fd, const DBusNonceFile *noncefile, DBusError *error); const DBusString* _dbus_noncefile_get_path (const DBusNonceFile *noncefile); -int _dbus_accept_with_noncefile (int listen_fd, +DBusSocket _dbus_accept_with_noncefile(DBusSocket listen_fd, const DBusNonceFile *noncefile); // shared diff --git a/dbus/dbus-server-debug-pipe.c b/dbus/dbus-server-debug-pipe.c index 32d62dd..0c86d14 100644 --- a/dbus/dbus-server-debug-pipe.c +++ b/dbus/dbus-server-debug-pipe.c @@ -211,7 +211,7 @@ _dbus_transport_debug_pipe_new (const char *server_name, DBusTransport *client_transport; DBusTransport *server_transport; DBusConnection *connection; - int client_fd, server_fd; + DBusSocket client_fd, server_fd; DBusServer *server; DBusString address; diff --git a/dbus/dbus-server-socket.c b/dbus/dbus-server-socket.c index 70367c7..54544dc 100644 --- a/dbus/dbus-server-socket.c +++ b/dbus/dbus-server-socket.c @@ -51,7 +51,7 @@ struct DBusServerSocket { DBusServer base; /**< Parent class members. */ int n_fds; /**< Number of active file handles */ - int *fds; /**< File descriptor or -1 if disconnected. */ + DBusSocket *fds; /**< File descriptor or DBUS_SOCKET_INVALID if disconnected. */ DBusWatch **watch; /**< File descriptor watch. */ char *socket_name; /**< Name of domain socket, to unlink if appropriate */ DBusNonceFile *noncefile; /**< Nonce file used to authenticate clients */ @@ -182,11 +182,11 @@ socket_handle_watch (DBusWatch *watch, if (flags & DBUS_WATCH_READABLE) { - int client_fd; - int listen_fd; + DBusSocket client_fd; + DBusSocket listen_fd; int saved_errno; - listen_fd = dbus_watch_get_socket (watch); + listen_fd = _dbus_watch_get_socket (watch); if (socket_server->noncefile) client_fd = _dbus_accept_with_noncefile (listen_fd, socket_server->noncefile); @@ -195,7 +195,7 @@ socket_handle_watch (DBusWatch *watch, saved_errno = _dbus_save_socket_errno (); - if (client_fd < 0) + if (client_fd == DBUS_SOCKET_INVALID) { /* EINTR handled for us */ @@ -243,7 +243,7 @@ socket_disconnect (DBusServer *server) } _dbus_close_socket (socket_server->fds[i], NULL); - socket_server->fds[i] = -1; + socket_server->fds[i] = DBUS_SOCKET_INVALID; } if (socket_server->socket_name != NULL) @@ -280,7 +280,7 @@ static const DBusServerVTable socket_vtable = { * */ DBusServer* -_dbus_server_new_for_socket (int *fds, +_dbus_server_new_for_socket (DBusSocket *fds, int n_fds, const DBusString *address, DBusNonceFile *noncefile) @@ -295,7 +295,7 @@ _dbus_server_new_for_socket (int *fds, socket_server->noncefile = noncefile; - socket_server->fds = dbus_new (int, n_fds); + socket_server->fds = dbus_new (DBusSocket, n_fds); if (!socket_server->fds) goto failed_0; @@ -396,7 +396,7 @@ _dbus_server_new_for_tcp_socket (const char *host, dbus_bool_t use_nonce) { DBusServer *server; - int *listen_fds = NULL; + DBusSocket *listen_fds = NULL; int nlisten_fds = 0, i; DBusString address; DBusString host_str; diff --git a/dbus/dbus-server-socket.h b/dbus/dbus-server-socket.h index 44e11e8..cdb6284 100644 --- a/dbus/dbus-server-socket.h +++ b/dbus/dbus-server-socket.h @@ -29,7 +29,7 @@ DBUS_BEGIN_DECLS -DBusServer* _dbus_server_new_for_socket (int *fds, +DBusServer* _dbus_server_new_for_socket (DBusSocket *fds, int n_fds, const DBusString *address, DBusNonceFile *noncefile); diff --git a/dbus/dbus-server-unix.c b/dbus/dbus-server-unix.c index fcfe27f..e94bc2e 100644 --- a/dbus/dbus-server-unix.c +++ b/dbus/dbus-server-unix.c @@ -289,7 +289,7 @@ _dbus_server_new_for_domain_socket (const char *path, DBusError *error) { DBusServer *server; - int listen_fd; + DBusSocket listen_fd; DBusString address; char *path_copy; DBusString path_str; diff --git a/dbus/dbus-spawn-win.c b/dbus/dbus-spawn-win.c index f7b56d1..c2212a9 100644 --- a/dbus/dbus-spawn-win.c +++ b/dbus/dbus-spawn-win.c @@ -77,8 +77,8 @@ struct DBusBabysitter char **envp; HANDLE child_handle; - int socket_to_babysitter; /* Connection to the babysitter thread */ - int socket_to_main; + DBusSocket socket_to_babysitter; /* Connection to the babysitter thread */ + DBusSocket socket_to_main; DBusWatchList *watches; DBusWatch *sitter_watch; @@ -171,10 +171,10 @@ close_socket_to_babysitter (DBusBabysitter *sitter) sitter->sitter_watch = NULL; } - if (sitter->socket_to_babysitter != -1) + if (sitter->socket_to_babysitter != DBUS_SOCKET_INVALID) { _dbus_close_socket (sitter->socket_to_babysitter, NULL); - sitter->socket_to_babysitter = -1; + sitter->socket_to_babysitter = DBUS_SOCKET_INVALID; } } @@ -198,10 +198,10 @@ _dbus_babysitter_unref (DBusBabysitter *sitter) { close_socket_to_babysitter (sitter); - if (sitter->socket_to_main != -1) + if (sitter->socket_to_main != DBUS_SOCKET_INVALID) { _dbus_close_socket (sitter->socket_to_main, NULL); - sitter->socket_to_main = -1; + sitter->socket_to_main = DBUS_SOCKET_INVALID; } PING(); diff --git a/dbus/dbus-sysdeps-unix.c b/dbus/dbus-sysdeps-unix.c index ab7efc2..bb4724b 100644 --- a/dbus/dbus-sysdeps-unix.c +++ b/dbus/dbus-sysdeps-unix.c @@ -274,7 +274,7 @@ _dbus_write_socket (int fd, * @returns number of bytes appended to string */ int -_dbus_read_socket_with_unix_fds (int fd, +_dbus_read_socket_with_unix_fds (DBusSocket fd, DBusString *buffer, int count, int *fds, @@ -1807,7 +1807,7 @@ out: * @returns #TRUE on success */ dbus_bool_t -_dbus_read_credentials_socket (int client_fd, +_dbus_read_credentials_socket (DBusSocket client_fd, DBusCredentials *credentials, DBusError *error) { @@ -3287,13 +3287,13 @@ _dbus_print_backtrace (void) * @returns #FALSE on failure (if error is set) */ dbus_bool_t -_dbus_socketpair (int *fd1, - int *fd2, +_dbus_socketpair (DBusSocket *fd1, + DBusSocket *fd2, dbus_bool_t blocking, DBusError *error) { #ifdef HAVE_SOCKETPAIR - int fds[2]; + DBusSocket fds[2]; int retval; #ifdef SOCK_CLOEXEC diff --git a/dbus/dbus-sysdeps-win.c b/dbus/dbus-sysdeps-win.c index 6e59c5e..f3d41eb 100644 --- a/dbus/dbus-sysdeps-win.c +++ b/dbus/dbus-sysdeps-win.c @@ -52,7 +52,6 @@ #include "dbus-credentials.h" #include -#include #include #include @@ -376,7 +375,7 @@ _dbus_win_free_error_string (char *string) */ int -_dbus_read_socket (int fd, +_dbus_read_socket (DBusSocket fd, DBusString *buffer, int count) { @@ -446,7 +445,7 @@ _dbus_read_socket (int fd, * @returns the number of bytes written or -1 on error */ int -_dbus_write_socket (int fd, +_dbus_write_socket (DBusSocket fd, const DBusString *buffer, int start, int len) @@ -490,7 +489,7 @@ _dbus_write_socket (int fd, * @returns #FALSE if error set */ dbus_bool_t -_dbus_close_socket (int fd, +_dbus_close_socket (DBusSocket fd, DBusError *error) { _DBUS_ASSERT_ERROR_IS_CLEAR (error); @@ -580,7 +579,7 @@ _dbus_set_fd_nonblocking (int handle, * @returns total bytes written from both buffers, or -1 on error */ int -_dbus_write_socket_two (int fd, +_dbus_write_socket_two (DBusSocket fd, const DBusString *buffer1, int start1, int len1, @@ -644,9 +643,9 @@ _dbus_write_socket_two (int fd, } dbus_bool_t -_dbus_socket_is_invalid (int fd) +_dbus_socket_is_invalid (DBusSocket fd) { - return fd == INVALID_SOCKET ? TRUE : FALSE; + return fd == DBUS_SOCKET_INVALID ? TRUE : FALSE; } #if 0 @@ -1055,10 +1054,10 @@ failed: * @param blocking #TRUE if pair should be blocking * @param error error return * @returns #FALSE on failure (if error is set) -*/ + */ dbus_bool_t -_dbus_socketpair (int *fd1, - int *fd2, +_dbus_socketpair (DBusSocket *fd1, + DBusSocket *fd2, dbus_bool_t blocking, DBusError *error) { @@ -1074,7 +1073,7 @@ _dbus_socketpair (int *fd1, } temp = socket (AF_INET, SOCK_STREAM, 0); - if (temp == INVALID_SOCKET) + if (temp == DBUS_SOCKET_INVALID) { DBUS_SOCKET_SET_ERRNO (); goto out0; @@ -1105,7 +1104,7 @@ _dbus_socketpair (int *fd1, } socket1 = socket (AF_INET, SOCK_STREAM, 0); - if (socket1 == INVALID_SOCKET) + if (socket1 == DBUS_SOCKET_INVALID) { DBUS_SOCKET_SET_ERRNO (); goto out0; @@ -1118,7 +1117,7 @@ _dbus_socketpair (int *fd1, } socket2 = accept (temp, (struct sockaddr *) &saddr, &len); - if (socket2 == INVALID_SOCKET) + if (socket2 == DBUS_SOCKET_INVALID) { DBUS_SOCKET_SET_ERRNO (); goto out1; @@ -1509,7 +1508,7 @@ _dbus_connect_tcp_socket_with_nonce (const char *host, const char *noncefile, DBusError *error) { - int fd = -1, res; + SOCKET fd = DBUS_SOCKET_INVALID, res; struct addrinfo hints; struct addrinfo *ai, *tmp; @@ -1556,7 +1555,7 @@ _dbus_connect_tcp_socket_with_nonce (const char *host, tmp = ai; while (tmp) { - if ((fd = socket (tmp->ai_family, SOCK_STREAM, 0)) == INVALID_SOCKET) + if ((fd = socket (tmp->ai_family, SOCK_STREAM, 0)) == DBUS_SOCKET_INVALID) { DBUS_SOCKET_SET_ERRNO (); dbus_set_error (error, @@ -1581,7 +1580,7 @@ _dbus_connect_tcp_socket_with_nonce (const char *host, } freeaddrinfo(ai); - if (fd == -1) + if (fd == DBUS_SOCKET_INVALID) { dbus_set_error (error, _dbus_error_from_errno (errno), @@ -1645,10 +1644,11 @@ _dbus_listen_tcp_socket (const char *host, const char *port, const char *family, DBusString *retport, - int **fds_p, + DBusSocket **fds_p, DBusError *error) { - int nlisten_fd = 0, *listen_fd = NULL, res, i, port_num = -1; + DBusSocket *listen_fd = NULL; + int nlisten_fd = 0, res, i, port_num = -1; struct addrinfo hints; struct addrinfo *ai, *tmp; @@ -1708,8 +1708,8 @@ _dbus_listen_tcp_socket (const char *host, tmp = ai; while (tmp) { - int fd = -1, *newlisten_fd; - if ((fd = socket (tmp->ai_family, SOCK_STREAM, 0)) == INVALID_SOCKET) + DBusSocket fd = DBUS_SOCKET_INVALID, *newlisten_fd; + if ((fd = socket (tmp->ai_family, SOCK_STREAM, 0)) == DBUS_SOCKET_INVALID) { DBUS_SOCKET_SET_ERRNO (); dbus_set_error (error, @@ -1851,10 +1851,10 @@ _dbus_listen_tcp_socket (const char *host, * @param listen_fd the listen file descriptor * @returns the connection fd of the client, or -1 on error */ -int -_dbus_accept (int listen_fd) +DBusSocket +_dbus_accept (DBusSocket listen_fd) { - int client_fd; + DBusSocket client_fd; retry: client_fd = accept (listen_fd, NULL, NULL); @@ -1875,8 +1875,8 @@ _dbus_accept (int listen_fd) dbus_bool_t -_dbus_send_credentials_socket (int handle, - DBusError *error) +_dbus_send_credentials_socket (DBusSocket handle, + DBusError *error) { /* FIXME: for the session bus credentials shouldn't matter (?), but * for the system bus they are presumably essential. A rough outline @@ -1952,7 +1952,7 @@ again: * @returns #TRUE on success */ dbus_bool_t -_dbus_read_credentials_socket (int handle, +_dbus_read_credentials_socket (DBusSocket handle, DBusCredentials *credentials, DBusError *error) { diff --git a/dbus/dbus-sysdeps.h b/dbus/dbus-sysdeps.h index bbbf708..f5a9b4e 100644 --- a/dbus/dbus-sysdeps.h +++ b/dbus/dbus-sysdeps.h @@ -62,6 +62,10 @@ #include "dbus-sysdeps-wince-glue.h" #endif +#ifdef DBUS_WIN +#include +#endif + DBUS_BEGIN_DECLS #ifdef DBUS_WIN @@ -128,20 +132,27 @@ typedef unsigned long dbus_gid_t; * will be checked by the compiler. * */ +#ifndef DBUS_WIN +typedef int DBusSocket; +# define DBUS_SOCKET_INVALID -1 +#else +typedef SOCKET DBusSocket; +# define DBUS_SOCKET_INVALID INVALID_SOCKET +#endif DBUS_PRIVATE_EXPORT -dbus_bool_t _dbus_close_socket (int fd, +dbus_bool_t _dbus_close_socket (DBusSocket fd, DBusError *error); DBUS_PRIVATE_EXPORT -int _dbus_read_socket (int fd, +int _dbus_read_socket (DBusSocket fd, DBusString *buffer, int count); DBUS_PRIVATE_EXPORT -int _dbus_write_socket (int fd, +int _dbus_write_socket (DBusSocket fd, const DBusString *buffer, int start, int len); -int _dbus_write_socket_two (int fd, +int _dbus_write_socket_two (DBusSocket fd, const DBusString *buffer1, int start1, int len1, @@ -149,19 +160,19 @@ int _dbus_write_socket_two (int fd, int start2, int len2); -int _dbus_read_socket_with_unix_fds (int fd, +int _dbus_read_socket_with_unix_fds (DBusSocket fd, DBusString *buffer, int count, int *fds, int *n_fds); DBUS_PRIVATE_EXPORT -int _dbus_write_socket_with_unix_fds (int fd, +int _dbus_write_socket_with_unix_fds (DBusSocket fd, const DBusString *buffer, int start, int len, const int *fds, int n_fds); -int _dbus_write_socket_with_unix_fds_two (int fd, +int _dbus_write_socket_with_unix_fds_two (DBusSocket fd, const DBusString *buffer1, int start1, int len1, @@ -171,7 +182,7 @@ int _dbus_write_socket_with_unix_fds_two (int fd, const int *fds, int n_fds); -dbus_bool_t _dbus_socket_is_invalid (int fd); +dbus_bool_t _dbus_socket_is_invalid (DBusSocket fd); int _dbus_connect_tcp_socket (const char *host, const char *port, @@ -186,15 +197,15 @@ int _dbus_listen_tcp_socket (const char *host, const char *port, const char *family, DBusString *retport, - int **fds_p, + DBusSocket **fds_p, DBusError *error); -int _dbus_accept (int listen_fd); +DBusSocket _dbus_accept (DBusSocket listen_fd); -dbus_bool_t _dbus_read_credentials_socket (int client_fd, +dbus_bool_t _dbus_read_credentials_socket (DBusSocket client_fd, DBusCredentials *credentials, DBusError *error); -dbus_bool_t _dbus_send_credentials_socket (int server_fd, +dbus_bool_t _dbus_send_credentials_socket (DBusSocket server_fd, DBusError *error); dbus_bool_t _dbus_credentials_add_from_user (DBusCredentials *credentials, @@ -224,7 +235,7 @@ dbus_bool_t _dbus_daemon_publish_session_bus_address (const char* address, const void _dbus_daemon_unpublish_session_bus_address (void); -dbus_bool_t _dbus_socket_can_pass_unix_fd(int fd); +dbus_bool_t _dbus_socket_can_pass_unix_fd(DBusSocket fd); /** Opaque type representing an atomically-modifiable integer * that can be used from multiple threads. @@ -438,8 +449,8 @@ dbus_bool_t _dbus_stat (const DBusString *filename, DBusStat *statbuf, DBusError *error); DBUS_PRIVATE_EXPORT -dbus_bool_t _dbus_socketpair (int *fd1, - int *fd2, +dbus_bool_t _dbus_socketpair (DBusSocket *fd1, + DBusSocket *fd2, dbus_bool_t blocking, DBusError *error); diff --git a/dbus/dbus-watch.c b/dbus/dbus-watch.c index 76a5d64..408e8ab 100644 --- a/dbus/dbus-watch.c +++ b/dbus/dbus-watch.c @@ -590,6 +590,14 @@ dbus_watch_get_socket (DBusWatch *watch) return watch->fd; } +DBusSocket +_dbus_watch_get_socket (DBusWatch *watch) +{ + _dbus_assert (watch != NULL); + + return watch->fd; +} + /** * Gets flags from DBusWatchFlags indicating * what conditions should be monitored on the diff --git a/dbus/dbus-watch.h b/dbus/dbus-watch.h index d80c83a..6927c6a 100644 --- a/dbus/dbus-watch.h +++ b/dbus/dbus-watch.h @@ -94,6 +94,8 @@ dbus_bool_t _dbus_watch_get_oom_last_time (DBusWatch *watch); DBUS_PRIVATE_EXPORT void _dbus_watch_set_oom_last_time (DBusWatch *watch, dbus_bool_t oom); +DBUS_PRIVATE_EXPORT +DBusSocket _dbus_watch_get_socket (DBusWatch *watch); /** @} */ -- 1.8.4.5