bitcoin/test/lint
laanwj 5e1aacab57
Merge bitcoin/bitcoin#24933: util: Replace non-threadsafe strerror
e3a06a3c6c test: Add `strerror` to locale-dependence linter (laanwj)
f00fb1265a util: Increase buffer size to 1024 in SysErrorString (laanwj)
718da302c7 util: Refactor SysErrorString logic (laanwj)
e7f2f77756 util: Use strerror_s for SysErrorString on Windows (laanwj)
46971c6dbf util: Replace non-threadsafe strerror (laanwj)

Pull request description:

  Some uses of non-threadsafe `strerror` have snuck into the code since they were removed in #4152. Add a wrapper `SysErrorString` for thread-safe strerror alternatives (with code from `NetworkErrorString`) and replace all uses of `strerror` with this.

  Edit: I've also added a commit that refactors the code so that buf[] is never read at all if the function fails, making some fragile-looking code unnecessary.

  Edit2: from the linux manpage:
  ```
  ATTRIBUTES
         For an explanation of the terms used in this section, see attributes(7).

         ┌───────────────────┬───────────────┬─────────────────────────┐
         │Interface          │ Attribute     │ Value                   │
         ├───────────────────┼───────────────┼─────────────────────────┤
         │strerror()         │ Thread safety │ MT-Unsafe race:strerror │
         ├───────────────────┼───────────────┼─────────────────────────┤
  …
         ├───────────────────┼───────────────┼─────────────────────────┤
         │strerror_r(),      │ Thread safety │ MT-Safe                 │
         │strerror_l()       │               │                         │
         └───────────────────┴───────────────┴─────────────────────────┘
  ```
  As the function can be called from any thread at any time, using a non-thread-safe function is unacceptable.

ACKs for top commit:
  jonatack:
    ACK e3a06a3c6c

Tree-SHA512: 20e71ebb9e979d4e1d8cafbb2e32e20c2a63f09115fe72cdde67c8f80ae98c531d286f935fd8a6e92a18b72607d7bd3e846b2d871d9691a6036b0676de8aaf25
2022-05-04 21:08:30 +02:00
..
check-doc.py scripted-diff: Bump copyright headers 2020-12-31 09:45:41 +01:00
commit-script-check.sh script: redirecting stderr to stdout before pipelining into grep 2022-01-22 12:36:19 +01:00
extended-lint-all.sh scripted-diff: Bump copyright headers 2020-04-16 13:33:09 -04:00
extended-lint-cppcheck.sh Merge bitcoin/bitcoin#23474: test: scripted-diff cleanups after generate* changes 2021-11-16 11:22:06 +08:00
git-subtree-check.sh scripted-diff: Bump copyright headers 2021-12-30 19:36:57 +02:00
lint-all.py Converting lint-all.sh to lint-all.py. 2022-04-26 06:25:01 -03:00
lint-assertions.py lint: Mention NONFATAL_UNREACHABLE in lint-assertions.py 2022-04-26 10:01:54 +02:00
lint-circular-dependencies.py lint: Fix lint-circular-dependencies.py file list 2022-04-30 11:16:44 +02:00
lint-files.py lint: Start to use py lint scripts 2022-04-04 16:58:54 +02:00
lint-format-strings.py lint: Fix lint-circular-dependencies.py file list 2022-04-30 11:16:44 +02:00
lint-git-commit-check.py lint: Convert lint-git-commit-check.sh to Python 2022-04-16 15:43:19 +02:00
lint-include-guards.py Convert lint-include-guards.sh to python 2022-04-20 09:52:58 -04:00
lint-includes.py http: replace boost::split with SplitString 2022-05-04 07:34:48 +02:00
lint-locale-dependence.py test: Add strerror to locale-dependence linter 2022-04-28 10:24:06 +02:00
lint-logs.py lint: Convert lint-logs.sh to Python 2022-04-14 02:43:31 +02:00
lint-python-dead-code.py lint: Convert Python dead code linter to Python 2022-04-06 00:55:22 +02:00
lint-python-mutable-default-parameters.py Converted lint-python-mutable-default-parameters.sh to python 2022-04-08 11:53:47 -04:00
lint-python-utf8-encoding.py lint: Convert lint-python-utf8-encoding.sh to Python 2022-04-21 23:26:45 +02:00
lint-python.py lint: Convert Python linter to Python 2022-04-18 00:55:06 +02:00
lint-shell-locale.py lint: convert shell locale linter test to Python 2022-04-20 14:37:52 +00:00
lint-shell.sh Merge bitcoin/bitcoin#23506: test: Make more shell scripts verifiable by the shellcheck tool 2021-11-30 20:05:44 +01:00
lint-spelling.py lint: convert spell check lint test to python 2022-04-06 00:16:01 +02:00
lint-submodule.py lint: convert submodule linter test to Python 2022-04-20 05:21:13 +00:00
lint-tests.py Converted lint-tests.sh to python 2022-04-15 10:10:03 -04:00
lint-whitespace.py lint: Convert lint-whitespace.sh to Python 2022-04-16 15:53:15 +02:00
README.md Converting lint-all.sh to lint-all.py. 2022-04-26 06:25:01 -03:00
run-lint-format-strings.py Move lint script and data file to avoid lint- prefix 2022-04-04 16:58:07 +02:00
spelling.ignore-words.txt Move lint script and data file to avoid lint- prefix 2022-04-04 16:58:07 +02:00

This folder contains lint scripts.

check-doc.py

Check for missing documentation of command line options.

commit-script-check.sh

Verification of scripted diffs. Scripted diffs are only assumed to run on the latest LTS release of Ubuntu. Running them on other operating systems might require installing GNU tools, such as GNU sed.

git-subtree-check.sh

Run this script from the root of the repository to verify that a subtree matches the contents of the commit it claims to have been updated to.

Usage: test/lint/git-subtree-check.sh [-r] DIR [COMMIT]
       test/lint/git-subtree-check.sh -?
  • DIR is the prefix within the repository to check.
  • COMMIT is the commit to check, if it is not provided, HEAD will be used.
  • -r checks that subtree commit is present in repository.

To do a full check with -r, make sure that you have fetched the upstream repository branch in which the subtree is maintained:

To do so, add the upstream repository as remote:

git remote add --fetch secp256k1 https://github.com/bitcoin-core/secp256k1.git

lint-all.py

Calls other scripts with the lint- prefix.