summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* version: 0.28ethomson/0_28Edward Thomson2019-01-311-3/+3
|
* changelog: this is 0.28Edward Thomson2019-01-311-2/+2
|
* Merge pull request #4968 from tiennou/fix/documentationEdward Thomson2019-01-311-12/+21
|\ | | | | Docs
| * docs: minor changesEtienne Samson2019-01-301-12/+21
| |
* | Merge branch 'pks/stream-truncated-writes'Edward Thomson2019-01-317-70/+73
|\ \ | |/ |/|
| * mbedtls: fix potential size overflow when reading or writing dataethomson/stream-truncated-writesPatrick Steinhardt2019-01-311-2/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The mbedtls library uses a callback mechanism to allow downstream users to plug in their own receive and send functions. We implement `bio_read` and `bio_write` functions, which simply wrap the `git_stream_read` and `git_stream_write` functions, respectively. The problem arises due to the return value of the callback functions: mbedtls expects us to return an `int` containing the actual number of bytes that were read or written. But this is in fact completely misdesigned, as callers are allowed to pass in a buffer with length `SIZE_MAX`. We thus may be unable to represent the number of bytes written via the return value. Fix this by only ever reading or writing at most `INT_MAX` bytes.
| * mbedtls: make global variables staticPatrick Steinhardt2019-01-311-4/+2
| | | | | | | | | | | | The mbedtls stream implementation makes use of some global variables which are not marked as `static`, even though they're only used in this compilation unit. Fix this and remove a duplicate declaration.
| * openssl: fix potential size overflow when writing dataPatrick Steinhardt2019-01-311-2/+1
| | | | | | | | | | | | | | Our `openssl_write` function calls `SSL_write` by passing in both `data` and `len` arguments directly. Thing is, our `len` parameter is of type `size_t` and theirs is of type `int`. We thus need to clamp our length to be at most `INT_MAX`.
| * streams: handle short writes only in generic streamPatrick Steinhardt2019-01-312-20/+11
| | | | | | | | | | | | | | | | Now that the function `git_stream__write_full` exists and callers of `git_stream_write` have been adjusted, we can lift logic for short writes out of the stream implementations. Instead, this is now handled either by `git_stream__write_full` or by callers of `git_stream_write` directly.
| * streams: fix callers potentially only writing partial dataPatrick Steinhardt2019-01-314-25/+35
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Similar to the write(3) function, implementations of `git_stream_write` do not guarantee that all bytes are written. Instead, they return the number of bytes that actually have been written, which may be smaller than the total number of bytes. Furthermore, due to an interface design issue, we cannot ever write more than `SSIZE_MAX` bytes at once, as otherwise we cannot represent the number of bytes written to the caller. Unfortunately, no caller of `git_stream_write` ever checks the return value, except to verify that no error occurred. Due to this, they are susceptible to the case where only partial data has been written. Fix this by introducing a new function `git_stream__write_full`. In contrast to `git_stream_write`, it will always return either success or failure, without returning the number of bytes written. Thus, it is able to write all `SIZE_MAX` bytes and loop around `git_stream_write` until all data has been written. Adjust all callers except the BIO callbacks in our mbedtls and OpenSSL streams, which already do the right thing and require the amount of bytes written.
| * streams: make file-local functions staticPatrick Steinhardt2019-01-313-19/+17
|/ | | | | | The callback functions that implement the `git_stream` structure are only used inside of their respective implementation files, but they are not marked as `static`. Fix this.
* Merge pull request #4954 from tiennou/fix/documentationEdward Thomson2019-01-305-89/+142
|\ | | | | Documentation fixes
| * repo: split git_repository_open_flag_t options documentation inlineEtienne Samson2019-01-281-28/+41
| |
| * transport: enhance documentationEtienne Samson2019-01-281-57/+88
| |
| * docs: document GIT_EUSER/GIT_EPASSTHROUGHEtienne Samson2019-01-281-1/+10
| |
| * doc: clarify that git_time_t is seconds from the epochEtienne Samson2019-01-282-3/+3
| |
* | Merge pull request #4964 from libgit2/ethomson/ci_nightlyEdward Thomson2019-01-285-44/+70
|\ \ | |/ |/| ci: add an individual coverity pipeline
| * ci: add coverity badge to the READMEEdward Thomson2019-01-281-1/+1
| |
| * ci: ignore coverity failures in nightly runsEdward Thomson2019-01-284-43/+69
|/ | | | | Coverity is back but it's only read-only! Agh. Just allow it to fail and not impact the overall job run.
* Merge pull request #4961 from libgit2/ethomson/ci_docuriumEdward Thomson2019-01-271-0/+23
|\ | | | | ci: run docurium to create documentation
| * ci: run docurium to create documentationethomson/ci_docuriumEdward Thomson2019-01-261-0/+23
| | | | | | | | | | | | | | | | | | | | Run docurium as part of the build. The goal of this is to be able to evaluate the documentation in a given pull request; as such, this does not implement any sort of deployment pipeline. This will allow us to download a snapshot of the documentation from the CI build and evaluate the docs for a particular pull request; before it's been merged.
* | Merge pull request #4962 from libgit2/ethomson/ci_nightlyEdward Thomson2019-01-272-21/+19
|\ \ | | | | | | ci: return coverity to the nightlies
| * | ci: return coverity to the nightliesEdward Thomson2019-01-272-21/+19
|/ /
* | Merge pull request #4950 from libgit2/ethomson/warningsEdward Thomson2019-01-2629-60/+124
|\ \ | | | | | | Clean up some warnings
| * | filter: return an intEdward Thomson2019-01-251-1/+1
| | | | | | | | | | | | | | | Validate that the return value of the read is not less than INT_MAX, then cast.
| * | diff_generate: validate oid file sizeEdward Thomson2019-01-251-2/+2
| | | | | | | | | | | | Index entries are 32 bit unsigned ints, not `size_t`s.
| * | describe: don't mix and match abbreviated size typesEdward Thomson2019-01-251-2/+2
| | | | | | | | | | | | | | | The git_describe_format_options.abbreviated_size type is an unsigned int. There's no need for it to be anything else; keep it what it is.
| * | delta: validate sizes and cast safelyEdward Thomson2019-01-251-4/+11
| | | | | | | | | | | | | | | Quiet down a warning from MSVC about how we're potentially losing data. Validate that our data will fit into the type provided then cast.
| * | git transport: only write INT_MAX bytesEdward Thomson2019-01-251-5/+9
| | | | | | | | | | | | | | | The transport code returns an `int` with the number of bytes written; thus only attempt to write at most `INT_MAX`.
| * | windows: add SSIZE_MAXEdward Thomson2019-01-251-0/+6
| | | | | | | | | | | | | | | | | | Windows doesn't include ssize_t or its _MAX value by default. We are already declaring ssize_t as SSIZE_T, which is __int64_t on Win64 and long otherwise. Include its _MAX value as a correspondence to its type.
| * | streams: don't write more than SSIZE_MAXEdward Thomson2019-01-254-13/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | Our streams implementation takes a `size_t` that indicates the length of the data buffer to be written, and returns an `ssize_t` that indicates the length that _was_ written. Clearly no such implementation can write more than `SSIZE_MAX` bytes. Ensure that each TLS stream implementation does not try to write more than `SSIZE_MAX` bytes (or smaller; if the given implementation takes a smaller size).
| * | buffer: explicitly castEdward Thomson2019-01-251-1/+1
| | | | | | | | | | | | | | | Quiet down a warning from MSVC about how we're potentially losing data. This is safe since we've explicitly tested it.
| * | blame: make hunk_cmp handle unsigned differencesEdward Thomson2019-01-251-1/+6
| | |
| * | apply: make update_hunk accept a size_tEdward Thomson2019-01-251-1/+1
| | |
| * | MSVC: ignore empty compilation units (warning LNK4221)Edward Thomson2019-01-251-0/+3
| | | | | | | | | | | | | | | | | | | | | A number of source files have their implementation #ifdef'd out (because they target another platform). MSVC warns on empty compilation units (with warning LNK4221). Ignore warning 4221 when creating the object library.
| * | test: cast to a char the zstream testEdward Thomson2019-01-251-1/+1
| | |
| * | index test: cast times explicitlyEdward Thomson2019-01-251-2/+2
| | | | | | | | | | | | Cast actual filesystem data to the int32_t that index entries store.
| * | iterator: cast filesystem iterator entry values explicitlyEdward Thomson2019-01-251-3/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The filesystem iterator takes `stat` data from disk and puts them into index entries, which use 32 bit ints for time (the seconds portion) and filesize. However, on most systems these are not 32 bit, thus will typically invoke a warning. Most users ignore these fields entirely. Diff and checkout code do use the values, however only for the cache to determine if they should check file modification. Thus, this is not a critical error (and will cause a hash recomputation at worst).
| * | blob: validate that blob sizes fit in a size_tEdward Thomson2019-01-258-20/+52
| | | | | | | | | | | | | | | | | | Our blob size is a `git_off_t`, which is a signed 64 bit int. This may be erroneously negative or larger than `SIZE_MAX`. Ensure that the blob size fits into a `size_t` before casting.
| * | tree: cast filename length in git_tree__parse_rawEdward Thomson2019-01-251-2/+2
| | | | | | | | | | | | | | | Quiet down a warning from MSVC about how we're potentially losing data. Ensure that we're within a uint16_t before we do.
| * | odb_loose: explicitly cast to size_tEdward Thomson2019-01-251-1/+1
| | | | | | | | | | | | | | | | | | Quiet down a warning from MSVC about how we're potentially losing data. This is safe since we've explicitly tested that it's positive and less than SIZE_MAX.
| * | patch: explicitly cast down in parse_header_percentEdward Thomson2019-01-251-1/+1
| | | | | | | | | | | | | | | | | | Quiet down a warning from MSVC about how we're potentially losing data. This is safe since we've explicitly tested that it's within the range of 0-100.
| * | index: explicitly cast down to a size_tEdward Thomson2019-01-251-1/+1
| | | | | | | | | | | | | | | | | | Quiet down a warning from MSVC about how we're potentially losing data. This cast is safe since we've explicitly tested that `strip_len` <= `last_len`.
| * | diff: explicitly cast in flush_hunkEdward Thomson2019-01-251-1/+1
| |/ | | | | | | Quiet down a warning from MSVC about how we're potentially losing data.
* | Merge pull request #4869 from libgit2/ethomson/ci_nightlyEdward Thomson2019-01-261-4/+4
|\ \ | |/ |/| Nightlies: use `latest` docker images
| * nightly: use latest images, not test imagesEdward Thomson2019-01-261-4/+4
|/
* Merge pull request #4858 from tiennou/fix/index-ext-readEdward Thomson2019-01-2510-14/+54
|\ | | | | index: preserve extension parsing errors
| * index: preserve extension parsing errorsEtienne Samson2019-01-2410-14/+54
| | | | | | | | | | | | | | Previously, we would clobber any extension-specific error message with an "extension is truncated" message. This makes `read_extension` correctly preserve those errors, takes responsibility for truncation errors, and adds a new message with the actual extension signature for unsupported mandatory extensions.
* | Merge pull request #4952 from libgit2/ethomson/deprecationEdward Thomson2019-01-2515-263/+354
|\ \ | | | | | | Deprecate functions and constants more gently
| * | deprecation: define GIT_DEPRECATE_HARD internallyEdward Thomson2019-01-252-1/+5
| | | | | | | | | | | | | | | Ensure that we do not use any deprecated functions in the library source, test code or examples.