diff options
author | Werner Koch <[email protected]> | 2016-06-25 14:59:16 +0000 |
---|---|---|
committer | Werner Koch <[email protected]> | 2016-06-25 14:59:16 +0000 |
commit | d60ef7192ad95ec2ec1aef436742f56e6c750b89 (patch) | |
tree | 455f2ee25cab610e4cf4a386cd92ba26fcbeaa42 /tests/fdpassing.c | |
parent | Improve getting of max. number of open fds. (diff) | |
download | libassuan-d60ef7192ad95ec2ec1aef436742f56e6c750b89.tar.gz libassuan-d60ef7192ad95ec2ec1aef436742f56e6c750b89.zip |
Fix minor memory leaks
* src/assuan-pipe-connect.c (socketpair_connect): Always free
CHILD_FDS.
* src/assuan-uds.c (uds_sendfd): Clear CONTROL_U to silence Valgrind.
* tests/fdpassing.c (main): Free FNAME.
* src/assuan-handler.c (dispatch_command): Remove dead assignment.
Signed-off-by: Werner Koch <[email protected]>
Diffstat (limited to 'tests/fdpassing.c')
-rw-r--r-- | tests/fdpassing.c | 28 |
1 files changed, 15 insertions, 13 deletions
diff --git a/tests/fdpassing.c b/tests/fdpassing.c index fee5ba0..1156ad7 100644 --- a/tests/fdpassing.c +++ b/tests/fdpassing.c @@ -59,10 +59,10 @@ cmd_echo (assuan_context_t ctx, char *line) nbytes = 0; while ( (c=getc (fp)) != -1) { - putc (c, stdout); + putc (c, stdout); nbytes++; } - fflush (stdout); + fflush (stdout); log_info ("done printing %d bytes to stdout\n", nbytes); fclose (fp); @@ -118,7 +118,7 @@ server (void) assuan_set_log_stream (ctx, stderr); - for (;;) + for (;;) { rc = assuan_accept (ctx); if (rc) @@ -127,7 +127,7 @@ server (void) log_error ("assuan_accept failed: %s\n", gpg_strerror (rc)); break; } - + log_info ("client connected. Client's pid is %ld\n", (long)assuan_get_pid (ctx)); @@ -135,7 +135,7 @@ server (void) if (rc) log_error ("assuan_process failed: %s\n", gpg_strerror (rc)); } - + assuan_release (ctx); } @@ -169,7 +169,7 @@ client (assuan_context_t ctx, const char *fname) strerror (errno)); return -1; } - + rc = assuan_sendfd (ctx, fileno (fp)); if (rc) { @@ -204,12 +204,12 @@ client (assuan_context_t ctx, const char *fname) -/* - +/* + M A I N */ -int +int main (int argc, char **argv) { int last_argc = -1; @@ -294,17 +294,18 @@ main (int argc, char **argv) if (err) { log_error ("assuan_pipe_connect failed: %s\n", gpg_strerror (err)); - return 1; + assuan_release (ctx); + errorcount++; } - - if (!with_exec && loc[0] == 's') + else if (!with_exec && loc[0] == 's') { server (); + assuan_release (ctx); log_info ("server finished\n"); } else { - if (client (ctx, fname)) + if (client (ctx, fname)) { log_info ("waiting for server to terminate...\n"); assuan_release (ctx); @@ -313,6 +314,7 @@ main (int argc, char **argv) } } + xfree (fname); return errorcount ? 1 : 0; } |