├── .gitignore ├── .htaccess ├── CVE-2015-1782.patch ├── CVE-2016-0787.patch ├── CVE-2019-3855.md ├── CVE-2019-3855.t ├── CVE-2019-3856.md ├── CVE-2019-3856.t ├── CVE-2019-3857.md ├── CVE-2019-3857.t ├── CVE-2019-3858.md ├── CVE-2019-3858.t ├── CVE-2019-3859.md ├── CVE-2019-3859.t ├── CVE-2019-3860.md ├── CVE-2019-3860.t ├── CVE-2019-3861.md ├── CVE-2019-3861.t ├── CVE-2019-3862.md ├── CVE-2019-3862.t ├── CVE-2019-3863.md ├── CVE-2019-3863.t ├── Makefile ├── Makefile.docs ├── README.md ├── adv_20150311.t ├── adv_20150311.txt ├── adv_20160223.t ├── adv_20160223.txt ├── body.t ├── changes.t ├── css.t ├── cvs.t ├── date.pm ├── docmake.sh ├── docs.t ├── doctype.t ├── examples ├── .gitignore ├── Makefile ├── _example-templ.html ├── index.t └── mkexam.pl ├── footer.t ├── func.t ├── index.t ├── indexbot.t ├── indextop.t ├── libssh2-vs-libssh.t ├── libssh2.css ├── libssh2.pm ├── license.t ├── logo1-623.png ├── mail.cgi ├── mailbot.t ├── mailhead.t ├── mailtop.t ├── manpage.css ├── manpage.t ├── menu.t ├── security.t ├── setup.t ├── source.t ├── txt2plain.pl └── update.sh /.gitignore: -------------------------------------------------------------------------------- 1 | libssh2*html 2 | libssh2*raw 3 | *~ 4 | changes.html 5 | cvs.html 6 | cvs.raw 7 | docs.html 8 | index.html 9 | indexbot.html 10 | indextop.html 11 | license.html 12 | mailbot.html 13 | mailhead.html 14 | mailtop.html 15 | menu.html 16 | snapshots.html 17 | source.html 18 | -------------------------------------------------------------------------------- /.htaccess: -------------------------------------------------------------------------------- 1 | RedirectMatch "^/.git" https://github.com/libssh2/libssh2 2 | 3 | RewriteEngine On 4 | 5 | RewriteCond expr "! %{HTTP_HOST} -strmatch 'libssh2.org'" 6 | RewriteRule (.*) https://libssh2.org%{REQUEST_URI} [R=301,L] 7 | 8 | 9 | -------------------------------------------------------------------------------- /CVE-2015-1782.patch: -------------------------------------------------------------------------------- 1 | From dd57ee000d2241274ef46ad5e08802c35ba0eb2c Mon Sep 17 00:00:00 2001 2 | From: Mariusz Ziulek 3 | Date: Sat, 21 Feb 2015 23:31:36 +0100 4 | Subject: [PATCH] kex: bail out on rubbish in the incoming packet 5 | 6 | CVE-2015-1782 7 | 8 | Bug: https://www.libssh2.org/adv_20150311.html 9 | --- 10 | src/kex.c | 73 +++++++++++++++++++++++++++++++++++---------------------------- 11 | 1 file changed, 41 insertions(+), 32 deletions(-) 12 | 13 | diff --git a/src/kex.c b/src/kex.c 14 | index fa4c4e1..ad7498a 100644 15 | --- a/src/kex.c 16 | +++ b/src/kex.c 17 | @@ -1547,10 +1547,34 @@ static int kex_agree_comp(LIBSSH2_SESSION *session, 18 | 19 | /* TODO: When in server mode we need to turn this logic on its head 20 | * The Client gets to make the final call on "agreed methods" 21 | */ 22 | 23 | +/* 24 | + * kex_string_pair() extracts a string from the packet and makes sure it fits 25 | + * within the given packet. 26 | + */ 27 | +static int kex_string_pair(unsigned char **sp, /* parsing position */ 28 | + unsigned char *data, /* start pointer to packet */ 29 | + size_t data_len, /* size of total packet */ 30 | + size_t *lenp, /* length of the string */ 31 | + unsigned char **strp) /* pointer to string start */ 32 | +{ 33 | + unsigned char *s = *sp; 34 | + *lenp = _libssh2_ntohu32(s); 35 | + 36 | + /* the length of the string must fit within the current pointer and the 37 | + end of the packet */ 38 | + if (*lenp > (data_len - (s - data) -4)) 39 | + return 1; 40 | + *strp = s + 4; 41 | + s += 4 + *lenp; 42 | + 43 | + *sp = s; 44 | + return 0; 45 | +} 46 | + 47 | /* kex_agree_methods 48 | * Decide which specific method to use of the methods offered by each party 49 | */ 50 | static int kex_agree_methods(LIBSSH2_SESSION * session, unsigned char *data, 51 | unsigned data_len) 52 | @@ -1566,42 +1590,27 @@ static int kex_agree_methods(LIBSSH2_SESSION * session, unsigned char *data, 53 | 54 | /* Skip cookie, don't worry, it's preserved in the kexinit field */ 55 | s += 16; 56 | 57 | /* Locate each string */ 58 | - kex_len = _libssh2_ntohu32(s); 59 | - kex = s + 4; 60 | - s += 4 + kex_len; 61 | - hostkey_len = _libssh2_ntohu32(s); 62 | - hostkey = s + 4; 63 | - s += 4 + hostkey_len; 64 | - crypt_cs_len = _libssh2_ntohu32(s); 65 | - crypt_cs = s + 4; 66 | - s += 4 + crypt_cs_len; 67 | - crypt_sc_len = _libssh2_ntohu32(s); 68 | - crypt_sc = s + 4; 69 | - s += 4 + crypt_sc_len; 70 | - mac_cs_len = _libssh2_ntohu32(s); 71 | - mac_cs = s + 4; 72 | - s += 4 + mac_cs_len; 73 | - mac_sc_len = _libssh2_ntohu32(s); 74 | - mac_sc = s + 4; 75 | - s += 4 + mac_sc_len; 76 | - comp_cs_len = _libssh2_ntohu32(s); 77 | - comp_cs = s + 4; 78 | - s += 4 + comp_cs_len; 79 | - comp_sc_len = _libssh2_ntohu32(s); 80 | - comp_sc = s + 4; 81 | -#if 0 82 | - s += 4 + comp_sc_len; 83 | - lang_cs_len = _libssh2_ntohu32(s); 84 | - lang_cs = s + 4; 85 | - s += 4 + lang_cs_len; 86 | - lang_sc_len = _libssh2_ntohu32(s); 87 | - lang_sc = s + 4; 88 | - s += 4 + lang_sc_len; 89 | -#endif 90 | + if(kex_string_pair(&s, data, data_len, &kex_len, &kex)) 91 | + return -1; 92 | + if(kex_string_pair(&s, data, data_len, &hostkey_len, &hostkey)) 93 | + return -1; 94 | + if(kex_string_pair(&s, data, data_len, &crypt_cs_len, &crypt_cs)) 95 | + return -1; 96 | + if(kex_string_pair(&s, data, data_len, &crypt_sc_len, &crypt_sc)) 97 | + return -1; 98 | + if(kex_string_pair(&s, data, data_len, &mac_cs_len, &mac_cs)) 99 | + return -1; 100 | + if(kex_string_pair(&s, data, data_len, &mac_sc_len, &mac_sc)) 101 | + return -1; 102 | + if(kex_string_pair(&s, data, data_len, &comp_cs_len, &comp_cs)) 103 | + return -1; 104 | + if(kex_string_pair(&s, data, data_len, &comp_sc_len, &comp_sc)) 105 | + return -1; 106 | + 107 | /* If the server sent an optimistic packet, assume that it guessed wrong. 108 | * If the guess is determined to be right (by kex_agree_kex_hostkey) 109 | * This flag will be reset to zero so that it's not ignored */ 110 | session->burn_optimistic_kexinit = *(s++); 111 | /* Next uint32 in packet is all zeros (reserved) */ 112 | -- 113 | 2.1.4 114 | 115 | -------------------------------------------------------------------------------- /CVE-2016-0787.patch: -------------------------------------------------------------------------------- 1 | From 8a453a7b0f1e667b7369eb73b00843a8decdecc9 Mon Sep 17 00:00:00 2001 2 | From: Daniel Stenberg 3 | Date: Thu, 11 Feb 2016 13:52:20 +0100 4 | Subject: [PATCH] diffie_hellman_sha256: convert bytes to bits 5 | 6 | As otherwise we get far too small numbers. 7 | 8 | CVE-2016-0787 9 | --- 10 | src/kex.c | 2 +- 11 | 1 file changed, 1 insertion(+), 1 deletion(-) 12 | 13 | diff --git a/src/kex.c b/src/kex.c 14 | index 6349457..e89b36c 100644 15 | --- a/src/kex.c 16 | +++ b/src/kex.c 17 | @@ -751,11 +751,11 @@ static int diffie_hellman_sha256(LIBSSH2_SESSION *session, 18 | 19 | /* Zero the whole thing out */ 20 | memset(&exchange_state->req_state, 0, sizeof(packet_require_state_t)); 21 | 22 | /* Generate x and e */ 23 | - _libssh2_bn_rand(exchange_state->x, group_order, 0, -1); 24 | + _libssh2_bn_rand(exchange_state->x, group_order * 8 - 1, 0, -1); 25 | _libssh2_bn_mod_exp(exchange_state->e, g, exchange_state->x, p, 26 | exchange_state->ctx); 27 | 28 | /* Send KEX init */ 29 | /* packet_type(1) + String Length(4) + leading 0(1) */ 30 | -- 31 | 2.7.0 32 | 33 | -------------------------------------------------------------------------------- /CVE-2019-3855.md: -------------------------------------------------------------------------------- 1 | Possible integer overflow in transport read allows out-of-bounds write 2 | ======================================= 3 | 4 | Project libssh2 Security Advisory, March 18 2019 - 5 | [Permalink](https://www.libssh2.org/CVE-2019-3855.html) 6 | 7 | VULNERABILITY 8 | ------------- 9 | 10 | A malicious server could send a specially crafted packet which could result in 11 | an unchecked integer overflow. The value would then be used to allocate memory 12 | causing a possible memory write out of bounds error (CWE-130). 13 | 14 | There are no known exploits of this flaw at this time. 15 | 16 | INFO 17 | ---- 18 | 19 | The Common Vulnerabilities and Exposures (CVE) project has assigned the name 20 | CVE-2019-3855 to this issue. 21 | 22 | AFFECTED VERSIONS 23 | ----------------- 24 | 25 | - Affected versions: all versions to and including 1.8.0 26 | - Not affected versions: libssh2 >= 1.8.1 27 | 28 | THE SOLUTION 29 | ------------ 30 | 31 | libssh2 1.8.1 ensures packet length value is below `LIBSSH2_PACKET_MAXPAYLOAD` 32 | (4000 bytes) before processing payload. 33 | 34 | A patch for this problem is [available](https://libssh2.org/1.8.0-CVE/CVE-2019-3855.patch) 35 | 36 | RECOMMENDATIONS 37 | --------------- 38 | 39 | We suggest you take one of the following actions immediately, in order of 40 | preference: 41 | 42 | A - Upgrade to libssh2 1.8.1 or later 43 | 44 | B - Apply the patch and rebuild libssh2 45 | 46 | TIME LINE 47 | --------- 48 | 49 | It was first reported to the libssh2 project on Dec 3 2018 by Chris Coulson. 50 | 51 | libssh2 1.8.1 as released on March 18 2019, coordinated with the publication 52 | of this advisory. 53 | 54 | CREDITS 55 | ------- 56 | 57 | Reported by Chris Coulson of Canonical Ltd. 58 | -------------------------------------------------------------------------------- /CVE-2019-3855.t: -------------------------------------------------------------------------------- 1 | #include "doctype.t" 2 | #include "setup.t" 3 | HEAD(libssh2 Security Advisory: CVE-2019-3855) 4 | #include "body.t" 5 | #include "menu.t" 6 | 7 | TITLE(libssh2 Security Advisory: CVE-2019-3855) 8 | BOXTOP 9 | 10 | #include "CVE-2019-3855.gen" 11 | 12 | BOXBOT 13 | 14 | #include "footer.t" 15 | -------------------------------------------------------------------------------- /CVE-2019-3856.md: -------------------------------------------------------------------------------- 1 | Possible integer overflow in keyboard interactive handling allows out-of-bounds write 2 | ======================================= 3 | 4 | Project libssh2 Security Advisory, March 18 2019 - 5 | [Permalink](https://www.libssh2.org/CVE-2019-3856.html) 6 | 7 | VULNERABILITY 8 | ------------- 9 | 10 | A server could send a value approaching unsigned int max number of keyboard 11 | prompt requests which could result in an unchecked integer overflow. The value 12 | would then be used to allocate memory causing a possible memory write out of 13 | bounds error (CWE-130). 14 | 15 | 16 | There are no known exploits of this flaw at this time. 17 | 18 | INFO 19 | ---- 20 | 21 | The Common Vulnerabilities and Exposures (CVE) project has assigned the name 22 | CVE-2019-3856 to this issue. 23 | 24 | AFFECTED VERSIONS 25 | ----------------- 26 | 27 | - Affected versions: all versions to and including 1.8.0 28 | - Not affected versions: libssh2 >= 1.8.1 29 | 30 | THE SOLUTION 31 | ------------ 32 | 33 | libssh2 1.8.1 ensures keyboard prompt requests value is less than 100 before 34 | proceeding with the login process. 35 | 36 | 37 | A patch for this problem is [available](https://libssh2.org/1.8.0-CVE/CVE-2019-3856.patch) 38 | 39 | RECOMMENDATIONS 40 | --------------- 41 | 42 | We suggest you take one of the following actions immediately, in order of 43 | preference: 44 | 45 | A - Upgrade to libssh2 1.8.1 or later 46 | 47 | B - Apply the patch and rebuild libssh2 48 | 49 | TIME LINE 50 | --------- 51 | 52 | It was first reported to the libssh2 project on Dec 3 2018 by Chris Coulson. 53 | 54 | libssh2 1.8.1 was released on March 18 2019, coordinated with the publication 55 | of this advisory. 56 | 57 | CREDITS 58 | ------- 59 | 60 | Reported by Chris Coulson of Canonical Ltd. 61 | -------------------------------------------------------------------------------- /CVE-2019-3856.t: -------------------------------------------------------------------------------- 1 | #include "doctype.t" 2 | #include "setup.t" 3 | HEAD(libssh2 Security Advisory: CVE-2019-3856) 4 | #include "body.t" 5 | #include "menu.t" 6 | 7 | TITLE(libssh2 Security Advisory: CVE-2019-3856) 8 | BOXTOP 9 | 10 | #include "CVE-2019-3856.gen" 11 | 12 | BOXBOT 13 | 14 | #include "footer.t" 15 | -------------------------------------------------------------------------------- /CVE-2019-3857.md: -------------------------------------------------------------------------------- 1 | Possible integer overflow leading to zero-byte allocation and out-of-bounds write 2 | ================================================================================= 3 | 4 | Project libssh2 Security Advisory, March 18 2019 - 5 | [Permalink](https://www.libssh2.org/CVE-2019-3857.html) 6 | 7 | VULNERABILITY 8 | ------------- 9 | 10 | A server could send a `SSH_MSG_CHANNEL_REQUEST` packet with an exit signal 11 | message with a length of max unsigned integer value. The length would then 12 | have a value of 1 added to it and used to allocate memory causing a possible 13 | memory write out of bounds error or zero byte allocation (CWE-130). 14 | 15 | 16 | There are no known exploits of this flaw at this time. 17 | 18 | INFO 19 | ---- 20 | 21 | The Common Vulnerabilities and Exposures (CVE) project has assigned the name 22 | CVE-2019-3857 to this issue. 23 | 24 | AFFECTED VERSIONS 25 | ----------------- 26 | 27 | - Affected versions: versions 1.2.8 up to and including 1.8.0 28 | - Not affected versions: libssh2 >= 1.8.1 29 | 30 | THE SOLUTION 31 | ------------ 32 | 33 | libssh2 1.8.1 ensures the length of the message plus 1 is less than `UINT_MAX` 34 | before allocating memory using the computed value. 35 | 36 | 37 | A patch for this problem is 38 | [available](https://libssh2.org/1.8.0-CVE/CVE-2019-3857.patch) 39 | 40 | 41 | RECOMMENDATIONS 42 | --------------- 43 | 44 | We suggest you take one of the following actions immediately, in order of 45 | preference: 46 | 47 | A - Upgrade to libssh2 1.8.1 or later 48 | 49 | B - Apply the patch and rebuild libssh2 50 | 51 | TIME LINE 52 | --------- 53 | 54 | It was first reported to the libssh2 project on Dec 3 2018 by Chris Coulson. 55 | 56 | libssh2 1.8.1 was released on March 18, coordinated with the 57 | publication of this advisory. 58 | 59 | CREDITS 60 | ------- 61 | 62 | Reported by Chris Coulson of Canonical Ltd. 63 | -------------------------------------------------------------------------------- /CVE-2019-3857.t: -------------------------------------------------------------------------------- 1 | #include "doctype.t" 2 | #include "setup.t" 3 | HEAD(libssh2 Security Advisory: CVE-2019-3857) 4 | #include "body.t" 5 | #include "menu.t" 6 | 7 | TITLE(libssh2 Security Advisory: CVE-2019-3857) 8 | BOXTOP 9 | 10 | #include "CVE-2019-3857.gen" 11 | 12 | BOXBOT 13 | 14 | #include "footer.t" 15 | -------------------------------------------------------------------------------- /CVE-2019-3858.md: -------------------------------------------------------------------------------- 1 | Possible zero-byte allocation leading to an out-of-bounds read 2 | ======================================= 3 | 4 | Project libssh2 Security Advisory, March 18 2019 - 5 | [Permalink](https://www.libssh2.org/CVE-2019-3858.html) 6 | 7 | VULNERABILITY 8 | ------------- 9 | 10 | A server could send a specially crafted partial SFTP packet with a zero value 11 | for the payload length. This zero value would be used to then allocate memory 12 | resulting in a zero byte allocation and possible out of bounds read (CWE-130). 13 | 14 | 15 | There are no known exploits of this flaw at this time. 16 | 17 | INFO 18 | ---- 19 | 20 | The Common Vulnerabilities and Exposures (CVE) project has assigned the name 21 | CVE-2019-3858 to this issue. 22 | 23 | AFFECTED VERSIONS 24 | ----------------- 25 | 26 | - Affected versions: versions 0.3 up to and including 1.8.0 27 | - Not affected versions: libssh2 >= 1.8.1 28 | 29 | THE SOLUTION 30 | ------------ 31 | 32 | libssh2 1.8.1 ensures the length of the payload is not zero before allocing 33 | the memory buffer using the value. 34 | 35 | 36 | A patch for this problem is [available](https://libssh2.org/1.8.0-CVE/CVE-2019-3858.patch) 37 | 38 | RECOMMENDATIONS 39 | --------------- 40 | 41 | We suggest you take one of the following actions immediately, in order of 42 | preference: 43 | 44 | A - Upgrade to libssh2 1.8.1 or later 45 | 46 | B - Apply the patch and rebuild libssh2 47 | 48 | TIME LINE 49 | --------- 50 | 51 | It was first reported to the libssh2 project on Dec 3 2018 by Chris Coulson. 52 | 53 | libssh2 1.8.1 was released on March 18 2019, coordinated with the publication 54 | of this advisory. 55 | 56 | CREDITS 57 | ------- 58 | 59 | Reported by Chris Coulson of Canonical Ltd. 60 | -------------------------------------------------------------------------------- /CVE-2019-3858.t: -------------------------------------------------------------------------------- 1 | #include "doctype.t" 2 | #include "setup.t" 3 | HEAD(libssh2 Security Advisory: CVE-2019-3858) 4 | #include "body.t" 5 | #include "menu.t" 6 | 7 | TITLE(libssh2 Security Advisory: CVE-2019-3858) 8 | BOXTOP 9 | 10 | #include "CVE-2019-3858.gen" 11 | 12 | BOXBOT 13 | 14 | #include "footer.t" 15 | -------------------------------------------------------------------------------- /CVE-2019-3859.md: -------------------------------------------------------------------------------- 1 | Out-of-bounds reads with specially crafted payloads due to unchecked use of 2 | `_libssh2_packet_require` and `_libssh2_packet_requirev` 3 | ======================================= 4 | 5 | Project libssh2 Security Advisory, March 18 2019 - 6 | [Permalink](https://www.libssh2.org/CVE-2019-3859.html) 7 | 8 | VULNERABILITY 9 | ------------- 10 | 11 | A server could send a specially crafted partial packet in response to various 12 | commands such as: sha1 and sha226 key exchange, user auth list, user auth 13 | password response, public key auth response, channel startup/open/forward/ 14 | setenv/request pty/x11 and session start up. The result would be a memory out 15 | of bounds read (CWE-130). 16 | 17 | There are no known exploits of this flaw at this time. 18 | 19 | INFO 20 | ---- 21 | 22 | The Common Vulnerabilities and Exposures (CVE) project has assigned the name 23 | CVE-2019-3859 to this issue. 24 | 25 | AFFECTED VERSIONS 26 | ----------------- 27 | 28 | - Affected versions: versions 0.1 up to and including 1.8.0 29 | - Not affected versions: libssh2 >= 1.8.1 30 | 31 | THE SOLUTION 32 | ------------ 33 | 34 | libssh2 1.8.1 ensures the length of the payload is the required length before 35 | reading the packet buffer content. 36 | 37 | A patch for this problem is [available](https://libssh2.org/1.8.0-CVE/CVE-2019-3859.patch) 38 | 39 | RECOMMENDATIONS 40 | --------------- 41 | 42 | We suggest you take one of the following actions immediately, in order of 43 | preference: 44 | 45 | A - Upgrade to libssh2 1.8.1 or greater 46 | 47 | B - Apply the patch and rebuild libssh2 48 | 49 | TIME LINE 50 | --------- 51 | 52 | It was first reported to the libssh2 project on Dec 3 2018 by Chris Coulson. 53 | 54 | libssh2 1.8.1 was released on March 18 2019, coordinated with the publication 55 | of this advisory. 56 | 57 | CREDITS 58 | ------- 59 | 60 | Reported by Chris Coulson of Canonical Ltd. 61 | -------------------------------------------------------------------------------- /CVE-2019-3859.t: -------------------------------------------------------------------------------- 1 | #include "doctype.t" 2 | #include "setup.t" 3 | HEAD(libssh2 Security Advisory: CVE-2019-3859) 4 | #include "body.t" 5 | #include "menu.t" 6 | 7 | TITLE(libssh2 Security Advisory: CVE-2019-3859) 8 | BOXTOP 9 | 10 | #include "CVE-2019-3859.gen" 11 | 12 | BOXBOT 13 | 14 | #include "footer.t" 15 | -------------------------------------------------------------------------------- /CVE-2019-3860.md: -------------------------------------------------------------------------------- 1 | Out-of-bounds reads with specially crafted SFTP packets 2 | ======================================= 3 | 4 | Project libssh2 Security Advisory, March 18 2019 - 5 | [Permalink](https://www.libssh2.org/CVE-2019-3860.html) 6 | 7 | VULNERABILITY 8 | ------------- 9 | 10 | A server could send a specially crafted partial SFTP packet with a empty payload 11 | in response to various SFTP commands such as read directory, file status, 12 | status vfs and symlink. The result would be a memory out of bounds read 13 | (CWE-130). 14 | 15 | There are no known exploits of this flaw at this time. 16 | 17 | INFO 18 | ---- 19 | 20 | The Common Vulnerabilities and Exposures (CVE) project has assigned the name 21 | CVE-2019-3860 to this issue. 22 | 23 | AFFECTED VERSIONS 24 | ----------------- 25 | 26 | - Affected versions: versions 0.3 up to and including 1.8.0 27 | - Not affected versions: libssh2 >= 1.9.0 28 | 29 | THE SOLUTION 30 | ------------ 31 | 32 | libssh2 1.8.1 ensures the length of the payload is the required length before 33 | reading the packet buffer content. 34 | 35 | 36 | A patch for this problem is [available](https://libssh2.org/1.8.0-CVE/CVE-2019-3860.patch) 37 | 38 | RECOMMENDATIONS 39 | --------------- 40 | 41 | We suggest you take one of the following actions immediately, in order of 42 | preference: 43 | 44 | A - Upgrade to libssh2 1.8.1 or later 45 | 46 | B - Apply the patch and rebuild libssh2 47 | 48 | TIME LINE 49 | --------- 50 | 51 | It was first reported to the libssh2 project on Dec 3 2018 by Chris Coulson. 52 | 53 | libssh2 1.8.1 was released on March 18 2019, coordinated with the publication 54 | of this advisory. 55 | 56 | CREDITS 57 | ------- 58 | 59 | Reported by Chris Coulson of Canonical Ltd. 60 | -------------------------------------------------------------------------------- /CVE-2019-3860.t: -------------------------------------------------------------------------------- 1 | #include "doctype.t" 2 | #include "setup.t" 3 | HEAD(libssh2 Security Advisory: CVE-2019-3860) 4 | #include "body.t" 5 | #include "menu.t" 6 | 7 | TITLE(libssh2 Security Advisory: CVE-2019-3860) 8 | BOXTOP 9 | 10 | #include "CVE-2019-3860.gen" 11 | 12 | BOXBOT 13 | 14 | #include "footer.t" 15 | -------------------------------------------------------------------------------- /CVE-2019-3861.md: -------------------------------------------------------------------------------- 1 | Out-of-bounds reads with specially crafted SSH packets 2 | ======================================= 3 | 4 | Project libssh2 Security Advisory, March 18 2019 - 5 | [Permalink](https://www.libssh2.org/CVE-2019-3861.html) 6 | 7 | VULNERABILITY 8 | ------------- 9 | 10 | A server could send a specially crafted SSH packet with a padding length value 11 | greater than the packet length. This would result in a buffer read out of bounds 12 | when decompressing the packet or result in a corrupted packet value (CWE-130). 13 | 14 | There are no known exploits of this flaw at this time. 15 | 16 | INFO 17 | ---- 18 | 19 | The Common Vulnerabilities and Exposures (CVE) project has assigned the name 20 | CVE-2019-3861 to this issue. 21 | 22 | AFFECTED VERSIONS 23 | ----------------- 24 | 25 | - Affected versions: versions 0.15 up to and including 1.8.0 26 | - Not affected versions: libssh2 >= 1.8.1 27 | 28 | THE SOLUTION 29 | ------------ 30 | 31 | libssh2 1.8.1 ensures the length of the packet padding is less than the packet 32 | size minus 1. 33 | 34 | A patch for this problem is [available](https://libssh2.org/1.8.0-CVE/CVE-2019-3861.patch) 35 | 36 | RECOMMENDATIONS 37 | --------------- 38 | 39 | We suggest you take one of the following actions immediately, in order of 40 | preference: 41 | 42 | A - Upgrade to libssh2 1.8.1 or later 43 | 44 | B - Apply the patch and rebuild libssh2 45 | 46 | TIME LINE 47 | --------- 48 | 49 | It was first reported to the libssh2 project on Dec 3 2018 by Chris Coulson. 50 | 51 | libssh2 1.8.1 was released on March 18 2019, coordinated with the publication 52 | of this advisory. 53 | 54 | CREDITS 55 | ------- 56 | 57 | Reported by Chris Coulson of Canonical Ltd. 58 | -------------------------------------------------------------------------------- /CVE-2019-3861.t: -------------------------------------------------------------------------------- 1 | #include "doctype.t" 2 | #include "setup.t" 3 | HEAD(libssh2 Security Advisory: CVE-2019-3861) 4 | #include "body.t" 5 | #include "menu.t" 6 | 7 | TITLE(libssh2 Security Advisory: CVE-2019-3861) 8 | BOXTOP 9 | 10 | #include "CVE-2019-3861.gen" 11 | 12 | BOXBOT 13 | 14 | #include "footer.t" 15 | -------------------------------------------------------------------------------- /CVE-2019-3862.md: -------------------------------------------------------------------------------- 1 | Out-of-bounds memory comparison 2 | ======================================= 3 | 4 | Project libssh2 Security Advisory, March 18 2019 - 5 | [Permalink](https://www.libssh2.org/CVE-2019-3862.html) 6 | 7 | VULNERABILITY 8 | ------------- 9 | 10 | A server could send a specially crafted `SSH_MSG_CHANNEL_REQUEST` packet with 11 | an exit status message and no payload. This would result in an out of bounds 12 | memory comparison (CWE-130). 13 | 14 | There are no known exploits of this flaw at this time. 15 | 16 | INFO 17 | ---- 18 | 19 | The Common Vulnerabilities and Exposures (CVE) project has assigned the name 20 | CVE-2019-3862 to this issue. 21 | 22 | AFFECTED VERSIONS 23 | ----------------- 24 | 25 | - Affected versions: versions 0.11 up to and including 1.8.0 26 | - Not affected versions: libssh2 >= 1.8.1 27 | 28 | THE SOLUTION 29 | ------------ 30 | 31 | libssh2 1.8.1 ensures the length of the packet is greater or equal to the value 32 | being compared before calling memcmp(). 33 | 34 | A patch for this problem is [available](https://libssh2.org/1.8.0-CVE/CVE-2019-3862.patch) 35 | 36 | RECOMMENDATIONS 37 | --------------- 38 | 39 | We suggest you take one of the following actions immediately, in order of 40 | preference: 41 | 42 | A - Upgrade to libssh2 1.8.1 or later 43 | 44 | B - Apply the patch and rebuild libssh2 45 | 46 | TIME LINE 47 | --------- 48 | 49 | It was first reported to the libssh2 project on Dec 3 2018 by Chris Coulson. 50 | 51 | libssh2 1.8.1 was released on March 18 2019, coordinated with the publication 52 | of this advisory. 53 | 54 | CREDITS 55 | ------- 56 | 57 | Reported by Chris Coulson of Canonical Ltd. 58 | -------------------------------------------------------------------------------- /CVE-2019-3862.t: -------------------------------------------------------------------------------- 1 | #include "doctype.t" 2 | #include "setup.t" 3 | HEAD(libssh2 Security Advisory: CVE-2019-3862) 4 | #include "body.t" 5 | #include "menu.t" 6 | 7 | TITLE(libssh2 Security Advisory: CVE-2019-3862) 8 | BOXTOP 9 | 10 | #include "CVE-2019-3862.gen" 11 | 12 | BOXBOT 13 | 14 | #include "footer.t" 15 | -------------------------------------------------------------------------------- /CVE-2019-3863.md: -------------------------------------------------------------------------------- 1 | Integer overflow in user authenticate keyboard interactive allows out-of-bounds writes 2 | ======================================= 3 | 4 | Project libssh2 Security Advisory, March 18 2019 - 5 | [Permalink](https://www.libssh2.org/CVE-2019-3863.html) 6 | 7 | VULNERABILITY 8 | ------------- 9 | 10 | A server could send a multiple keyboard interactive response messages whose 11 | total length are greater than unsigned char max characters. This value is 12 | used as an index to copy memory causing in an out of bounds memory write error. 13 | (CWE-130). 14 | 15 | There are no known exploits of this flaw at this time. 16 | 17 | INFO 18 | ---- 19 | 20 | The Common Vulnerabilities and Exposures (CVE) project has assigned the name 21 | CVE-2019-3863 to this issue. 22 | 23 | AFFECTED VERSIONS 24 | ----------------- 25 | 26 | - Affected versions: versions 0.1 up to and including 1.8.0 27 | - Not affected versions: libssh2 >= 1.8.1 28 | 29 | THE SOLUTION 30 | ------------ 31 | 32 | libssh2 1.8.1 ensures the current memory index value plus the length of the 33 | response message will fit into the memory buffer before copying the value and 34 | incrementing the index value. 35 | 36 | A patch for this problem is 37 | [available](https://libssh2.org/1.8.0-CVE/CVE-2019-3863.patch) 38 | 39 | RECOMMENDATIONS 40 | --------------- 41 | 42 | We suggest you take one of the following actions immediately, in order of 43 | preference: 44 | 45 | A - Upgrade to libssh2 1.8.1 or later 46 | 47 | B - Apply the patch and rebuild libssh2 48 | 49 | TIME LINE 50 | --------- 51 | 52 | It was first reported to the libssh2 project on Dec 3 2018 by Chris Coulson. 53 | 54 | libssh2 1.8.1 was released on March 18 2019, coordinated with the publication 55 | of this advisory. 56 | 57 | CREDITS 58 | ------- 59 | 60 | Reported by Chris Coulson of Canonical Ltd. 61 | -------------------------------------------------------------------------------- /CVE-2019-3863.t: -------------------------------------------------------------------------------- 1 | #include "doctype.t" 2 | #include "setup.t" 3 | HEAD(libssh2 Security Advisory: CVE-2019-3863) 4 | #include "body.t" 5 | #include "menu.t" 6 | 7 | TITLE(libssh2 Security Advisory: CVE-2019-3863) 8 | BOXTOP 9 | 10 | #include "CVE-2019-3863.gen" 11 | 12 | BOXBOT 13 | 14 | #include "footer.t" 15 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | ROOT=. 2 | MAINPARTS= $(ROOT)/doctype.t $(ROOT)/body.t $(ROOT)/footer.t \ 3 | $(ROOT)/setup.t menu.t $(ROOT)/css.t 4 | ACTION=@echo preprocessing $@; rm -f $@; fcpp -WWW -Uunix -H -I$(ROOT) -C -V -LL $< $@; 5 | TXT2PLAIN = perl txt2plain.pl 6 | SRCDIR=git-source 7 | MARKDOWN=markdown 8 | 9 | CVES = \ 10 | adv_20150311.html \ 11 | adv_20160223.html \ 12 | CVE-2019-3855.html \ 13 | CVE-2019-3856.html \ 14 | CVE-2019-3857.html \ 15 | CVE-2019-3858.html \ 16 | CVE-2019-3859.html \ 17 | CVE-2019-3860.html \ 18 | CVE-2019-3861.html \ 19 | CVE-2019-3862.html \ 20 | CVE-2019-3863.html 21 | 22 | all: index.html mailhead.html cvs.html docs.html mailtop.html mailbot.html \ 23 | indextop.html indexbot.html menu.html changes.html source.html \ 24 | libssh2-vs-libssh.html license.html security.html $(CVES) 25 | cd git-source && git pull 26 | cd examples && make 27 | 28 | index.html: index.t $(MAINPARTS) 29 | $(ACTION) 30 | 31 | libssh2-vs-libssh.html: libssh2-vs-libssh.t $(MAINPARTS) 32 | $(ACTION) 33 | 34 | security.html: security.t $(MAINPARTS) security.gen 35 | $(ACTION) 36 | 37 | security.gen: $(SRCDIR)/docs/SECURITY.md 38 | $(MARKDOWN) $< >$@ 39 | 40 | changes.html: changes.t $(MAINPARTS) 41 | $(ACTION) 42 | 43 | license.html: license.t $(MAINPARTS) license.txt 44 | $(ACTION) 45 | license.txt: $(SRCDIR)/COPYING 46 | $(TXT2PLAIN) < $< > $@ 47 | 48 | docs.html: docs.t $(MAINPARTS) docmenu.t 49 | $(ACTION) 50 | 51 | cvs.html: cvs.t $(MAINPARTS) 52 | $(ACTION) 53 | 54 | source.html: source.t $(MAINPARTS) 55 | $(ACTION) 56 | 57 | menu.html: menu.t $(MAINPARTS) 58 | $(ACTION) 59 | 60 | mailhead.html: mailhead.t $(MAINPARTS) 61 | $(ACTION) 62 | 63 | mailtop.html: mailtop.t $(MAINPARTS) 64 | $(ACTION) 65 | 66 | mailbot.html: mailbot.t $(MAINPARTS) 67 | $(ACTION) 68 | 69 | indextop.html: indextop.t $(MAINPARTS) 70 | $(ACTION) 71 | 72 | indexbot.html: indexbot.t $(MAINPARTS) 73 | $(ACTION) 74 | 75 | adv_20150311.html: adv_20150311.t adv_20150311.gen $(MAINPARTS) 76 | $(ACTION) 77 | 78 | adv_20150311.gen: adv_20150311.txt 79 | $(MARKDOWN) $< >$@ 80 | 81 | adv_20160223.html: adv_20160223.t adv_20160223.gen $(MAINPARTS) 82 | $(ACTION) 83 | 84 | adv_20160223.gen: adv_20160223.txt 85 | $(MARKDOWN) $< >$@ 86 | 87 | CVE-2019-3855.html: CVE-2019-3855.t CVE-2019-3855.gen $(MAINPARTS) 88 | $(ACTION) 89 | 90 | CVE-2019-3855.gen: CVE-2019-3855.md 91 | $(MARKDOWN) $< >$@ 92 | 93 | CVE-2019-3856.html: CVE-2019-3856.t CVE-2019-3856.gen $(MAINPARTS) 94 | $(ACTION) 95 | 96 | CVE-2019-3856.gen: CVE-2019-3856.md 97 | $(MARKDOWN) $< >$@ 98 | 99 | CVE-2019-3857.html: CVE-2019-3857.t CVE-2019-3857.gen $(MAINPARTS) 100 | $(ACTION) 101 | 102 | CVE-2019-3857.gen: CVE-2019-3857.md 103 | $(MARKDOWN) $< >$@ 104 | 105 | CVE-2019-3858.html: CVE-2019-3858.t CVE-2019-3858.gen $(MAINPARTS) 106 | $(ACTION) 107 | 108 | CVE-2019-3858.gen: CVE-2019-3858.md 109 | $(MARKDOWN) $< >$@ 110 | 111 | CVE-2019-3859.html: CVE-2019-3859.t CVE-2019-3859.gen $(MAINPARTS) 112 | $(ACTION) 113 | 114 | CVE-2019-3859.gen: CVE-2019-3859.md 115 | $(MARKDOWN) $< >$@ 116 | 117 | CVE-2019-3860.html: CVE-2019-3860.t CVE-2019-3860.gen $(MAINPARTS) 118 | $(ACTION) 119 | 120 | CVE-2019-3860.gen: CVE-2019-3860.md 121 | $(MARKDOWN) $< >$@ 122 | 123 | CVE-2019-3861.html: CVE-2019-3861.t CVE-2019-3861.gen $(MAINPARTS) 124 | $(ACTION) 125 | 126 | CVE-2019-3861.gen: CVE-2019-3861.md 127 | $(MARKDOWN) $< >$@ 128 | 129 | CVE-2019-3862.html: CVE-2019-3862.t CVE-2019-3862.gen $(MAINPARTS) 130 | $(ACTION) 131 | 132 | CVE-2019-3862.gen: CVE-2019-3862.md 133 | $(MARKDOWN) $< >$@ 134 | 135 | CVE-2019-3863.html: CVE-2019-3863.t CVE-2019-3863.gen $(MAINPARTS) 136 | $(ACTION) 137 | 138 | CVE-2019-3863.gen: CVE-2019-3863.md 139 | $(MARKDOWN) $< >$@ 140 | 141 | 142 | clean: 143 | find . -name "*~" -exec rm {} \; 144 | -------------------------------------------------------------------------------- /Makefile.docs: -------------------------------------------------------------------------------- 1 | ROOT=. 2 | 3 | MAINPARTS= $(ROOT)/doctype.t body.t footer.t $(ROOT)/setup.t \ 4 | menu.t Makefile docmenu.t css.t 5 | OPTS=-WWW -Uunix -H -C -V -I$(ROOT) -LL 6 | FCPP=fcpp 7 | ACTION=$(FCPP) $(OPTS) $< $@ 8 | MAN2HTML=roffit --bare --mandir=docs --hrefdir=. 9 | 10 | include doc.mk 11 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | libssh2 www 2 | =========== 3 | 4 | This is the contents of the web site for libssh2, libssh2.org. 5 | 6 | Requirements 7 | ============ 8 | 9 | * GNU make 10 | * fcpp - https://github.com/bagder/fcpp 11 | * roffit - https://github.com/bagder/roffit 12 | 13 | Steps 14 | ===== 15 | 1. ln -s [libssh2 git repo]/docs . 16 | 17 | 2. ln -s [libssh2 git repo] git-source 18 | 19 | 3. make 20 | -------------------------------------------------------------------------------- /adv_20150311.t: -------------------------------------------------------------------------------- 1 | #include "doctype.t" 2 | #include "setup.t" 3 | HEAD(libssh2 Security Advisory: Using SSH_MSG_KEXINIT data unbounded) 4 | #include "body.t" 5 | #include "menu.t" 6 | 7 | TITLE(libssh2 Security Advisory) 8 | BOXTOP 9 | 10 | #include "adv_20150311.gen" 11 | 12 | BOXBOT 13 | 14 | #include "footer.t" 15 | -------------------------------------------------------------------------------- /adv_20150311.txt: -------------------------------------------------------------------------------- 1 | Using `SSH_MSG_KEXINIT` data unbounded 2 | ====================================== 3 | 4 | Project libssh2 Security Advisory, March 11th 2015 - 5 | [Permalink](https://www.libssh2.org/adv_20150311.html) 6 | 7 | VULNERABILITY 8 | ------------- 9 | 10 | When negotiating a new SSH session with a remote server, one of libssh2's 11 | functions for doing the key exchange (`kex_agree_methods()`) was naively 12 | reading data from the incoming packet and using it without doing sufficient 13 | range checks. The `SSH_MSG_KEXINIT` packet arrives to libssh2 with a set of 14 | strings, sent as a series of LENGTH + DATA pairs. libssh2 would go through the 15 | list and read the LENGTH field, read the string following the LENGTH and then 16 | advance the pointer LENGTH bytes in memory and expect to find the next LENGTH 17 | + DATA pair there. Then move on until seven subsequent strings are taken care 18 | of. It would naively assume that the (unsigned 32 bit) LENGTH fields were 19 | valid. 20 | 21 | This packet arrives in the negotiating phase so the remote server has not yet 22 | been deemed to be a known or trusted party. 23 | 24 | A malicious attacker could man in the middle a real server and cause libssh2 25 | using clients to crash (denial of service) or otherwise read and use 26 | completely unintended memory areas in this process. 27 | 28 | There are no known exploits of this flaw at this time. 29 | 30 | INFO 31 | ---- 32 | 33 | The Common Vulnerabilities and Exposures (CVE) project has assigned the name 34 | CVE-2015-1782 to this issue. 35 | 36 | AFFECTED VERSIONS 37 | ----------------- 38 | 39 | - Affected versions: all versions to and including 1.4.3 40 | - Not affected versions: libssh2 >= 1.5.0 41 | 42 | libssh2 is used by many applications, but not always advertised as such! 43 | 44 | THE SOLUTION 45 | ------------ 46 | 47 | libssh2 1.5.0 makes sure that the LENGTH fields read from the packet fit 48 | within the received packet size before attempting to read them, or it fails 49 | graciously. 50 | 51 | A patch for this problem is available at: 52 | 53 | https://www.libssh2.org/CVE-2015-1782.patch 54 | 55 | RECOMMENDATIONS 56 | --------------- 57 | 58 | We suggest you take one of the following actions immediately, in order of 59 | preference: 60 | 61 | A - Upgrade to libssh2 1.5.0 62 | 63 | B - Apply the patch and rebuild libssh2 64 | 65 | TIME LINE 66 | --------- 67 | 68 | It was first reported to the libssh2 project on January 25 2015. We contacted 69 | distros@openwall on March 6. 70 | 71 | libssh2 1.5.0 was released on March 11th 2015, coordinated with the 72 | publication of this advisory. 73 | 74 | CREDITS 75 | ------- 76 | 77 | Reported by Mariusz Ziulek. Patch written by Mariusz Ziulek and Daniel Stenberg, 78 | 79 | Thanks a lot! 80 | -------------------------------------------------------------------------------- /adv_20160223.t: -------------------------------------------------------------------------------- 1 | #include "doctype.t" 2 | #include "setup.t" 3 | HEAD(libssh2 Security Advisory: Truncated Difffie-Hellman secret length) 4 | #include "body.t" 5 | #include "menu.t" 6 | 7 | TITLE(libssh2 Security Advisory) 8 | BOXTOP 9 | 10 | #include "adv_20160223.gen" 11 | 12 | BOXBOT 13 | 14 | #include "footer.t" 15 | -------------------------------------------------------------------------------- /adv_20160223.txt: -------------------------------------------------------------------------------- 1 | Truncated Difffie-Hellman secret length 2 | ======================================= 3 | 4 | Project libssh2 Security Advisory, February 23rd 2016 - 5 | [Permalink](https://www.libssh2.org/adv_20160223.html) 6 | 7 | VULNERABILITY 8 | ------------- 9 | 10 | During the SSHv2 handshake when libssh2 is to get a suitable value for 'group 11 | order' in the Diffle Hellman negotiation, it would pass in number of *bytes* 12 | to a function that expected number of *bits*. This would result in the library 13 | generating numbers using only an 8th the number of random bits than what were 14 | intended: 128 or 256 bits instead of 1023 or 2047 15 | 16 | Using such drastically reduced amount of random bits for Diffie Hellman 17 | weakended the handshake security significantly. 18 | 19 | There are no known exploits of this flaw at this time. 20 | 21 | INFO 22 | ---- 23 | 24 | The Common Vulnerabilities and Exposures (CVE) project has assigned the name 25 | CVE-2016-0787 to this issue. 26 | 27 | AFFECTED VERSIONS 28 | ----------------- 29 | 30 | - Affected versions: all versions to and including 1.6.0 31 | - Not affected versions: libssh2 >= 1.7.0 32 | 33 | libssh2 is used by many applications, but not always advertised as such! 34 | 35 | THE SOLUTION 36 | ------------ 37 | 38 | libssh2 1.7.0 makes sure that there's a conversion done from number of bytes 39 | to number of bits when the internal `_libssh2_bn_rand` function is called. 40 | 41 | A patch for this problem is available at: 42 | 43 | https://www.libssh2.org/CVE-2016-0787.patch 44 | 45 | RECOMMENDATIONS 46 | --------------- 47 | 48 | We suggest you take one of the following actions immediately, in order of 49 | preference: 50 | 51 | A - Upgrade to libssh2 1.7.0 52 | 53 | B - Apply the patch and rebuild libssh2 54 | 55 | TIME LINE 56 | --------- 57 | 58 | It was first reported to the libssh2 project on February 7 2016 by Andreas 59 | Schneider. 60 | 61 | libssh2 1.7.0 was released on February 23rd 2016, coordinated with the 62 | publication of this advisory. 63 | 64 | CREDITS 65 | ------- 66 | 67 | Reported by Andreas Schneider. 68 | 69 | Thanks a lot! 70 | -------------------------------------------------------------------------------- /body.t: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /changes.t: -------------------------------------------------------------------------------- 1 | #include "doctype.t" 2 | #include "setup.t" 3 | HEAD(libssh2) 4 | #include "body.t" 5 | #include "menu.t" 6 | 7 |

