diff options
author | Werner Koch <[email protected]> | 2002-02-06 14:52:03 +0000 |
---|---|---|
committer | Werner Koch <[email protected]> | 2002-02-06 14:52:03 +0000 |
commit | 6aa7267865b2059a107e8d16a678176cd9ad1d74 (patch) | |
tree | 9fad8959e8f47c9d25a87d78d15614b0674b5f9e /sm/server.c | |
parent | * cache.c (housekeeping): Fixed linking in the remove case. (diff) | |
download | gnupg-6aa7267865b2059a107e8d16a678176cd9ad1d74.tar.gz gnupg-6aa7267865b2059a107e8d16a678176cd9ad1d74.zip |
* decrypt.c (gpgsm_decrypt): Bail out after an decryption error.
* server.c (reset_notify): Close input and output FDs.
(cmd_encrypt,cmd_decrypt,cmd_verify,cmd_sign.cmd_import)
(cmd_genkey): Close the FDs and release the recipient list even in
the error case.
Diffstat (limited to 'sm/server.c')
-rw-r--r-- | sm/server.c | 72 |
1 files changed, 29 insertions, 43 deletions
diff --git a/sm/server.c b/sm/server.c index 298ccda2d..520a3ddd1 100644 --- a/sm/server.c +++ b/sm/server.c @@ -83,6 +83,8 @@ reset_notify (ASSUAN_CONTEXT ctx) gpgsm_release_certlist (ctrl->server_local->recplist); ctrl->server_local->recplist = NULL; close_message_fd (ctrl); + assuan_close_input_fd (ctx); + assuan_close_output_fd (ctx); } @@ -178,15 +180,12 @@ cmd_encrypt (ASSUAN_CONTEXT ctx, char *line) inp_fd, out_fp); fclose (out_fp); - if (!rc) - { - gpgsm_release_certlist (ctrl->server_local->recplist); - ctrl->server_local->recplist = NULL; - /* close and reset the fd */ - close_message_fd (ctrl); - assuan_close_input_fd (ctx); - assuan_close_output_fd (ctx); - } + gpgsm_release_certlist (ctrl->server_local->recplist); + ctrl->server_local->recplist = NULL; + /* close and reset the fd */ + close_message_fd (ctrl); + assuan_close_input_fd (ctx); + assuan_close_output_fd (ctx); return map_to_assuan_status (rc); } @@ -218,13 +217,10 @@ cmd_decrypt (ASSUAN_CONTEXT ctx, char *line) rc = gpgsm_decrypt (ctrl, inp_fd, out_fp); fclose (out_fp); - if (!rc) - { - /* close and reset the fd */ - close_message_fd (ctrl); - assuan_close_input_fd (ctx); - assuan_close_output_fd (ctx); - } + /* close and reset the fd */ + close_message_fd (ctrl); + assuan_close_input_fd (ctx); + assuan_close_output_fd (ctx); return map_to_assuan_status (rc); } @@ -263,13 +259,10 @@ cmd_verify (ASSUAN_CONTEXT ctx, char *line) if (out_fp) fclose (out_fp); - if (!rc) - { - /* close and reset the fd */ - close_message_fd (ctrl); - assuan_close_input_fd (ctx); - assuan_close_output_fd (ctx); - } + /* close and reset the fd */ + close_message_fd (ctrl); + assuan_close_input_fd (ctx); + assuan_close_output_fd (ctx); return map_to_assuan_status (rc); } @@ -304,13 +297,10 @@ cmd_sign (ASSUAN_CONTEXT ctx, char *line) rc = gpgsm_sign (assuan_get_pointer (ctx), inp_fd, detached, out_fp); fclose (out_fp); - if (!rc) - { - /* close and reset the fd */ - close_message_fd (ctrl); - assuan_close_input_fd (ctx); - assuan_close_output_fd (ctx); - } + /* close and reset the fd */ + close_message_fd (ctrl); + assuan_close_input_fd (ctx); + assuan_close_output_fd (ctx); return map_to_assuan_status (rc); } @@ -334,13 +324,11 @@ cmd_import (ASSUAN_CONTEXT ctx, char *line) rc = gpgsm_import (assuan_get_pointer (ctx), fd); - if (!rc) - { - /* close and reset the fd */ - close_message_fd (ctrl); - assuan_close_input_fd (ctx); - assuan_close_output_fd (ctx); - } + /* close and reset the fd */ + close_message_fd (ctrl); + assuan_close_input_fd (ctx); + assuan_close_output_fd (ctx); + return map_to_assuan_status (rc); } @@ -423,12 +411,10 @@ cmd_genkey (ASSUAN_CONTEXT ctx, char *line) rc = gpgsm_genkey (ctrl, inp_fd, out_fp); fclose (out_fp); - if (!rc) - { - /* close and reset the fds */ - assuan_close_input_fd (ctx); - assuan_close_output_fd (ctx); - } + /* close and reset the fds */ + assuan_close_input_fd (ctx); + assuan_close_output_fd (ctx); + return map_to_assuan_status (rc); } |