diff options
author | Andreas Schneider <asn@cryptomilk.org> | 2012-10-05 10:37:53 +0200 |
---|---|---|
committer | Andreas Schneider <asn@cryptomilk.org> | 2012-10-05 11:45:28 +0200 |
commit | 97b263aee97330fc5605b416b06079771381b039 (patch) | |
tree | 9e8263cec5d1b0bb3e6fa68a0b876fa5419793ab | |
parent | cb53c4f0e1b52de46d04ea2c271452ace354a203 (diff) | |
download | libssh-97b263aee97330fc5605b416b06079771381b039.tar.gz libssh-97b263aee97330fc5605b416b06079771381b039.tar.xz libssh-97b263aee97330fc5605b416b06079771381b039.zip |
sftp: Harden sftp_extension_supported() against null pointers.
(cherry picked from commit 22f607649d7dc530df84b7b90781ce0b88153095)
-rw-r--r-- | src/sftp.c | 12 |
1 files changed, 10 insertions, 2 deletions
@@ -669,10 +669,18 @@ int sftp_extension_supported(sftp_session sftp, const char *name, const char *data) { int i, n; + if (sftp == NULL || name == NULL || data == NULL) { + return 0; + } + n = sftp_extensions_get_count(sftp); for (i = 0; i < n; i++) { - if (strcmp(sftp_extensions_get_name(sftp, i), name) == 0 && - strcmp(sftp_extensions_get_data(sftp, i), data) == 0) { + const char *ext_name = sftp_extensions_get_name(sftp, i); + const char *ext_data = sftp_extensions_get_data(sftp, i); + + if (ext_name != NULL && ext_data != NULL && + strcmp(ext_name, name) == 0 && + strcmp(ext_data, data) == 0) { return 1; } } |