8 | TITLE(Changelog) 9 | BOXTOP 10 | 11 | 12 | SUBTITLE(Version 1.11.1 - October 16 2024) 13 |

14 | Enhancements and bugfixes 15 |

16 |

288 | 289 | 290 | SUBTITLE(Version 1.11.0 - May 30 2023) 291 |

292 | Enhancements and bugfixes 293 |

294 |

357 | 358 | 359 | SUBTITLE(Version 1.10.0 - August 29 2021) 360 |

libssh2 1.10.0 GPG sig 362 |

363 | Enhancements and bugfixes 364 |

410 | 411 | 412 | SUBTITLE(Version 1.9.0 - June 20 2019) 413 |

libssh2 1.9.0 GPG sig 415 |

416 | Enhancements and bugfixes 417 |

447 | 448 | 449 | SUBTITLE(Version 1.8.2 - March 25 2019) 450 |

libssh2 1.8.2 GPG sig 452 |

453 | Bug fixes: 454 |

458 | 459 | 460 | SUBTITLE(Version 1.8.1 - March 18 2019) 461 |

libssh2 1.8.1 GPG sig 463 |

464 | Bug fixes: 465 |

498 | 499 | 500 | SUBTITLE(Version 1.8.0 - October 25 2016) 501 |

libssh2 1.8.0 GPG sig 503 |

