Commit Graph

456 Commits

Author SHA1 Message Date
wildart
bdec62dce1 remove conditions that prevent use of custom TLS stream 2016-07-06 13:06:25 -04:00
David Brooks
6c9eb86f22 HTTP authentication scheme name is case insensitive. 2016-06-19 11:46:43 +01:00
Edward Thomson
2a09de91a8 Merge pull request #3816 from pks-t/pks/memory-leaks
Memory leak fixes
2016-06-14 04:33:55 -10:00
Patrick Steinhardt
43c55111d9 winhttp: plug several memory leaks 2016-06-07 15:36:13 +02:00
Patrick Steinhardt
7d02019a07 transports: smart: fix potential invalid memory dereferences
When we receive a packet of exactly four bytes encoding its
length as those four bytes it can be treated as an empty line.
While it is not really specified how those empty lines should be
treated, we currently ignore them and do not return an error when
trying to parse it but simply advance the data pointer.

Callers invoking `git_pkt_parse_line` are currently not prepared
to handle this case as they do not explicitly check this case.
While they could always reset the passed out-pointer to `NULL`
before calling `git_pkt_parse_line` and determine if the pointer
has been set afterwards, it makes more sense to update
`git_pkt_parse_line` to set the out-pointer to `NULL` itself when
it encounters such an empty packet. Like this it is guaranteed
that there will be no invalid memory references to free'd
pointers.

As such, the issue has been fixed such that `git_pkt_parse_line`
always sets the packet out pointer to `NULL` when an empty packet
has been received and callers check for this condition, skipping
such packets.
2016-06-07 09:14:14 +02:00
Edward Thomson
375bb2fe60 transport: cast away constness for free 2016-04-21 11:02:31 -04:00
Carlos Martín Nieto
0d72f67f28 proxy: don't specify the protocol in the type
We leave this up to the scheme in the url field. The type should only
tell us about whether we want a proxy and whether we want to auto-detect
it.
2016-04-19 13:54:19 +02:00
Carlos Martín Nieto
bf6f7ad297 winhttp: correctly detect HTTPS usage 2016-04-19 13:54:19 +02:00
Carlos Martín Nieto
b373e9a6ba net: use proxy options struct in the stream config 2016-04-19 13:54:19 +02:00
Carlos Martín Nieto
22e6aa0d4f proxy: don't require the trailing slash on WinHTTP
The path is not something that you use for proxies, so make use of the
new optionality of the path when extracting URL parts.
2016-04-19 13:54:19 +02:00
Carlos Martín Nieto
b117721dd8 proxy: use poxy to test our Windows proxy support 2016-04-19 13:54:19 +02:00
Carlos Martín Nieto
07bd3e57d9 proxy: ask the user for credentials if necessary 2016-04-19 13:54:19 +02:00
Carlos Martín Nieto
d4763c9861 Merge pull request #3574 from chescock/buffer-sideband-pack-data
Buffer sideband packet data
2016-03-24 06:56:25 -07:00
Chris Hescock
9028a8a22a Only buffer if necessary. 2016-03-08 10:43:37 -05:00
Edward Thomson
b7809b8469 Merge pull request #3555 from cbargren/ssh-git-protocols
Support for ssh+git and git+ssh protocols
2016-03-08 13:38:55 +00:00
Carlos Martín Nieto
22f3d3aa6b ssh: initialize libssh2
We should have been doing this, but it initializes itself upon first
use, which works as long as nobody's doing concurrent network
operations. Initialize it on our init to make sure it's not getting
initialized concurrently.
2016-03-03 22:26:31 +01:00
Carlos Martín Nieto
a4cba9d453 winhttp: retry authentication
If the caller has provided bad authentication, give them another
apportunity to get it right until they give up. This brings WinHTTP in
line with the other transports.
2016-03-03 11:18:03 +01:00
Patrick Steinhardt
003c5e46a8 transports: smart_pkt: fix memory leaks on error paths 2016-02-23 11:50:23 +01:00
Patrick Steinhardt
6e2a37556d smart_pkt: check buffer with GITERR_CHECK_ALLOC_BUF 2016-02-23 11:50:23 +01:00
Patrick Steinhardt
b0f7512f40 transports: smart_pkt: fix memory leaks 2016-02-18 20:50:33 +01:00
Patrick Steinhardt
704554cdf0 transports: smart: fix memory leak on OOM path 2016-02-18 20:50:33 +01:00
Edward Thomson
9ce0399c4d winhttp: use an unsigned iterator 2016-02-16 11:50:49 +00:00
Edward Thomson
5c7f2f0188 winhttp: name mangle class / iid on mingw
Standard Windows type systems define CLSID_InternetSecurityManager
and IID_IInternetSecurityManager, but MinGW lacks these definitions.
As a result, we must hardcode these definitions ourselves.  However,
we should not use a public struct with those names, lest another
library do the same thing and consumers cannot link to both.
2016-01-19 11:13:23 -06:00
Chris Hescock
a7d9d93dad Buffer sideband packet data
The inner packet may be split across multiple sideband packets.
2016-01-12 10:08:58 -05:00
Chris Bargren
4df17045c1 Removing #define for SSH_PREFIX_COUNT and using ARRAY_SIZE instead
Also moving var declarations to top of blocks to support bad old compilers
2015-12-28 11:45:00 -07:00
Michał Górny
02fdc2db22 ssh_stream_read(): fix possible *bytes_read < 0 branch
Fix the possibility of returning successfully from ssh_stream_read()
with *bytes_read < 0. This would occur if stdout channel read resulted
in 0, and stderr channel read failed afterwards.
2015-12-26 17:17:05 +01:00
Chris Bargren
ed21fd745c Handle git+ssh:// and ssh+git:// protocols support 2015-12-22 10:38:31 -07:00
Chris Hescock
efd9ab568b Treat GIT_PASSTHROUGH as though git_cred_acquire_cb isn't set. 2015-12-01 10:54:20 -05:00
Carlos Martín Nieto
1411cb9eb5 winhttp: use a custom user-agent if the user has set it
We also keep the "git/1.0" prefix in order to maintain compatibility
with hosters.
2015-11-12 17:18:42 +01:00
Carlos Martín Nieto
94bac76c3f http: use a custom user-agent if the user has set it
We still prefix it with "git/1.0" since that's required in many
situations, but we replace the area which mentions libgit2.
2015-11-12 17:18:42 +01:00
Carlos Martín Nieto
e0be1d605f git: put NULL check at the top 2015-10-30 18:23:17 +01:00
Carlos Martín Nieto
45d295e08c git: accept NULL as argument to its stream free 2015-10-30 17:51:50 +01:00
Carlos Martín Nieto
72b7c57093 Merge pull request #3411 from spraints/custom-push-headers
Include custom HTTP headers
2015-09-30 09:17:18 +02:00
Matt Burke
d7375662e7 Copy custom_headers insteach of referencing the caller's copy 2015-09-25 10:16:30 -04:00
Matt Burke
d16c1b978f These can be static 2015-09-24 10:32:29 -04:00
Matt Burke
e60db3c79a Revise custom header error messages
If the header doesn't look like a header (e.g. if it doesn't have a ":"
or if it has newlines), report "custom HTTP header '%s' is malformed".

