summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* README: rename "VSTS" to "Azure DevOps"ethomson/ci-renameEdward Thomson2018-09-181-2/+2
| | | | | Visual Studio Team Services is now a family of applications named "Azure DevOps". Update the README to refer to it thusly.
* README: update the build badge to Azure PipelinesEdward Thomson2018-09-181-1/+1
| | | | | VSTS is now a family of components; "Azure Pipelines" is the build and release pipeline application.
* ci: rename vsts to azure-pipelinesEdward Thomson2018-09-185-9/+9
|
* Merge pull request #4809 from libgit2/cmn/revwalk-sign-regressionEdward Thomson2018-09-181-3/+9
|\ | | | | Fix revwalk limiting regression
| * revwalk: only check the first commit in the list for an earlier timestampcmn/revwalk-sign-regressionCarlos Martín Nieto2018-09-171-2/+8
| | | | | | | | | | | | | | This is not a big deal, but it does make us match git more closely by checking only the first. The lists are sorted already, so there should be no functional difference other than removing a possible check from every iteration in the loop.
| * revwalk: use the max value for a signed integerCarlos Martín Nieto2018-09-171-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | When porting, we overlooked that the difference between git's and our's time representation and copied their way of getting the max value. Unfortunately git was using unsigned integers, so `~0ll` does correspond to their max value, whereas for us it corresponds to `-1`. This means that we always consider the last date to be smaller than the current commit's and always think commits are interesting. Change the initial value to the macro that gives us the maximum value on each platform so we can accurately consider commits interesting or not.
* | Merge pull request #4805 from libgit2/signed_charEdward Thomson2018-09-181-1/+1
|\ \ | | | | | | path validation: `char` is not signed by default.
| * | path validation: `char` is not signed by default.signed_charEdward Thomson2018-09-121-1/+1
| |/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ARM treats its `char` type as `unsigned type` by default; as a result, testing a `char` value as being `< 0` is always false. This is a warning on ARM, which is promoted to an error given our use of `-Werror`. Per ISO 9899:199, section "6.2.5 Types": > The three types char, signed char, and unsigned char are collectively > called the character types. The implementation shall define char to > have the same range, representation, and behavior as either signed > char or unsigned char. > ... > Irrespective of the choice made, char is a separate type from the other > two and is not compatible with either.
* | Merge pull request #4811 from libgit2/cmn/sorting-modesEdward Thomson2018-09-181-5/+5
|\ \ | |/ |/| revwalk: refer the sorting modes more to git's options
| * revwalk: refer the sorting modes more to git's optionscmn/sorting-modesCarlos Martín Nieto2018-09-171-5/+5
|/ | | | | Show more directly what the sorting modes correspond to in git's `rev-list` as that's the reference implementation for what the possible sorting orders are.
* Merge pull request #4778 from libgit2/ethomson/clar-xmlEdward Thomson2018-09-0912-189/+429
|\ | | | | Clar XML output redux
| * clar: iterate errors in report_all / report_errorsEdward Thomson2018-09-081-19/+15
| | | | | | | | | | | | Instead of trying to have a clever iterator pattern that increments the error number, just iterate over errors in the report errors or report all functions as it's easier to reason about in this fashion.
| * ci: use more compatible strftime formatsEdward Thomson2018-09-061-1/+1
| | | | | | | | | | Windows lacks %F and %T formats for strftime. Expand them to the year/month/day and hour/minute/second formats, respectively.
| * ci: use templates for VSTS buildsEdward Thomson2018-09-064-200/+103
| | | | | | | | | | Our build YAML is becoming unweildly and full of copy-pasta. Simplify with templates.
| * ci: explicitly run in the build directoryEdward Thomson2018-09-061-0/+13
| | | | | | | | | | Explicitly run from the build directory, not the source. (I was mistaken about the default working directory for VSTS agents.)
| * ci: escape xml output path on WindowsEdward Thomson2018-09-061-1/+3
| | | | | | | | | | CMake treats backslashes as escape characters; use forward slashes for the XML output path.
| * ci: upload test resultsEdward Thomson2018-09-061-0/+63
| |
| * ci: write xml during test runsEdward Thomson2018-09-062-3/+3
| |
| * clar: remove globals; error-check fprintf/fcloseEdward Thomson2018-09-062-44/+87
| | | | | | | | | | | | Remove the global summary filename and file pointer; pass them in to the summary functions as needed. Error check the results of buffered I/O calls.
| * clar: introduce CLAR_XML optionEdward Thomson2018-09-062-5/+21
| | | | | | | | | | | | Introduce a CLAR_XML option, to run the `ctest` commands with the new `-r` flag to clar. Permitted values are `OFF`, `ON` and a directory to write the XML test results to.
| * clar: accept a value for the summary filenameEdward Thomson2018-09-062-12/+25
| | | | | | | | | | Accept an (optional) value for the summary filename. Continues to default to summary.xml.
| * clar: don't use a variable named `time`Edward Thomson2018-09-061-4/+4
| |
| * Barebones JUnit XML outputEtienne Samson2018-09-062-1/+111
| |
| * DocumentationEtienne Samson2018-09-061-0/+2
| |
| * Isolate test reportsEtienne Samson2018-09-063-36/+82
| | | | | | | | | | This makes it possible to keep track of every test status (even successful ones), and their errors, if any.
| * clar: refactor explicitly run test behaviorEdward Thomson2018-09-061-11/+44
| | | | | | | | | | | | | | | | | | | | | | | | Previously, supplying `-s` to explicitly enable some test(s) would run the tests immediately from the argument parser. This forces us to set up the entire clar environment (for example: sandboxing) before argument parsing takes place. Refactor the behavior of `-s` to add the explicitly chosen tests to a list that is executed later. This untangles the argument parsing from the setup lifecycle, allowing us to use the arguments to perform the setup.
* | Merge pull request #4785 from tiennou/fix/cleanup-remotePatrick Steinhardt2018-09-074-18/+37
|\ \ | | | | | | remote: store the connection data in a private struct
| * | remote: store the connection data in a private structEtienne Samson2018-09-074-18/+37
| | | | | | | | | | | | | | | | | | | | | | | | This makes it easier to pass connection-related options around (proxy & custom headers for now). This fixes a bug in git_push_finish, which didn't reuse the provided proxy if the connection closed between the call to `git_remote_push` and the finish step.
* | | Merge pull request #4789 from pks-t/pks/licensingEdward Thomson2018-09-066-3/+2036
|\ \ \ | | | | | | | | docs: clarify and include licenses of dependencies
| * | | docs: clarify and include licenses of dependenciesPatrick Steinhardt2018-08-306-3/+2036
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | While our contribution guide tries to make clear the licenses that apply to libgit2, it does not make clear that different licenses apply to our bundled dependencies. Make this clear by listing each dependency together with the licenses that they are governed by. Furthermore, bundle the complete license texts next to the code they apply to.
* | | | Merge pull request #4799 from pks-t/pks/config-multivar-quadraticEdward Thomson2018-09-061-12/+17
|\ \ \ \ | |_|_|/ |/| | | config_file: fix quadratic behaviour when adding config multivars
| * | | config_file: fix quadratic behaviour when adding config multivarsPatrick Steinhardt2018-09-061-12/+17
|/ / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In case where we add multiple configuration entries with the same key to a diskfile backend, we always need to iterate the list of this key to find the last entry due to the list being a singly-linked list. This is obviously quadratic behaviour, and this has sure enough been found by oss-fuzz by generating a configuration file with 50k lines, where most of them have the same key. While the issue will not arise with "sane" configuration files, an adversary may trigger it by providing a crafted ".gitmodules" file, which is delivered as part of the repo and also parsed by the configuration parser. The fix is trivial: store a pointer to the last entry of the list in its head. As there are only two locations now where we append to this data structure, mainting this pointer is trivial, too. We can also optimize retrieval of a single value via `config_get`, where we previously had to chase the `next` pointer to find the last entry that was added. Using our configuration file fozzur with a corpus that has a single file with 50000 "-=" lines previously took around 21s. With this optimization the same file scans in about 0.053s, which is a nearly 400-fold improvement. But in most cases with a "normal" amount of same-named keys it's not going to matter anyway.
* | | Merge pull request #4792 from nelhage/multiline-leakPatrick Steinhardt2018-09-061-18/+25
|\ \ \ | | | | | | | | config: Fix a leak parsing multi-line config entries
| * | | config_parse: refactor error handling when parsing multiline variablesPatrick Steinhardt2018-09-031-19/+25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The current error handling for the multiline variable parser is a bit fragile, as each error condition has its own code to clear memory. Instead, unify error handling as far as possible to avoid this repetitive code. While at it, make use of `GITERR_CHECK_ALLOC` to correctly handle OOM situations and verify that the buffer we print into does not run out of memory either.
| * | | config: Fix a leak parsing multi-line config entriesNelson Elhage2018-09-011-0/+1
| | | |
* | | | Merge pull request #4797 from bisho/patch-2Patrick Steinhardt2018-09-061-1/+1
|\ \ \ \ | | | | | | | | | | Prevent heap-buffer-overflow
| * | | | Prevent heap-buffer-overflowbisho2018-09-051-1/+1
|/ / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When running repack while doing repo writes, `packfile_load__cb()` can see some temporary files in the directory that are bigger than the usual, and makes `memcmp` overflow on the `p->pack_name` string. ASAN detected this. This just uses `strncmp`, that should not have any performance impact and is safe for comparing strings of different sizes. ``` ERROR: AddressSanitizer: heap-buffer-overflow on address 0x61200001a3f3 at pc 0x7f4a9e1976ec bp 0x7ffc1f80e100 sp 0x7ffc1f80d8b0 READ of size 89 at 0x61200001a3f3 thread T0 SCARINESS: 26 (multi-byte-read-heap-buffer-overflow) #0 0x7f4a9e1976eb in __interceptor_memcmp.part.78 (/build/cfgr-admin#link-tree/libtools_build_sanitizers_asan-ubsan-py.so+0xcf6eb) #1 0x7f4a518c5431 in packfile_load__cb /build/libgit2/0.27.0/src/libgit2-0.27.0/src/odb_pack.c:213 #2 0x7f4a518d9582 in git_path_direach /build/libgit2/0.27.0/src/libgit2-0.27.0/src/path.c:1134 #3 0x7f4a518c58ad in pack_backend__refresh /build/libgit2/0.27.0/src/libgit2-0.27.0/src/odb_pack.c:347 #4 0x7f4a518c1b12 in git_odb_refresh /build/libgit2/0.27.0/src/libgit2-0.27.0/src/odb.c:1511 #5 0x7f4a518bff5f in git_odb__freshen /build/libgit2/0.27.0/src/libgit2-0.27.0/src/odb.c:752 #6 0x7f4a518c17d4 in git_odb_stream_finalize_write /build/libgit2/0.27.0/src/libgit2-0.27.0/src/odb.c:1415 #7 0x7f4a51b9d015 in Repository_write /build/pygit2/0.27.0/src/pygit2-0.27.0/src/repository.c:509 ```
* | | | Merge pull request #4790 from libgit2/ethomson/travisEdward Thomson2018-09-032-98/+0
|\ \ \ \ | | | | | | | | | | ci: remove travis
| * | | | README: remove travisethomson/travisEdward Thomson2018-09-031-1/+0
| | | | |
| * | | | ci: remove travisEdward Thomson2018-08-301-97/+0
| | |_|/ | |/| |
* | | | Merge pull request #4791 from DavidStaheli/users/davidstaheli/vsts-yamlEdward Thomson2018-09-022-32/+28
|\ \ \ \ | |/ / / |/| | | Update VSTS YAML files with the latest syntax
| * | | Update .vsts-ci.ymlDavid Staheli2018-08-311-28/+24
| | | |
| * | | Update .vsts-nightly.ymlDavid Staheli2018-08-311-4/+4
|/ / /
* | | Merge pull request #4788 from tiennou/doc-fixesPatrick Steinhardt2018-08-303-113/+154
|\ \ \ | | | | | | | | Documentation fixes
| * | | diff: documentation mashupEtienne Samson2018-08-291-111/+151
| | | |
| * | | push: make the parallelism default follow the docsEtienne Samson2018-08-291-1/+1
| | | |
| * | | doc: fix comment on GIT_EUSEREtienne Samson2018-08-291-1/+2
| | | |
* | | | Merge pull request #4781 from nelhage/multiline-loopPatrick Steinhardt2018-08-301-35/+30
|\ \ \ \ | | |/ / | |/| | config: convert unbounded recursion into a loop
| * | | config: convert unbounded recursion into a loopNelson Elhage2018-08-251-35/+30
| | | |
* | | | Merge pull request #4773 from RandomSort/giterrPatrick Steinhardt2018-08-302-1/+11
|\ \ \ \ | |_|/ / |/| | | Document giterr_last() use only after error. #4772