504 | Changes: 505 |

509 | 510 | Bug fixes: 511 | 525 | 526 | 527 | SUBTITLE(Version 1.7.0 - February 23 2016) 528 |

libssh2 1.7.0 GPG sig 530 |

531 | Changes: 532 |

539 | Bug fixes: 540 | 572 | 573 | 574 | SUBTITLE(Version 1.6.0 - June 12 2015) 575 |

libssh2 1.6.0 GPG sig 577 |

578 | Changes: 579 |

583 |

584 | Bug fixes: 585 |

609 | 610 | 611 | SUBTITLE(Version 1.5.0 - March 11 2015) 612 |

libssh2 1.5.0 GPG sig 614 |

615 | Changes: 616 |

619 |

620 | Bug fixes: 621 |

688 | 689 | 690 | SUBTITLE(Version 1.4.3 - November 27 2012) 691 |

libssh2 1.4.3 GPG sig (685712 bytes) 693 |

694 | Changes: 695 |

698 |

699 | Bug fixes: 700 |

713 | 714 | 715 | SUBTITLE(Version 1.4.2 - May 18 2012) 716 |

libssh2 1.4.2 GPG sig (679992 bytes) 718 |

719 | Bug fixes: 720 |

730 | 731 | 732 | SUBTITLE(Version 1.4.1 - April 4 2012) 733 |

