Check markdown links validity in CI (#2495)

* add markdown link check in ci

* fix broken links when possible.
configuration file for md checker.

* accept code 200...

* more fixes

* more fixes

* more fixes
This commit is contained in:
Romain Malmain 2024-08-23 01:15:15 +02:00 committed by GitHub
parent f856092f3d
commit 8d0ad23856
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
14 changed files with 33 additions and 15 deletions

View File

@ -221,6 +221,15 @@ jobs:
- name: Format Check - name: Format Check
run: ./scripts/fmt_all.sh check run: ./scripts/fmt_all.sh check
md-links-check:
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v4
- name: Run Markdown Link checks
uses: gaurav-nelson/github-action-markdown-link-check@v1
with:
config-file: '.github/workflows/md-config.json'
fuzzers-preflight: fuzzers-preflight:
runs-on: ubuntu-24.04 runs-on: ubuntu-24.04
steps: steps:

8
.github/workflows/md-config.json vendored Normal file
View File

@ -0,0 +1,8 @@
{
"ignorePatterns": [
{
"pattern": "^https://crates.io"
}
],
"aliveStatusCodes": [0, 200]
}

View File

@ -93,7 +93,7 @@ cargo make run
as long as the fuzzer directory has `Makefile.toml` file. as long as the fuzzer directory has `Makefile.toml` file.
The best-tested fuzzer is [`./fuzzers/libfuzzer_libpng`](./fuzzers/libfuzzer_libpng), a multicore libfuzzer-like fuzzer using LibAFL for a libpng harness. The best-tested fuzzer is [`./fuzzers/libpng/libfuzzer_libpng`](./fuzzers/libpng/libfuzzer_libpng), a multicore libfuzzer-like fuzzer using LibAFL for a libpng harness.
## Resources ## Resources

View File

@ -27,7 +27,7 @@ Metadata objects are primarly intended to be used inside [`SerdeAnyMap`](https:/
With these maps, the user can retrieve instances by type (and name). Internally, the instances are stored as SerdeAny trait objects. With these maps, the user can retrieve instances by type (and name). Internally, the instances are stored as SerdeAny trait objects.
Structs that want to have a set of metadata must implement the [`HasMetadata`](https://docs.rs/libafl/latest/libafl/state/trait.HasMetadata.html) trait. Structs that want to have a set of metadata must implement the [`HasMetadata`](https://docs.rs/libafl/latest/libafl/common/trait.HasMetadata.html) trait.
By default, Testcase and State implement it and hold a SerdeAnyMap testcase. By default, Testcase and State implement it and hold a SerdeAnyMap testcase.

View File

@ -12,7 +12,7 @@ Some cross-platform things in bolts include
* ShMem: A cross-platform (Windows, Linux, Android, MacOS) shared memory implementation * ShMem: A cross-platform (Windows, Linux, Android, MacOS) shared memory implementation
* LLMP: A fast, lock-free IPC mechanism via SharedMap * LLMP: A fast, lock-free IPC mechanism via SharedMap
* Core_affinity: A maintained version of `core_affinity` that can be used to get core information and bind processes to cores * Core_affinity: A maintained version of `core_affinity` that can be used to get core information and bind processes to cores
* Rands: Fast random number generators for fuzzing (like [RomuRand](http://www.romu-random.org/)) * Rands: Fast random number generators for fuzzing (like [RomuRand](https://www.romu-random.org/))
* MiniBSOD: get and print information about the current process state including important registers. * MiniBSOD: get and print information about the current process state including important registers.
* Tuples: Haskel-like compile-time tuple lists * Tuples: Haskel-like compile-time tuple lists
* Os: OS specific stuff like signal handling, windows exception handling, pipes, and helpers for `fork` * Os: OS specific stuff like signal handling, windows exception handling, pipes, and helpers for `fork`

View File

@ -51,7 +51,7 @@ In it, you'll find highlights like:
The sugar crate abstracts away most of the complexity of LibAFL's API. The sugar crate abstracts away most of the complexity of LibAFL's API.
Instead of high flexibility, it aims to be high-level and easy-to-use. Instead of high flexibility, it aims to be high-level and easy-to-use.
It is not as flexible as stitching your fuzzer together from each individual component, but allows you to build a fuzzer with minimal lines of code. It is not as flexible as stitching your fuzzer together from each individual component, but allows you to build a fuzzer with minimal lines of code.
To see it in action, take a look at the [`libfuzzer_stb_image_sugar` example fuzzer](https://github.com/AFLplusplus/LibAFL/tree/main/fuzzers/libfuzzer_stb_image_sugar). To see it in action, take a look at the [`libfuzzer_stb_image_sugar` example fuzzer](https://github.com/AFLplusplus/LibAFL/tree/main/fuzzers/stb/libfuzzer_stb_image_sugar).
### [`libafl_derive`](https://github.com/AFLplusplus/LibAFL/tree/main/libafl_derive) ### [`libafl_derive`](https://github.com/AFLplusplus/LibAFL/tree/main/libafl_derive)

View File

@ -4,7 +4,7 @@ Multiple fuzzer instances can be spawned using different ways.
## Manually, via a TCP port ## Manually, via a TCP port
The straightforward way to do Multi-Threading is to use the [`LlmpRestartingEventManager`](https://docs.rs/libafl/latest/libafl/events/llmp/struct.LlmpRestartingEventManager.html), specifically to use [`setup_restarting_mgr_std`](https://docs.rs/libafl/latest/libafl/events/llmp/fn.setup_restarting_mgr_std.html). The straightforward way to do Multi-Threading is to use the [`LlmpRestartingEventManager`](https://docs.rs/libafl/latest/libafl/events/llmp/restarting/struct.LlmpRestartingEventManager.html), specifically to use [`setup_restarting_mgr_std`](https://docs.rs/libafl/latest/libafl/events/llmp/restarting/fn.setup_restarting_mgr_std.html).
It abstracts away all the pesky details about restarts on crash handling (for in-memory fuzzers) and multi-threading. It abstracts away all the pesky details about restarts on crash handling (for in-memory fuzzers) and multi-threading.
With it, every instance you launch manually tries to connect to a TCP port on the local machine. With it, every instance you launch manually tries to connect to a TCP port on the local machine.

View File

@ -5,4 +5,4 @@
> This section is under construction. > This section is under construction.
> Please check back later (or open a PR) > Please check back later (or open a PR)
> >
> In the meantime, find the final Lain-based fuzzer in [the fuzzers folder](https://github.com/AFLplusplus/LibAFL/tree/main/fuzzers/tutorial) > In the meantime, find the final Lain-based fuzzer in [the fuzzers folder](https://github.com/AFLplusplus/LibAFL/tree/main/fuzzers/others/tutorial)

View File

@ -15,7 +15,7 @@ On unix platforms, you'll need [libc++](https://libcxx.llvm.org/) to build it.
Alternatively you can run `cargo make run` and this command will automatically build and run the fuzzer Alternatively you can run `cargo make run` and this command will automatically build and run the fuzzer
### Build For Android ### Build For Android
When building for android using a cross-compiler, make sure you have a [_standalone toolchain_](https://developer.android.com/ndk/guides/standalone_toolchain), and then add the following: When building for android using a cross-compiler, make sure you have a [_standalone toolchain_](https://developer.android.com/ndk/guides/other_build_systems), and then add the following:
1. In the ~/.cargo/config file add a target with the correct cross-compiler toolchain name (in this case aarch64-linux-android, but names may vary) 1. In the ~/.cargo/config file add a target with the correct cross-compiler toolchain name (in this case aarch64-linux-android, but names may vary)
`[target.aarch64-linux-android]` `[target.aarch64-linux-android]`
`linker="aarch64-linux-android-clang"` `linker="aarch64-linux-android-clang"`

View File

@ -15,7 +15,7 @@ On unix platforms, you'll need [libc++](https://libcxx.llvm.org/) to build it.
Alternatively you can run `cargo make run` and this command will automatically build and run the fuzzer Alternatively you can run `cargo make run` and this command will automatically build and run the fuzzer
### Build For Android ### Build For Android
When building for android using a cross-compiler, make sure you have a [_standalone toolchain_](https://developer.android.com/ndk/guides/standalone_toolchain), and then add the following: When building for android using a cross-compiler, make sure you have a [_standalone toolchain_](https://developer.android.com/ndk/guides/other_build_systems), and then add the following:
1. In the ~/.cargo/config file add a target with the correct cross-compiler toolchain name (in this case aarch64-linux-android, but names may vary) 1. In the ~/.cargo/config file add a target with the correct cross-compiler toolchain name (in this case aarch64-linux-android, but names may vary)
`[target.aarch64-linux-android]` `[target.aarch64-linux-android]`
`linker="aarch64-linux-android-clang"` `linker="aarch64-linux-android-clang"`
@ -38,7 +38,7 @@ You can also fuzz libpng-1.6.37 on windows with frida mode
### To build it with visual studio ### To build it with visual studio
1. Install clang for windows (make sure you add LLVM to the system path!) 1. Install clang for windows (make sure you add LLVM to the system path!)
[https://github.com/llvm/llvm-project/releases/tag/llvmorg-12.0.1](https://github.com/llvm/llvm-project/releases/tag/llvmorg-12.0.1) [https://github.com/llvm/llvm-project/releases/tag/llvmorg-12.0.1](https://github.com/llvm/llvm-project/releases/tag/llvmorg-12.0.1)
2. Download libpng-1.6.37[https://github.com/glennrp/libpng/archive/refs/tags/v1.6.37.tar.gz] and zlib [https://zlib.net/fossils/zlib-1.2.11.tar.gz] into this directory, and rename `zlib-1.2.11` directory to `zlib`. 2. Download [libpng-1.6.37](https://github.com/glennrp/libpng/archive/refs/tags/v1.6.37.tar.gz) and [zlib](https://zlib.net/fossils/zlib-1.2.11.tar.gz) into this directory, and rename `zlib-1.2.11` directory to `zlib`.
3. Build libpng1.6.37 3. Build libpng1.6.37
- Open libpng-1.6.37/projects/vstudio/vstudio.sln - Open libpng-1.6.37/projects/vstudio/vstudio.sln

View File

@ -3,7 +3,7 @@
Nautilus is a coverage guided, grammar-based mutator. You can use it to improve your test coverage and find more bugs. By specifying the grammar of semi-valid inputs, Nautilus is able to perform complex mutation and to uncover more interesting test cases. Many of the ideas behind the original fuzzer are documented in a paper published at NDSS 2019. Nautilus is a coverage guided, grammar-based mutator. You can use it to improve your test coverage and find more bugs. By specifying the grammar of semi-valid inputs, Nautilus is able to perform complex mutation and to uncover more interesting test cases. Many of the ideas behind the original fuzzer are documented in a paper published at NDSS 2019.
<p> <p>
<a href="https://www.syssec.ruhr-uni-bochum.de/media/emma/veroeffentlichungen/2018/12/17/NDSS19-Nautilus.pdf"> <img align="right" width="200" src="https://github.com/RUB-SysSec/nautilus/raw/master/paper.png"> </a> <a href="https://www.ndss-symposium.org/wp-content/uploads/2019/02/ndss2019_04A-3_Aschermann_paper.pdf"> <img align="right" width="200" src="https://github.com/RUB-SysSec/nautilus/raw/master/paper.png"> </a>
</p> </p>
Version 2.0 has added many improvements to this early prototype. Version 2.0 has added many improvements to this early prototype.

View File

@ -33,8 +33,10 @@ use crate::{
inputs::UsesInput, inputs::UsesInput,
observers::{ObserversTuple, UsesObservers}, observers::{ObserversTuple, UsesObservers},
state::{HasCorpus, HasCurrentTestcase, HasExecutions, HasSolutions, State, UsesState}, state::{HasCorpus, HasCurrentTestcase, HasExecutions, HasSolutions, State, UsesState},
Error, ExecutionProcessor, HasMetadata, HasScheduler, Error, HasMetadata,
}; };
#[cfg(any(unix, feature = "std"))]
use crate::{ExecutionProcessor, HasScheduler};
/// The inner structure of `InProcessExecutor`. /// The inner structure of `InProcessExecutor`.
pub mod inner; pub mod inner;

View File

@ -9,7 +9,7 @@ Some cross-platform things in bolts include (but are not limited to):
* ShMem: A cross-platform (Windows, Linux, Android, MacOS) shared memory implementation * ShMem: A cross-platform (Windows, Linux, Android, MacOS) shared memory implementation
* LLMP: A fast, lock-free IPC mechanism via SharedMap * LLMP: A fast, lock-free IPC mechanism via SharedMap
* Core_affinity: A maintained version of `core_affinity` that can be used to get core information and bind processes to cores * Core_affinity: A maintained version of `core_affinity` that can be used to get core information and bind processes to cores
* Rands: Fast random number generators for fuzzing (like [RomuRand](http://www.romu-random.org/)) * Rands: Fast random number generators for fuzzing (like [RomuRand](https://www.romu-random.org/))
* MiniBSOD: get and print information about the current process state including important registers. * MiniBSOD: get and print information about the current process state including important registers.
* Tuples: Haskel-like compile-time tuple lists * Tuples: Haskel-like compile-time tuple lists
* Os: OS specific stuff like signal handling, windows exception handling, pipes, and helpers for `fork` * Os: OS specific stuff like signal handling, windows exception handling, pipes, and helpers for `fork`
@ -37,8 +37,8 @@ Some of the parts in this list may be hard, don't be afraid to open a PR if you
#### License #### License
<sup> <sup>
Licensed under either of <a href="LICENSE-APACHE">Apache License, Version Licensed under either of <a href="../LICENSE-APACHE">Apache License, Version
2.0</a> or <a href="LICENSE-MIT">MIT license</a> at your option. 2.0</a> or <a href="../LICENSE-MIT">MIT license</a> at your option.
</sup> </sup>
<br> <br>

View File

@ -196,7 +196,6 @@ Running with the `--wait-for-keypress exit` option waits for the enter key after
## Projects Using printf ## Projects Using printf
- [turnkeyboard](https://github.com/mpaland/turnkeyboard) uses printf as log and generic tty (formatting) output. - [turnkeyboard](https://github.com/mpaland/turnkeyboard) uses printf as log and generic tty (formatting) output.
- printf is part of [embeddedartistry/libc](https://github.com/embeddedartistry/libc), a libc targeted for embedded systems usage. - printf is part of [embeddedartistry/libc](https://github.com/embeddedartistry/libc), a libc targeted for embedded systems usage.
- The [Hatchling Platform]( https://github.com/adrian3git/HatchlingPlatform) uses printf.
(Just send me a mail/issue/PR to get *your* project listed here) (Just send me a mail/issue/PR to get *your* project listed here)