If the header has the same name as a header already set by libgit2 (e.g.
"Host"), report "HTTP header '%s' is already set by libgit2".
2015-09-24 09:24:10 -04:00
Matt Burke
63cc57232c Don't null-check 2015-09-24 09:13:05 -04:00
Matt Burke
098f1e6e25 Use an array of forbidden custom headers 2015-09-24 09:09:48 -04:00
Matt Burke
3245896bb7 Add a test for custom header validation
Also, *some* custom headers actually are valid.
2015-09-10 13:18:26 -04:00
Matt Burke
66d90e7098 More specific names 2015-09-10 09:14:20 -04:00
Matt Burke
8c876fa91d Validate custom http headers 2015-09-10 09:11:16 -04:00
Matt Burke
35969c6839 Ignore NULL headers 2015-09-10 08:58:23 -04:00
Carlos Martín Nieto
6c21211c38 Merge pull request #3379 from theseion/additional_libssh2_error_reporting
report libssh2 error if list of authentication methods can't be retrieved
2015-09-09 13:59:38 +02:00
Matt Burke
c82c2ba60f o i 2015-09-08 14:17:59 -04:00
Matt Burke
80ee25434d Teach winhttp about the extra headers 2015-09-08 14:04:59 -04:00
Matt Burke
276f6aa08d Hook up the custom_headers to the http transport 2015-09-08 14:02:47 -04:00
Matt Burke
24f5b4e155 Drop extra_http_headers from git_remote 2015-09-08 14:01:57 -04:00
Matt Burke
59d6128e27 Allow the world to set HTTP headers for remotes 2015-09-04 09:36:50 -04:00
Matt Burke
ac9b512789 Pull extra_http_headers from the git_remote 2015-09-04 09:20:45 -04:00
Matt Burke
6af6e69009 Put the extra headers on the connection_data instead 2015-09-04 09:18:32 -04:00