libssh2 1.4.1 GPG sig (658507 bytes) 735 |

736 | Bug fixes: 737 |

754 | 755 | 756 | SUBTITLE(Version 1.4.0 - January 31 2012) 757 |

libssh2 1.4.0 GPG sig (653514 bytes) 759 |

760 | Changes: 761 |

767 |

768 | Bug fixes: 769 |

781 | 782 | 783 | SUBTITLE(Version 1.3.0 - September 6 2011) 784 |

libssh2 1.3.0 GPG sig (639262 bytes) 786 |

787 | Changes: 788 |

791 |

792 | Bug fixes: 793 |

799 | 800 | 801 | SUBTITLE(Version 1.2.9 - August 16 2011) 802 |

libssh2 1.2.9 GPG sig (642150 bytes) 804 |

805 | Changes: 806 |

810 |

811 | Bug fixes: 812 |

831 | 832 | 833 | SUBTITLE(Version 1.2.8 - April 5 2011) 834 |

libssh2 1.2.8 GPG sig (637707 bytes) 836 |

837 | Changes: 838 |

847 |

848 | Bug fixes: 849 |

872 | 873 | 874 | SUBTITLE(Version 1.2.7 - August 17 2010) 875 |

libssh2 1.2.7 GPG sig (583105 bytes) 877 |

