Message ID | 1370377419-31788-3-git-send-email-alevy@redhat.com |
---|---|
State | New |
Headers | show |
On 4 June 2013 21:23, Alon Levy <alevy@redhat.com> wrote: > Spotted by Coverity. > > Signed-off-by: Alon Levy <alevy@redhat.com> Reviewed-by: Peter Maydell <peter.maydell@linaro.org> -- PMM
05.06.2013 00:23, Alon Levy wrote: > --- a/libcacard/vscclient.c > +++ b/libcacard/vscclient.c > @@ -759,5 +763,6 @@ main( > g_io_channel_unref(channel_socket); > g_byte_array_unref(socket_to_send); > > + closesocket(sock); > return 0; > } This one isn't really needed, -- there's no need to close filedescriptors at the end of main(). I understand the memory unref/free calls above it, to make valgrind and glib trackers happy. But it ofcourse does not hurt. Besides, in all these error places it'd be really nice to print the actual cause of the problem too - like strerror(errno) or something like that. Unfortunately we had too many of these already in all parts of the code, and it really is sometimes difficult to understand WHY it fails without seeing the actual cause. I'll send a separate patch for that. Thanks, applied to the trivial patches queue. /mjt
diff --git a/libcacard/vscclient.c b/libcacard/vscclient.c index ac23647..5180d29 100644 --- a/libcacard/vscclient.c +++ b/libcacard/vscclient.c @@ -618,18 +618,22 @@ connect_to_qemu( if (ret != 0) { /* Error */ fprintf(stderr, "getaddrinfo failed\n"); - return -1; + goto cleanup_socket; } if (connect(sock, server->ai_addr, server->ai_addrlen) < 0) { /* Error */ fprintf(stderr, "Could not connect\n"); - return -1; + goto cleanup_socket; } if (verbose) { printf("Connected (sizeof Header=%zd)!\n", sizeof(VSCMsgHeader)); } return sock; + +cleanup_socket: + closesocket(sock); + return -1; } int @@ -759,5 +763,6 @@ main( g_io_channel_unref(channel_socket); g_byte_array_unref(socket_to_send); + closesocket(sock); return 0; }
Spotted by Coverity. Signed-off-by: Alon Levy <alevy@redhat.com> --- libcacard/vscclient.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-)