From 8dde97813e5321d8307f197c1a4bee3a2a4651cb Mon Sep 17 00:00:00 2001 From: Wez Furlong Date: Tue, 23 Jul 2019 18:14:13 -0700 Subject: Avoid panic when SSH_USERAUTH_NONE succeeds This is an alternative take on addressing this issue: Refs: https://github.com/alexcrichton/ssh2-rs/pull/104 --- src/session.rs | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/session.rs b/src/session.rs index edc6898..8fa188e 100644 --- a/src/session.rs +++ b/src/session.rs @@ -361,14 +361,18 @@ impl Session { /// return an error. This case may be distinguished from a failing case by /// examining the return value of the `authenticated` method. /// - /// The return value is a comma-separated string of supported auth schemes. + /// The return value is a comma-separated string of supported auth schemes, + /// and may be an empty string. pub fn auth_methods(&self, username: &str) -> Result<&str, Error> { let len = username.len(); let username = try!(CString::new(username)); unsafe { let ret = raw::libssh2_userauth_list(self.inner.raw, username.as_ptr(), len as c_uint); if ret.is_null() { - Err(Error::last_error(self).unwrap()) + match Error::last_error(self) { + Some(err) => Err(err), + None => Ok(""), + } } else { Ok(str::from_utf8(::opt_bytes(self, ret).unwrap()).unwrap()) } -- cgit v1.2.3