878 | Changes: 879 |

882 |

883 | Bug fixes: 884 |

904 | 905 | 906 | SUBTITLE(Version 1.2.6 - June 10 2010) 907 |

libssh2 1.2.6 GPG sig (579590 bytes) 909 |

910 | Changes: 911 |

916 |

917 | Bug fixes: 918 |

933 | 934 | 935 | SUBTITLE(Version 1.2.5 - April 13 2010) 936 |

libssh2 1.2.5 GPG sig (559553 bytes) 938 |

939 | Changes: 940 |

946 |

947 | Bug fixes: 948 |

964 | 965 | 966 | SUBTITLE(Version 1.2.4 - February 13 2010) 967 |

libssh2 1.2.4 GPG sig (547675 bytes) 969 |

970 | Bug fixes: 971 |

976 | 977 | 978 | SUBTITLE(Version 1.2.3 - February 3 2010) 979 |

libssh2 1.2.3 GPG sig (547652 bytes) 981 |

982 | Changes: 983 |

988 |

989 | Bug fixes: 990 |

1000 | 1001 | 1002 | SUBTITLE(Version 1.2.2 - November 16 2009) 1003 |

libssh2 1.2.2 GPG sig (535430 bytes) 1005 |

1006 | Changes: 1007 |

1011 |

1012 | Bug fixes: 1013 |

1016 | 1017 | 1018 | SUBTITLE(Version 1.2.1 - September 28 2009) 1019 |

libssh2 1.2.1 GPG sig (533302 bytes) 1021 |

1022 | Changes: 1023 |

1026 |

1027 | Bug fixes: 1028 |

1040 | 1041 | 1042 | SUBTITLE(Version 1.2 - August 10 2009) 1043 | 1044 |

libssh2 1.2 GPG sig (532299 bytes) 1046 |

1047 | Changes: 1048 |

1058 |

1059 | Bug fixes: 1060 |

