aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ssh-agent-filter.C22
1 files changed, 11 insertions, 11 deletions
diff --git a/ssh-agent-filter.C b/ssh-agent-filter.C
index d22ced1..252e017 100644
--- a/ssh-agent-filter.C
+++ b/ssh-agent-filter.C
@@ -135,7 +135,7 @@ int make_cloexec_socket (int const address_family, int const type, int const pro
return sock;
}
-void arm (std::ios & stream) {
+void arm_exceptions (std::ios & stream) {
stream.exceptions(stream.badbit | stream.failbit);
}
@@ -184,7 +184,7 @@ int make_listen_sock () {
rfc4251::string ask_upstream_agent (rfc4251::string const & request) {
io::stream<io::file_descriptor> agent{make_upstream_agent_conn(), io::close_handle};
- arm(agent);
+ arm_exceptions(agent);
agent << request;
return rfc4251::string{agent};
@@ -239,7 +239,7 @@ void parse_cmdline (int const argc, char const * const * const argv) {
void setup_filters () {
auto const answer = ask_upstream_agent({SSH2_AGENTC_REQUEST_IDENTITIES});
io::stream<io::array_source> answer_iss{answer.data(), answer.size()};
- arm(answer_iss);
+ arm_exceptions(answer_iss);
rfc4251::byte const resp_code{answer_iss};
if (resp_code != SSH2_AGENT_IDENTITIES_ANSWER)
throw runtime_error{"unexpected answer from ssh-agent"};
@@ -326,7 +326,7 @@ bool confirm (string const & question) {
std::optional<string> dissect_auth_data_ssh_cert (rfc4251::string const & data) try {
io::stream<io::array_source> datastream{data.data(), data.size()};
- arm(datastream);
+ arm_exceptions(datastream);
string request_description{};
// Format specified in https://cvsweb.openbsd.org/cgi-bin/cvsweb/src/usr.bin/ssh/PROTOCOL.certkeys?annotate=1.13
@@ -386,7 +386,7 @@ std::optional<string> dissect_auth_data_ssh_cert (rfc4251::string const & data)
std::optional<string> dissect_auth_data_ssh (rfc4251::string const & data) try {
io::stream<io::array_source> datastream{data.data(), data.size()};
- arm(datastream);
+ arm_exceptions(datastream);
string request_description{};
// Format specified in RFC 4252 Section 7
@@ -404,7 +404,7 @@ std::optional<string> dissect_auth_data_ssh (rfc4251::string const & data) try {
if (string{servicename} == "pam_ssh_agent_auth") try {
clog << base64_encode(session_identifier) << endl;
io::stream<io::array_source> idstream{session_identifier.data(), session_identifier.size()};
- arm(idstream);
+ arm_exceptions(idstream);
rfc4251::uint32 const type{idstream};
if (type == 101) {
@@ -427,7 +427,7 @@ std::optional<string> dissect_auth_data_ssh (rfc4251::string const & data) try {
additional += "' in '" + string{pwd};
io::stream<io::array_source> actionstream{action.data(), action.size()};
- arm(actionstream);
+ arm_exceptions(actionstream);
rfc4251::uint32 const argc{actionstream};
@@ -473,8 +473,8 @@ rfc4251::string handle_request (rfc4251::string const & r) {
io::stream<io::array_source> request{r.data(), r.size()};
rfc4251::string ret;
io::stream<io::back_insert_device<vector<char>>> answer{ret.buf};
- arm(request);
- arm(answer);
+ arm_exceptions(request);
+ arm_exceptions(answer);
rfc4251::byte const request_code{request};
switch (request_code) {
case SSH2_AGENTC_REQUEST_IDENTITIES:
@@ -483,7 +483,7 @@ rfc4251::string handle_request (rfc4251::string const & r) {
// temp to test key filtering when signing
//return agent_answer;
io::stream<io::array_source> agent_answer_iss{agent_answer.data(), agent_answer.size()};
- arm(agent_answer_iss);
+ arm_exceptions(agent_answer_iss);
rfc4251::byte const answer_code{agent_answer_iss};
rfc4251::uint32 const keycount{agent_answer_iss};
if (answer_code != SSH2_AGENT_IDENTITIES_ANSWER)
@@ -563,7 +563,7 @@ void handle_client (int const sock) try {
// fails with ESPIPE and causes an exception
io::stream<io::file_descriptor_source> client_in{sock, io::close_handle};
io::stream<io::file_descriptor_sink> client_out{sock, io::never_close_handle};
- arm(client_out);
+ arm_exceptions(client_out);
for (;;)
client_out << handle_request(rfc4251::string{client_in}) << flush;