diff options
Diffstat (limited to 'gpgme/rungpg.c')
-rw-r--r-- | gpgme/rungpg.c | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/gpgme/rungpg.c b/gpgme/rungpg.c index 44db825d..0a3f0bb5 100644 --- a/gpgme/rungpg.c +++ b/gpgme/rungpg.c @@ -407,7 +407,7 @@ gpg_new (void **engine, const char *file_name, const char *home_dir, { char buf[25]; - sprintf (buf, "%d", gpg->status.fd[1]); + _gpgme_io_fd2str (buf, sizeof (buf), gpg->status.fd[1]); rc = add_arg (gpg, buf); if (rc) goto leave; @@ -720,7 +720,10 @@ build_argv (engine_gpg_t gpg) fd_data_map[datac].dup_to = a->dup_to; if (a->dup_to == -1) { - argv[argc] = malloc (25); + char *ptr; + int buflen = 25; + + argv[argc] = malloc (buflen); if (!argv[argc]) { int saved_errno = errno; @@ -728,9 +731,16 @@ build_argv (engine_gpg_t gpg) free_argv (argv); return gpg_error_from_errno (saved_errno); } - sprintf (argv[argc], - a->print_fd ? "%d" : "-&%d", - fd_data_map[datac].peer_fd); + + ptr = argv[argc]; + if (!a->print_fd) + { + *(ptr++) = '-'; + *(ptr++) = '&'; + buflen -= 2; + } + + _gpgme_io_fd2str (ptr, buflen, fd_data_map[datac].peer_fd); argc++; } datac++; |