1076 | 1077 | 1078 | SUBTITLE(Version 1.1 - April 2 2009) 1079 | 1080 |

libssh2 1.1 GPG sig 1082 | 1083 |

1104 | 1105 | 1106 | BOXBOT 1107 | 1108 | #include "footer.t" 1109 | -------------------------------------------------------------------------------- /css.t: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /cvs.t: -------------------------------------------------------------------------------- 1 | #include "doctype.t" 2 | #include "setup.t" 3 | HEAD(libssh2 Source Code Activity) 4 | #include "body.t" 5 | #include "menu.t" 6 | 7 |

8 | TITLE(libssh2 Source Code Activity) 9 | BOXTOP 10 | 11 | Since we switched to git, this hasn't been made to work yet! 12 | 13 | BOXBOT 14 | 15 | #include "footer.t" 16 | -------------------------------------------------------------------------------- /date.pm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libssh2/www/7f64f822399de8074c94ba3cf7fc9dd4dce861dd/date.pm -------------------------------------------------------------------------------- /docmake.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | all=docs/libssh2*.3 4 | 5 | out="doc.mk" 6 | 7 | nopath=`echo $all | sed -e 's:docs/::g'` 8 | 9 | html=`echo $nopath | sed -e 's/\.3/.html/g'` 10 | allraw=`echo $nopath | sed -e 's/\.3/.raw/g'` 11 | 12 | echo "all: $html" > $out 13 | echo "" >> $out 14 | 15 | for i in $nopath; do 16 | 17 | h=`echo $i | sed -e 's/\.3/.html/g'` 18 | raw=`echo $i | sed -e 's/\.3/.raw/g'` 19 | f=`echo $i | sed 's/\.3//g'` 20 | echo "$h: func.t $raw \$(MAINPARTS)" >> $out 21 | echo " \$(FCPP) \$(OPTS) -Dfunc=$f -Ddocs_$f -Dfuncinc=\\\"$raw\\\" \$< \$@" >> $out 22 | echo "" >> $out 23 | echo "$raw: docs/$i" >> $out 24 | echo " \$(MAN2HTML) < \$< >\$@" >> $out 25 | echo "" >> $out 26 | done 27 | 28 | echo "clean:" >> $out 29 | echo " rm -f $html $allraw" >> $out 30 | 31 | allfuncs=`echo $nopath | sed -e 's/\.3//g'` 32 | 33 | newd=docmenu-new.t 34 | echo '

' > $newd 35 | for i in $allfuncs; do 36 | cat <>$newd 37 | 42 | EOF 43 | 44 | done 45 | echo '
' >> $newd 46 | 47 | if { cmp -s $newd docmenu.t >/dev/null; } then 48 | echo "same" >/dev/null 49 | else 50 | # echo "diff" 51 | mv $newd docmenu.t 52 | fi 53 | -------------------------------------------------------------------------------- /docs.t: -------------------------------------------------------------------------------- 1 | #include "doctype.t" 2 | #include "setup.t" 3 | 4 | libssh2 docs 5 | 6 | 7 | #include "css.t" 8 | #include "manpage.t" 9 | 10 | 11 | #include "body.t" 12 | #include "menu.t" 13 | 14 |

15 | TITLE(libssh2 docs) 16 | BOXTOP 17 | 18 |
19 |

20 | The libssh2 offers a large amount of functions and this is an attempt to 21 | provide HTML versions of the man pages present in the source tree. These pages 22 | are updated automatically from the source code repository. 23 | 24 |

25 | Select page in the menu to the right. 26 | 27 |

28 | The functions are grouped into different subsystems: 29 |

    30 |
  • Session 31 |
  • Userauth 32 |
  • Channel 33 |
  • SFTP 34 |
  • Publickey 35 |
36 | 37 |

38 | There is also a small collection of examples and 39 | we're always open for adding more! 40 | 41 |

42 | #include "docmenu.t" 43 |
44 | 45 | BOXBOT 46 | 47 | #include "footer.t" 48 | -------------------------------------------------------------------------------- /doctype.t: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /examples/.gitignore: -------------------------------------------------------------------------------- 1 | *.et 2 | *.t 3 | *.html 4 | Makefile.examples 5 | Makefile.exhtml 6 | -------------------------------------------------------------------------------- /examples/Makefile: -------------------------------------------------------------------------------- 1 | ROOT=.. 2 | MAINPARTS= $(ROOT)/doctype.t $(ROOT)/body.t $(ROOT)/footer.t \ 3 | $(ROOT)/setup.t $(ROOT)/menu.t $(ROOT)/css.t _example-templ.html 4 | ACTION=fcpp -WWW -Uunix -H -I$(ROOT) -C -V -LL $< $@ 5 | 6 | # generated by mkexam.pl, assigns the EXAMPLES variable 7 | -include Makefile.exhtml 8 | 9 | all: $(EXAMPLES) index.html 10 | 11 | index.html: index.t $(MAINPARTS) ../git-source/example/Makefile 12 | $(ACTION) 13 | 14 | -include Makefile.examples 15 | 16 | clean: 17 | rm -f $(EXAMPLES) *.et 18 | 19 | scan: 20 | perl mkexam.pl 21 | -------------------------------------------------------------------------------- /examples/_example-templ.html: -------------------------------------------------------------------------------- 1 | #include "doctype.t" 2 | 3 | libssh2 - %cfile% 4 | #include "css.t" 5 | 6 | 7 | #define LIBSSH2_EXAMPLE 8 | 9 | #include "body.t" 10 | #include "setup.t" 11 | #include "menu.t" 12 | 13 | TITLE(%cfile%) 14 | BOXTOP 15 |
16 | #include "%rawfile%" 17 | 18 | SUBTITLE(All Examples) 19 | 20 | #include "allex.t" 21 |
22 |

23 | You will also find all examples in the distribution archive, in the 24 | example directory. 25 | BOXBOT 26 | 27 | #include "footer.t" 28 | -------------------------------------------------------------------------------- /examples/index.t: -------------------------------------------------------------------------------- 1 | #include "doctype.t" 2 | #include "setup.t" 3 | 4 | libssh2 examples 5 | 6 | 7 | #include "css.t" 8 | #include "manpage.t" 9 | 10 | 11 | #include "body.t" 12 | #include "menu.t" 13 | 14 |

15 | TITLE(libssh2 examples) 16 | BOXTOP 17 |
18 |

19 | Welcome to the examples section of the web site. This displays online versions 20 | of all the examples already present in the example 22 | directory of the release tarballs. 23 | 24 |

25 | If you end up writing any suitable examples yourself, please send them over 26 | and help us expand this section! 27 | 28 |

29 | SUBTITLE(All Examples) 30 | 31 | #include "allex.t" 32 |
33 | 34 | BOXBOT 35 | 36 | #include "footer.t" 37 | -------------------------------------------------------------------------------- /examples/mkexam.pl: -------------------------------------------------------------------------------- 1 | #!/usr/bin/perl 2 | 3 | my $manpage="https://libssh2.org/"; 4 | 5 | my $template="_example-templ.html"; 6 | my $dir="../git-source/example"; 7 | 8 | opendir(DIR, $dir) || die "can't opendir $dir: $!"; 9 | my @samps = grep { /\.c\z/ && -f "$dir/$_" } readdir(DIR); 10 | closedir DIR; 11 | 12 | my @mak; 13 | my @htmlfiles; 14 | my @basefiles; 15 | 16 | for my $f (@samps) { 17 | my $base = $f; 18 | $base =~ s/(.*)\.c/$1/; 19 | my $cfile = "$base.c"; 20 | my $encfile = "$base.et"; 21 | my $rawfile = "$base.t"; 22 | my $htmlfile = "$base.html"; 23 | 24 | my $cmd = sprintf("enscript %s -w html -o - --color -Ec -q ", 25 | "$dir/$cfile"); 26 | open(OUT, ">$rawfile"); 27 | open(F, "<$template") || 28 | next; 29 | 30 | while() { 31 | s/%cfile%/$cfile/g; 32 | s/%htmlfile%/$htmlfile/g; 33 | s/%rawfile%/$encfile/g; 34 | 35 | print OUT $_; 36 | } 37 | close(OUT); 38 | close(F); 39 | 40 | # now run enscript and extract the PRE part and linkify some of the libcurl 41 | # stuff 42 | # 43 | open(ET, ">$encfile"); 44 | open(CMD, "$cmd|"); 45 | my $show=0; 46 | while() { 47 | if($_ =~ /^

