aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2013-12-29 21:10:59 +0100
committerMichael Niedermayer <michaelni@gmx.at>2013-12-29 21:11:03 +0100
commit12fc0c89dc6b4f092b14f297f29dfd73fe31fecf (patch)
tree756d72173b81329ea163ea457c2b55e923d13f53
parent828ac6d1b515ce421519a641b23b05127acc06cd (diff)
parent8ba77dfbc2e04c6d1070a8ea57f3dbbf477b95a7 (diff)
downloadffmpeg-12fc0c89dc6b4f092b14f297f29dfd73fe31fecf.tar.gz
Merge remote-tracking branch 'lukaszmluki/master'
* lukaszmluki/master: lavf/libssh: improve authentication lavf/libssh: fix file mode Merged-by: Michael Niedermayer <michaelni@gmx.at>
-rw-r--r--libavformat/libssh.c14
1 files changed, 9 insertions, 5 deletions
diff --git a/libavformat/libssh.c b/libavformat/libssh.c
index 4a9b8674cf..aa9b060ee3 100644
--- a/libavformat/libssh.c
+++ b/libavformat/libssh.c
@@ -91,10 +91,13 @@ static int libssh_open(URLContext *h, const char *url, int flags)
goto fail;
}
- if (pass && ssh_userauth_password(s->session, NULL, pass) != SSH_AUTH_SUCCESS) {
- av_log(h, AV_LOG_ERROR, "Error authenticating with password: %s\n", ssh_get_error(s->session));
- ret = AVERROR(EACCES);
- goto fail;
+ if (ssh_userauth_autopubkey(s->session, pass) != SSH_AUTH_SUCCESS) {
+ av_log(s, AV_LOG_DEBUG, "Authentication using public key failed, trying password method.\n");
+ if (ssh_userauth_password(s->session, NULL, pass) != SSH_AUTH_SUCCESS) {
+ av_log(h, AV_LOG_ERROR, "Authentication failed.\n");
+ ret = AVERROR(EACCES);
+ goto fail;
+ }
}
if (!(s->sftp = sftp_new(s->session))) {
@@ -121,7 +124,8 @@ static int libssh_open(URLContext *h, const char *url, int flags)
access = O_RDONLY;
}
- if (!(s->file = sftp_open(s->sftp, path, access, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH))) {
+ /* 0666 = -rw-rw-rw- = read+write for everyone, minus umask */
+ if (!(s->file = sftp_open(s->sftp, path, access, 0666))) {
av_log(h, AV_LOG_ERROR, "Error opening sftp file: %s\n", ssh_get_error(s->session));
ret = AVERROR(EIO);
goto fail;