$2$3\n";
 57 |             }
 58 | 
 59 |             # replace backslashes
 60 |             $l =~ s/\\\n/\\ \n/g;
 61 | 
 62 |             if($l eq "\n") {
 63 |                 print ET " \n";
 64 |             }
 65 |             else {
 66 |                 print ET $l;
 67 |             }
 68 |             if($_ =~ /^<\/PRE/) {
 69 |                 $show = 0;
 70 |             }
 71 |         }
 72 |     }
 73 |     close(ET);
 74 |     close(CMD);
 75 | 
 76 |     push @htmlfiles, $htmlfile;
 77 |     push @basefiles, $base;
 78 | 
 79 |     push @mak, "$htmlfile: $rawfile \$(MAINPARTS)\n\t\$(ACTION)\n\n";
 80 | 
 81 |     push @mak, "$rawfile: $dir/$cfile\n\tperl mkexam.pl\n\n";
 82 | }
 83 | 
 84 | open(MAK, ">Makefile.exhtml");
 85 | print MAK "EXAMPLES = ";
 86 | for my $f(@htmlfiles) {
 87 |     print MAK "$f ";
 88 | }
 89 | print MAK "\n";
 90 | close(MAK);
 91 | 
 92 | open(MAK, ">Makefile.examples");
 93 | print MAK @mak;
 94 | close(MAK);
 95 | 
 96 | open(EX, ">allex.t");
 97 | for my $b (sort @basefiles) {
 98 |     printf EX "%s.c
", $b, $b; 99 | } 100 | print EX "\n"; 101 | close(EX); 102 | -------------------------------------------------------------------------------- /footer.t: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /func.t: -------------------------------------------------------------------------------- 1 | #include "doctype.t" 2 | 3 | func() 4 | #include "css.t" 5 | #include "manpage.t" 6 | 7 | #include "body.t" 8 | #include "setup.t" 9 | #include "menu.t" 10 | TITLE(func) 11 | BOXTOP 12 |
13 | #include funcinc 14 | 15 | #include "docmenu.t" 16 |
17 | BOXBOT 18 | #include "footer.t" 19 | -------------------------------------------------------------------------------- /index.t: -------------------------------------------------------------------------------- 1 | #include "doctype.t" 2 | #include "setup.t" 3 | HEAD(libssh2) 4 | #include "body.t" 5 | 6 | #include "menu.t" 7 | 8 |

the SSH library
9 |

10 | TITLE(libssh2) 11 | BOXTOP 12 |

13 |

14 | libssh2 is a client-side C library implementing the SSH2 protocol
15 |
16 |

17 | SUBTITLE(Capabilities and Features) 18 |

    19 |
  • Key Exchange Methods: diffie-hellman-group-exchange-sha256, 20 | diffie-hellman-group1-sha1, diffie-hellman-group14-sha1, diffie-hellman-group-exchange-sha1 21 |
  • Hostkey Types: ssh-ed25519, ssh-ed25519-cert-v01@openssh.com, ecdsa-sha2-nistp521, ecdsa-sha2-nistp384, ecdsa-sha2-nistp256, 22 | ssh-rsa, ssh-dss 23 |
  • Ciphers: aes256-gcm@openssh.com, aes128-gcm@openssh.com, 24 | aes256-ctr, aes192-ctr, aes128-ctr, 25 | aes256-cbc (rijndael-cbc@lysator.liu.se), aes192-cbc, aes128-cbc, 26 | 3des-cbc, blowfish-cbc, cast128-cbc, arcfour, arcfour128 27 |
  • Compression Schemes: zlib, zlib@openssh.com, none 28 |
  • MAC hashes: hmac-sha2-512, hmac-sha2-512-etm@openssh.com, hmac-sha2-256, hmac-sha2-256-etm@openssh.com, 29 | hmac-sha1, hmac-sha1-96, 30 | hmac-md5, hmac-md5-96, hmac-ripemd160 (hmac-ripemd160@openssh.com) 31 |
  • Authentication: none, password, public-key, hostbased, 32 | keyboard-interactive 33 |
  • Channels: shell, exec (incl. SCP wrapper), direct-tcpip, subsystem 34 |
  • Global Requests: tcpip-forward 35 |
  • Channel Requests: x11, pty, exit-signal, keepalive@openssh.com 36 |
  • Subsystems: sftp(version 3), publickey(version 2) 37 |
  • SFTP: statvfs@openssh.com, fstatvfs@openssh.com 38 |
  • Thread-safe: just do not share handles simultaneously 39 |
  • Non-blocking: it can be used both blocking and non-blocking 40 |
  • Your sockets: the app hands over the socket, calls select() etc. 41 |
  • Crypto backends: OpenSSL, libgcrypt, mbedTLS, wolfSSL or WinCNG (native since Windows Vista): builds with either 42 |
43 | 44 | SUBTITLE(Download) 45 |

46 |

62 | 63 | SUBTITLE(Documentation) 64 |
65 | 70 | 71 | 76 |
77 | 78 | SUBTITLE(Support) 79 |

80 |

89 | 90 | SUBTITLE(Development) 91 | 92 |

93 | 94 |

100 | 101 | BOXBOT 102 | 103 | #include "footer.t" 104 | -------------------------------------------------------------------------------- /indexbot.t: -------------------------------------------------------------------------------- 1 | 2 | 3 |

4 |

the libssh2 team
5 | 6 | -------------------------------------------------------------------------------- /indextop.t: -------------------------------------------------------------------------------- 1 | #include "doctype.t" 2 | 3 | libssh2 mailing list archives 4 | #include "css.t" 5 | 6 | #include "body.t" 7 | #include "setup.t" 8 | #include "menu.t" 9 |

10 | Archive Index 11 |
12 |

13 | -------------------------------------------------------------------------------- /libssh2-vs-libssh.t: -------------------------------------------------------------------------------- 1 | #include "doctype.t" 2 | #include "setup.t" 3 | HEAD(libssh2 vs libssh) 4 | #include "body.t" 5 | 6 | #include "menu.t" 7 | 8 |

9 | TITLE(libssh2 vs libssh - A comparison) 10 | BOXTOP 11 | 12 |

libssh2 and libssh both provide an API to develop SSH based applications. 13 | 14 |

Here's an attempt to put some light on the differences between them. 15 | 16 | SUBTITLE(libssh2 1.11.1) 17 |

18 |

    19 |
  • License: 3-clause BSD License 20 |
  • Developed in: C (41463 SLOC), sh (1252 SLOC), Perl (879 SLOC), Lisp (33 SLOC), AWK (23 SLOC) 21 |
  • Number of functions: 186 22 |
  • Key Exchange Methods: diffie-hellman-group-exchange-sha256, diffie-hellman-group1-sha1, diffie-hellman-group14-sha1, diffie-hellman-group-exchange-sha1 23 |
  • Hostkey Types: ssh-ed25519, ssh-ed25519-cert-v01@openssh.com, ecdsa-sha2-nistp521, ecdsa-sha2-nistp384, ecdsa-sha2-nistp256, ssh-rsa, ssh-dss 24 |
  • Ciphers: chacha20-poly1305@openssh.com, aes256-gcm@openssh.com, aes128-gcm@openssh.com, aes256-ctr, aes192-ctr, aes128-ctr, aes256-cbc (rijndael-cbc@lysator.liu.se), aes192-cbc, aes128-cbc, 3des-cbc, blowfish-cbc, cast128-cbc, arcfour, arcfour128 25 |
  • Compression Schemes: zlib, zlib@openssh.com, none 26 |
  • MAC hashes: hmac-sha2-512, hmac-sha2-512-etm@openssh.com, hmac-sha2-256, hmac-sha2-256-etm@openssh.com, hmac-sha1, hmac-sha1-96, hmac-md5, hmac-md5-96, hmac-ripemd160 (hmac-ripemd160@openssh.com) 27 |
  • Authentication: none, password, public-key, hostbased, keyboard-interactive 28 |
  • Channels: shell, exec (incl. SCP wrapper), direct-tcpip, subsystem 29 |
  • Global Requests: tcpip-forward 30 |
  • Channel Requests: x11, pty, exit-signal, keepalive@openssh.com 31 |
  • Subsystems: sftp(version 3), publickey(version 2) 32 |
  • SFTP: statvfs@openssh.com, fstatvfs@openssh.com, posix-rename@openssh.com 33 |
  • Thread-safe: just do not share handles simultaneously 34 |
  • Non-blocking: it can be used both blocking and non-blocking 35 |
  • Your sockets: the app hands over the socket, calls select() etc. 36 |
  • OpenSSL, Libgcrypt or WinCNG (native since Windows Vista): builds with either 37 |
38 | SUBTITLE(libssh 0.9.x) 39 |

40 |

    41 |
  • License: GNU Lesser General Public License 42 |
  • Developed in: C (72888 SLOC), C++ (563 SLOC), sh (189 SLOC), Python (9 SLOC) 43 |
  • Number of functions: 421 44 |
  • Key Exchange Methods: curve25519-sha256, ecdh-sha2-nistp256, diffie-hellman-group18-sha512, diffie-hellman-group16-sha512, diffie-hellman-group-exchange-sha256, diffie-hellman-group14-sha1, diffie-hellman-group1-sha1, diffie-hellman-group-exchange-sha1 45 |
  • Hostkey Types: ssh-ed25519, ecdsa-sha2-nistp256, ecdsa-sha2-nistp384, ecdsa-sha2-nistp521, rsa-sha2-512,rsa-sha2-256, ssh-rsa, ssh-dss 46 |
  • Ciphers: chacha20-poly1305, aes256-gcm@openssh.com, aes128-gcm@openssh.com, aes256-ctr, aes192-ctr, aes128-ctr, aes256-cbc, aes192-cbc, aes128-cbc, 3des-cbc 47 |
  • Compression Schemes: zlib, zlib@openssh.com, none 48 |
  • MAC hashes: hmac-sha2-512-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha1-etm@openssh.com, hmac-sha2-512, hmac-sha2-256, hmac-sha1, none 49 |
  • Authentication: none, password, public-key, keyboard-interactive, gssapi-with-mic 50 |
  • Channels: shell, exec (incl. SCP wrapper), direct-tcpip, subsystem, auth-agent-req@openssh.com 51 |
  • Global Requests: tcpip-forward, forwarded-tcpip 52 |
  • Channel Requests: x11, pty, exit-status, signal, exit-signal, keepalive@openssh.com, auth-agent-req@openssh.com 53 |
  • Subsystems: sftp(version 3), OpenSSH Extensions 54 |
  • SFTP: statvfs@openssh.com, fstatvfs@openssh.com 55 |
  • Thread-safe: Just don't share sessions 56 |
  • Non-blocking: it can not be used entirely non-blocking. 57 |
  • Your sockets: the app hands over the socket, or uses libssh sockets 58 |
  • OpenSSL, mbedTLS or gcrypt 59 |
  • Client and server support 60 |
  • SSHv2 protocol support 61 |
  • Supports Linux, UNIX, BSD, Solaris, OS/2 and Windows 62 |
  • Automated test cases with nightly tests 63 |
  • Event model based on poll(2), or a poll(2)-emulation. 64 |
  • FIPS 140-2 compatibility 65 |
66 | 67 | SUBTITLE(Feature by feature) 68 |

69 | The same data, in a table: 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 |
itemlibssh2libssh
LicenceBSDLGPL
Server-side supportnoyes
GSSAPI authenticationnoyes
Elliptic Curve Key Exchangeyesyes
Elliptic Curve Hostkeysyesyes
Certificate supportnoyes
FIPS 140-2 compliantnoyes
Continuous IntegrationJust compile testsFully featured testsuite including OpenSSH and dropbear client/server testing
Stable APIyesmostly
C compatibilityC89C99
strict namespaceyesyes
man pages for all functionsyesno
Doxygen documentation for all functionsnoyes
Tutorialnoyes
Build conceptAutotools and CMakeCMake
157 | BOXBOT 158 | 159 | #include "footer.t" 160 | -------------------------------------------------------------------------------- /libssh2.css: -------------------------------------------------------------------------------- 1 | BODY { 2 | background-color: white; 3 | color: black; 4 | } 5 | 6 | .title { 7 | background-color: #e0e0ff; 8 | font-family: arial, helvetica, ariel, sans-serif; 9 | color: black; 10 | font-size: 150%; 11 | font-weight: bold; 12 | } 13 | 14 | .subtitle { 15 | background-color: #e0e0ff; 16 | font-family: arial, helvetica, ariel, sans-serif; 17 | color: #000000; 18 | font-size: 120%; 19 | padding-left: 5px; 20 | } 21 | 22 | P { 23 | font-family: sans-serif; 24 | color: black; 25 | padding-left: 5px; 26 | } 27 | 28 | LI { 29 | font-family: sans-serif; 30 | color: black; 31 | } 32 | 33 | .big { 34 | font-size: 120%; 35 | vertical-align: baseline; 36 | } 37 | 38 | .address { 39 | font-style: italic; 40 | } 41 | 42 | .alert { 43 | font-size: 120%; 44 | background-color: #f0f000; 45 | color: black; 46 | border-style: solid; 47 | border-width: thin; 48 | border-color: black; 49 | } 50 | 51 | .grey { 52 | background-color: #f0f0f0; 53 | color: black; 54 | } 55 | 56 | .box { 57 | border-width: 1px; 58 | border-style: solid; 59 | border-color: #000000; 60 | padding: 2px 2px 2px 2px; 61 | } 62 | 63 | .boxnarrow { 64 | width: 600px; 65 | border-width: 1px; 66 | border-style: solid; 67 | border-color: #000000; 68 | padding: 2px 2px 2px 2px; 69 | } 70 | 71 | pre.quote { 72 | border-style: solid; 73 | border-width: thin; 74 | border-color: black; 75 | padding: 2px 2px 2px 2px; 76 | 77 | background-color: #f0f0ff; 78 | width: 90%; 79 | margin-left: 5%; 80 | margin-right: 5%; 81 | } 82 | 83 | /* menu for the mi4/sansa pages */ 84 | div.topmenu { 85 | margin-left: auto; 86 | margin-right: auto; 87 | padding: 4px 4px 4px 4px; 88 | } 89 | 90 | .odd { 91 | background-color: #e0e0e0; 92 | } 93 | 94 | .funcmenu { 95 | border: outset 1px #000000; 96 | float: right; 97 | background: #ffffff; 98 | padding: 4px 4px 4px 4px; 99 | font-size: 80%; 100 | } 101 | 102 | .funcmenu a { 103 | text-decoration: none; 104 | font-family: sans-serif; 105 | color: #003000; 106 | padding: 0px 0px 0px 0px; 107 | } 108 | 109 | .funcmenu div { 110 | padding: 1px 1px 1px 1px; 111 | } 112 | 113 | -------------------------------------------------------------------------------- /libssh2.pm: -------------------------------------------------------------------------------- 1 | 2 | sub header { 3 | my ($t) = @_; 4 | print "Content-Type: text/html\n\n"; 5 | open (HEAD, "mailhead.html"); 6 | while() { 7 | $_ =~ s:^libssh2-devel<\/title>:<title>$t<\/title>:; 8 | $_ =~ s:^<h1>_PAGE_<\/h1>:<h1>$t<\/h1>:; 9 | print $_; 10 | } 11 | close(HEAD); 12 | } 13 | 14 | sub footer { 15 | open (FOOT, "footer.t"); 16 | while(<FOOT>) { 17 | print $_; 18 | } 19 | close(FOOT); 20 | } 21 | 22 | 1; 23 | -------------------------------------------------------------------------------- /license.t: -------------------------------------------------------------------------------- 1 | #include "doctype.t" 2 | #include "setup.t" 3 | HEAD(libssh2 - license) 4 | #include "body.t" 5 | #include "menu.t" 6 | 7 | <p> 8 | TITLE(License) 9 | BOXTOP 10 | <pre> 11 | #include "license.txt" 12 | </pre> 13 | BOXBOT 14 | 15 | #include "footer.t" 16 | -------------------------------------------------------------------------------- /logo1-623.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libssh2/www/7f64f822399de8074c94ba3cf7fc9dd4dce861dd/logo1-623.png -------------------------------------------------------------------------------- /mail.cgi: -------------------------------------------------------------------------------- 1 | #!/usr/bin/perl -I. 2 | 3 | require "date.pm"; 4 | require "libssh2.pm"; 5 | require CGI; 6 | 7 | $req = new CGI; 8 | 9 | my $list = $req->param('list'); 10 | 11 | header("libssh2-devel mailing list archives", "mail"); 12 | 13 | sub showarchs { 14 | my ($num, @dirs) = @_; 15 | 16 | my %years; 17 | my %mos; 18 | 19 | if($num > 0) { 20 | while(scalar(@dirs) > $num) { 21 | shift @dirs; 22 | } 23 | } 24 | 25 | for(@dirs) { 26 | if($_ =~ /(\d\d\d\d)-(\d\d)/) { 27 | $years{$1}=1; 28 | $mos{$1}{$2}=1; 29 | } 30 | } 31 | 32 | @syears = reverse sort keys %years; 33 | 34 | print "<p><table class=archive>\n"; 35 | 36 | for(@syears) { 37 | $thisyear=$_; 38 | my $pr=0; 39 | 40 | print "<tr>\n"; 41 | print "<th>$thisyear</th>\n"; 42 | 43 | for my $d (1 .. 12) { 44 | my $dd = sprintf("%02d", $d); 45 | if($mos{$thisyear}{$dd}) { 46 | $year=$1; 47 | $mon=$2; 48 | 49 | printf("<td><a href=\"mail/libssh2-devel-archive-%04d-%02d/\">%s</a></td>\n", 50 | $thisyear, $d, substr(&MonthNameEng($d), 0, 3)); 51 | } 52 | else { 53 | # blank 54 | print "<td></td>"; 55 | } 56 | } 57 | print "</tr>\n"; 58 | } 59 | print "</tr></table>\n"; 60 | 61 | } 62 | 63 | 64 | sub archive { 65 | my ($num)=@_; 66 | 67 | my $some_dir="mail"; 68 | opendir(DIR, $some_dir) || die "can't opendir $some_dir: $!"; 69 | my @dirs = sort {$a cmp $b} grep { /^libssh2-devel-archive-/ && -d "$some_dir/$_" } readdir(DIR); 70 | closedir DIR; 71 | 72 | &showarchs($num, @dirs); 73 | 74 | } 75 | 76 | 77 | print <<END; 78 | <p> 79 | <div class=title align=left> libssh2 Mailing List Archives</div> 80 | <div class="box"> 81 | 82 | Archived mails sent to the <a 83 | href="https://lists.haxx.se/listinfo/libssh2-devel">libssh2-devel</a> mailing 84 | list can be found <a 85 | href="https://lists.haxx.se/pipermail/libssh2-devel/">here</a>. 86 | 87 | <p> 88 | The old mailing list archive is here: 89 | 90 | END 91 | 92 | archive(-1); 93 | 94 | print <<MOO 95 | 96 | <p> <a href="https://lists.haxx.se/listinfo/libssh2-devel">subscribe 97 | here</a>. 98 | 99 | </div> 100 | 101 | MOO 102 | ; 103 | 104 | &footer(); 105 | -------------------------------------------------------------------------------- /mailbot.t: -------------------------------------------------------------------------------- 1 | </div> 2 | </td> 3 | <td> 4 | 5 | </td></tr></table> 6 | <p> 7 | <div class="address">the libssh2 team</a></div> 8 | </body></html> 9 | -------------------------------------------------------------------------------- /mailhead.t: -------------------------------------------------------------------------------- 1 | #include "doctype.t" 2 | <head> 3 | <title>libssh2-devel mails 4 | #include "css.t" 5 | 6 | 7 |

10 | -------------------------------------------------------------------------------- /mailtop.t: -------------------------------------------------------------------------------- 1 | #include "doctype.t" 2 | 3 | libssh2 mailing list archives 4 | #include "css.t" 5 | 6 | #include "body.t" 7 | #include "setup.t" 8 | #include "menu.t" 9 | 10 |

11 | Archive Index 12 | This month's Index 13 |
14 |
15 |
16 | -------------------------------------------------------------------------------- /manpage.css: -------------------------------------------------------------------------------- 1 | pre.level0, P.level0 { 2 | padding-left: 2em; 3 | } 4 | 5 | pre.level1, P.level1 { 6 | padding-left: 4em; 7 | } 8 | 9 | pre.level2, P.level2 { 10 | padding-left: 6em; 11 | } 12 | 13 | span.emphasis { 14 | font-style: italic; 15 | } 16 | 17 | span.bold { 18 | font-weight: bold; 19 | } 20 | 21 | span.manpage { 22 | font-weight: bold; 23 | } 24 | 25 | h2.nroffsh { 26 | background-color: #e0e0ff; 27 | font-family: sans-serif; 28 | } 29 | 30 | span.nroffip { 31 | font-weight: bold; 32 | font-size: 120%; 33 | font-family: monospace; 34 | } 35 | 36 | p.roffit { 37 | text-align: center; 38 | font-size: 80%; 39 | } 40 | -------------------------------------------------------------------------------- /manpage.t: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /menu.t: -------------------------------------------------------------------------------- 1 | / | 2 | Mailing list | 3 | Docs | 4 | Examples | 5 | GitHub 6 | -------------------------------------------------------------------------------- /security.t: -------------------------------------------------------------------------------- 1 | #include "doctype.t" 2 | #include "setup.t" 3 | HEAD(libssh2 security) 4 | #include "body.t" 5 | #include "menu.t" 6 |

7 | TITLE(libssh2 security) 8 | BOXTOP 9 | 10 | Previously fixed security vulnerabilities in libssh2: 11 |

24 | 25 | 26 | #include "security.gen" 27 | 28 | BOXBOT 29 | 30 | #include "footer.t" 31 | -------------------------------------------------------------------------------- /setup.t: -------------------------------------------------------------------------------- 1 | #define TITLEPRE
2 | #define TITLEPOST
3 | #define TITLE(blurb) TITLEPRE blurb TITLEPOST 4 | #define SUBTITLE(blurb)
blurb
5 | 6 | #if 0 7 | #define BOXTOP
\ 8 |
9 | #define BOXBOT
\ 10 |
11 | #else 12 | 13 | #define BOXTOP
14 | #define BOXBOT
15 | #endif 16 | 17 | #define NBOXTOP
\ 18 |
19 | 20 | #define HEAD(text) \ 21 | text \ 22 | \ 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /source.t: -------------------------------------------------------------------------------- 1 | #include "doctype.t" 2 | #include "setup.t" 3 | HEAD(libssh2 Source Code Activity) 4 | #include "body.t" 5 | #include "menu.t" 6 | 7 |

8 | TITLE(libssh2 Source Code Activity) 9 | BOXTOP 10 | 11 | Since we switched to git, this hasn't been 13 | made to work yet! 14 | 15 | BOXBOT 16 | 17 | #include "footer.t" 18 | -------------------------------------------------------------------------------- /txt2plain.pl: -------------------------------------------------------------------------------- 1 | #!/usr/bin/perl 2 | 3 | while() { 4 | 5 | $_ =~ s/\/>/g; 7 | 8 | $_ =~ s/^$/\ /g; 9 | 10 | $_ =~ s/\/\*/&\#47;*/g; 11 | 12 | print $_; 13 | } 14 | -------------------------------------------------------------------------------- /update.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # now build the docs 4 | ./docmake.sh 5 | 6 | # run make for the docs 7 | make -f Makefile.docs 8 | 9 | # rebuild the main html files 10 | make 11 | --------------------------------------------------------------------------------