Граф коммитов

17 Коммитов

Автор SHA1 Сообщение Дата
Anurag Saxena 8cb62b3fd7
Support for multiple implementations of global helper functions (#1761)
* fix

* add native test

* cleanup

* CR comments

* update expected files

* fix

* cr comments
2022-12-31 10:56:28 -07:00
Alan Jowett f4b0fa1a50
Add version check to native images (#1720)
* Add version check to native images

Signed-off-by: Alan Jowett <alanjo@microsoft.com>

* Fix release build

Signed-off-by: Alan Jowett <alanjo@microsoft.com>

* PR feedback

Signed-off-by: Alan Jowett <alanjo@microsoft.com>

Signed-off-by: Alan Jowett <alanjo@microsoft.com>
2022-12-19 20:51:07 -07:00
Alan Jowett 0b293ad804
Fix code analysis annotations for In and In_opt parameters by adding const where appropriate or changing to Inout where appropriate. (#1749)
* Fix code analysis annotations for _In_ and _In_opt_ parameters,
add const where appropriate or change to _Inout_ where appropriate.

The following regex expressions were used to find the problems:
Find _In_ or _In_opt_ that are not const and are not followed by _Post_invalid_ or _Frees_ptr_ or _Post_ptr_invalid_:
```_In_[ ]+(?!.*(const|_Post_invalid_|_Frees_ptr_|_Post_ptr_invalid_))```
```_In_opt_[ ]+(?!.*(const|_Post_invalid_|_Frees_ptr_|_Post_ptr_invalid_))```

Some of the _In_ and _In_opt_ parameters are not const due to required compatibility with the Windows API.
Pointers to functions are const by definition, so the const qualifier is not required.

Signed-off-by: Alan Jowett <alanjo@microsoft.com>

* PR feedback

Signed-off-by: Alan Jowett <alanjo@microsoft.com>

* Fix code analysis failure

Signed-off-by: Alan Jowett <alanjo@microsoft.com>

* PR feedback

Signed-off-by: Alan Jowett <alanjo@microsoft.com>

* PR feedback

Signed-off-by: Alan Jowett <alanjo@microsoft.com>

* PR feedback

Signed-off-by: Alan Jowett <alanjo@microsoft.com>

Signed-off-by: Alan Jowett <alanjo@microsoft.com>
2022-12-15 15:58:33 -08:00
Gianni Trevisiol 99b7ece81f
Visual Studio 2022 porting (#1521)
* Draft

* wip - full build

* wip

* Docs & scripts update

* revert test

* Updates to overall GettingStarted.md guide.

* Updated CI/CD scripts

* Update ebpf-verifier cache key

* Fix #1513. Next action forwarded to #1563.

* Bump up epbfverifier to 05bca47

* Fix CRT path.

* Disable sanitizing

* fix cmake build

* Removed unsupported x86 and ARM configurations.

* Test address sanitizer off

* wip -full build w/asan

* asan enabled on ci/cd

* update wdk version to 22621

* wip - full build

* add mock asan

* Update CL param

* wip - proj sync

* wip - ltcg

* wip - driver settings

* wip-build props

* wip - asan opts

* wip-plat asan

* wip-asan

* wip

* wip

* wip-debug

* Branch resync

* Mitigate compiler OOM.

* remove asan mock

* doc update

* doc update

* Removed commented code.

* Added comments for pragma-s
2022-12-08 20:06:57 -07:00
Anurag Saxena ed291b80c9
Return module handle on native module load (#1547)
* kernel and platform changes

* fix

* user mode changes, other fixes

* fix test failure

* change function name

* add tests

* fix failing test

* cr comments

* CR comments

* fix cmake build

* fix

* Apply suggestions from code review

Co-authored-by: Dave Thaler <dthaler@microsoft.com>

* fix assert

* cr comments

* fix analysis failure

* fix test to avoid double close of fd

* test case fixes

* test fix

* fix unit test, analysis failure

* fix tests

* fix memory leak, possible race condition

Co-authored-by: Dave Thaler <dthaler@microsoft.com>
Co-authored-by: Alan Jowett <alanjo@microsoft.com>
2022-11-29 23:36:58 +00:00
Alan Jowett 58cdfdcf8a
Spelling (#1601)
* Fix spelling in docs

Signed-off-by: Alan Jowett <alanjo@microsoft.com>

* Fix spelling in ebpfsvc

Signed-off-by: Alan Jowett <alanjo@microsoft.com>

* Fix include

Signed-off-by: Alan Jowett <alanjo@microsoft.com>

* Fix libs part 1

Signed-off-by: Alan Jowett <alanjo@microsoft.com>

* Fix libs part 2

Signed-off-by: Alan Jowett <alanjo@microsoft.com>

* Fix tests

Signed-off-by: Alan Jowett <alanjo@microsoft.com>

* Fix tools

Signed-off-by: Alan Jowett <alanjo@microsoft.com>

* Fix build

Signed-off-by: Alan Jowett <alanjo@microsoft.com>

* PR feedback

Signed-off-by: Alan Jowett <alanjo@microsoft.com>

* Fix generated files

Signed-off-by: Alan Jowett <alanjo@microsoft.com>

* PR feedback

Signed-off-by: Alan Jowett <alanjo@microsoft.com>

Signed-off-by: Alan Jowett <alanjo@microsoft.com>
Co-authored-by: Anurag Saxena <43585259+saxena-anurag@users.noreply.github.com>
2022-11-16 14:06:14 -07:00
Alan Jowett 850f6d27f6
Annotate execution context API's with _Must_inspect_result_ (#1568)
* Annotate execution context API's with _Must_inspect_result_

Signed-off-by: Alan Jowett <alan.jowett@microsoft.com>

* PR feedback

Signed-off-by: Alan Jowett <alanjo@microsoft.com>

* Fix rebase

Signed-off-by: Alan Jowett <alanjo@microsoft.com>

* Code analysis failure

Signed-off-by: Alan Jowett <alanjo@microsoft.com>

Signed-off-by: Alan Jowett <alan.jowett@microsoft.com>
Signed-off-by: Alan Jowett <alanjo@microsoft.com>
Co-authored-by: Alan Jowett <alan.jowett@microsoft.com>
Co-authored-by: Dave Thaler <dthaler@microsoft.com>
2022-11-14 09:40:21 -08:00
Alan Jowett e7302835b1
Annotate platform API's with _Must_inspect_result_ (#1564)
* Annotate platform API's with _Must_inspect_result_

Signed-off-by: Alan Jowett <alan.jowett@microsoft.com>

* PR feedback

Signed-off-by: Alan Jowett <alanjo@microsoft.com>

* PR feedback

Signed-off-by: Alan Jowett <alanjo@microsoft.com>

* Fix code analysis failure

Signed-off-by: Alan Jowett <alanjo@microsoft.com>

* Fix up rebase

Signed-off-by: Alan Jowett <alanjo@microsoft.com>

* Fix rebase failure

Signed-off-by: Alan Jowett <alanjo@microsoft.com>

Signed-off-by: Alan Jowett <alan.jowett@microsoft.com>
Signed-off-by: Alan Jowett <alanjo@microsoft.com>
Co-authored-by: Alan Jowett <alan.jowett@microsoft.com>
Co-authored-by: Dave Thaler <dthaler@microsoft.com>
2022-11-11 06:44:20 +00:00
Dave Thaler bdd4df8c58
Fuzz test netebpfext helper(s) (#1467)
* Use netebpfext_user in fuzz testing

Address the helper function part of #1325

Signed-off-by: Dave Thaler <dthaler@microsoft.com>

* Fix winsock inclusion issues

Signed-off-by: Dave Thaler <dthaler@microsoft.com>

* Fix nmr implementation

Signed-off-by: Dave Thaler <dthaler@microsoft.com>

* Update WDK path for more projects

Signed-off-by: Dave Thaler <dthaler@microsoft.com>

* Disable ubpf warnings

Signed-off-by: Dave Thaler <dthaler@microsoft.com>

* Cleanup

Signed-off-by: Dave Thaler <dthaler@microsoft.com>

* Fix unit tests

Signed-off-by: Dave Thaler <dthaler@microsoft.com>

* Make build install execution context fuzzer corpus

Filed #1505 to improve this

Signed-off-by: Dave Thaler <dthaler@microsoft.com>

* Fix libfuzz harness

Signed-off-by: Dave Thaler <dthaler@microsoft.com>

* Fix MBL use by core helper fuzzer

Signed-off-by: Dave Thaler <dthaler@microsoft.com>

* Fix cmake build

Signed-off-by: Dave Thaler <dthaler@microsoft.com>

* Fix user-mode NMR locking issue

Signed-off-by: Dave Thaler <dthaler@microsoft.com>

* Extra debug statements

Signed-off-by: Dave Thaler <dthaler@microsoft.com>

* More fixes

Signed-off-by: Dave Thaler <dthaler@microsoft.com>

* Cleanup

Signed-off-by: Dave Thaler <dthaler@microsoft.com>

* Fix bad merge

Signed-off-by: Dave Thaler <dthaler@microsoft.com>

Signed-off-by: Dave Thaler <dthaler@microsoft.com>
Co-authored-by: saxena-anurag <43585259+saxena-anurag@users.noreply.github.com>
2022-11-08 09:31:04 +00:00
saxena-anurag 1160f7914e
Registry changes for program and section data. (#1192)
* fix

* backup

* fix backup

* msbuild compiling

* fix release build

* fixes

* cmake build fix

* fix cmake build

* fix analyse build

* fix

Signed-off-by: Anurag Saxena <43585259+saxena-anurag@users.noreply.github.com>

* fix expected output

* add pre step for tests

* add pre step for tests

* add -s option, revert this later

* Revert "add -s option, revert this later"

This reverts commit 1f42d100e4.

* code cleanup

Signed-off-by: Anurag Saxena <anusa@microsoft.com>

* rename driver_registry_helper.h

* delete bpf_structs.h

* fix

* hardcode HKLM

* code cleanup

* fix

* backup

* fix backup

* msbuild compiling

* fix release build

* fixes

* cmake build fix

* fix cmake build

* fix analyse build

* fix

Signed-off-by: Anurag Saxena <43585259+saxena-anurag@users.noreply.github.com>

* add pre step for tests

* add pre step for tests

* add -s option, revert this later

* Revert "add -s option, revert this later"

This reverts commit 1f42d100e4.

* code cleanup

Signed-off-by: Anurag Saxena <anusa@microsoft.com>

* rename driver_registry_helper.h

* delete bpf_structs.h

* fix

* hardcode HKLM

* code cleanup

* fix build break

* fix build break, enable warning

* fix bad merge

* cleanup

* fix

* fix tests

* add tests, make ebpf_store_helper platform agnostic

* fixes, cleanup, common code for store APIs

* fix cmake build, driver tests

* cleanup

* code cleanup

* cr comments

* code cleanup

* cleanup

* bugfix

* Apply suggestions from code review

Co-authored-by: Dave Thaler <dthaler@microsoft.com>

* cr comments

* fix build break

* move UM read store APIs to a different file

* cr comments

* cr comments

* cr comments

Co-authored-by: Dave Thaler <dthaler@microsoft.com>
2022-06-30 16:53:03 -07:00
Alan Jowett 1782724071
Build ELF parse at compile time using EverParse (#1219)
* Build ELF parse at compile time using EverParse

Signed-off-by: Alan Jowett <alan.jowett@microsoft.com>

* PR feedback

Signed-off-by: Alan Jowett <alan.jowett@microsoft.com>

* Fix build

Signed-off-by: Alan Jowett <alan.jowett@microsoft.com>

Co-authored-by: Alan Jowett <alan.jowett@microsoft.com>
2022-06-22 16:24:02 -06:00
saxena-anurag 96226a7db9
Change default program type to EBPF_PROGRAM_TYPE_UNSPECIFIED (#1173)
* fixes

* update cmakelists

* fix bpf2c tests

* fix cilium tests

* add tests

* update bpf2c issue number

* Apply suggestions from code review

Co-authored-by: Dave Thaler <dthaler@microsoft.com>

* fix

* fix

* fix

* cr comments

* fix build break

Co-authored-by: Dave Thaler <dthaler@microsoft.com>
Co-authored-by: Alan Jowett <alanjo@microsoft.com>
2022-06-15 09:59:39 -06:00
Dave Thaler 670fd7df48
Enable verifier fuzzer in github CI/CD (#1163)
* Enable verifier fuzzer in github CI/CD

This is another piece split out from PR #1153

Signed-off-by: Dave Thaler <dthaler@microsoft.com>

* Add -artifact_prefix=Artifacts\

Signed-off-by: Dave Thaler <dthaler@microsoft.com>

Co-authored-by: Alan Jowett <alanjo@microsoft.com>
2022-06-14 12:11:40 -06:00
Dave Thaler 8bc456bbec
Add fuzzer for core helper functions (#1153)
* WIP: core helper fuzzer scaffolding

Signed-off-by: Dave Thaler <dthaler@microsoft.com>

Initial chunk of business logic

Signed-off-by: Dave Thaler <dthaler@microsoft.com>

More business logic

Signed-off-by: Dave Thaler <dthaler@microsoft.com>

Add initial helper fuzzer corpus

Signed-off-by: Dave Thaler <dthaler@microsoft.com>

Fix code analysis warning

Signed-off-by: Dave Thaler <dthaler@microsoft.com>

Update docs and CI/CD

Signed-off-by: Dave Thaler <dthaler@microsoft.com>

Update README.md

Signed-off-by: Dave Thaler <dthaler@microsoft.com>

Fix analysis warning

Signed-off-by: Dave Thaler <dthaler@microsoft.com>

Add verifier_fuzzer step to github CI/CD

Signed-off-by: Dave Thaler <dthaler@microsoft.com>

Add core helper and bpf2c fuzzers to CI/CD

Signed-off-by: Dave Thaler <dthaler@microsoft.com>

Fix fuzzers in CI/CD

Signed-off-by: Dave Thaler <dthaler@microsoft.com>

Remove changes for other fuzzers from cicd file

Signed-off-by: Dave Thaler <dthaler@microsoft.com>

Cleanup

Signed-off-by: Dave Thaler <dthaler@microsoft.com>

* Fix bug in _find_lpm_map_entry() hit by fuzzer

Signed-off-by: Dave Thaler <dthaler@microsoft.com>
2022-06-10 16:32:31 -06:00
Dave Thaler e11f1d38a2
Add bpf2c fuzzer and execution context fuzzer to CI/CD (#1164)
* Enable bpf2c fuzzer and execution context fuzzer in CI/CD

Signed-off-by: Dave Thaler <dthaler@microsoft.com>

* Create bpf2c fuzzer corpus

Signed-off-by: Dave Thaler <dthaler@microsoft.com>

* Make absolute path and strip trailing slash from it. (#1175)

Signed-off-by: Alan Jowett <alan.jowett@microsoft.com>

Co-authored-by: Alan Jowett <alan.jowett@microsoft.com>

* Add libsancov.lib when building fuzzer (#1179)

* Add libsancov.lib when building fuzzer

Signed-off-by: Alan Jowett <alan.jowett@microsoft.com>

* upload artifacts as dumps

Signed-off-by: Alan Jowett <alan.jowett@microsoft.com>

Co-authored-by: Alan Jowett <alan.jowett@microsoft.com>

* Bpf2c fuzzer fix build (#1180)

* Disable caching of verifier cmake project for now

Signed-off-by: Alan Jowett <alan.jowett@microsoft.com>

* Fix dump upload path

Signed-off-by: Alan Jowett <alan.jowett@microsoft.com>

* Fix dump upload path

Signed-off-by: Alan Jowett <alan.jowett@microsoft.com>

* Fix crash dump upload

Signed-off-by: Alan Jowett <alan.jowett@microsoft.com>

* Add Execution Context corpus

Signed-off-by: Alan Jowett <alan.jowett@microsoft.com>

* Limit fuzzing to 15 minutes

Signed-off-by: Alan Jowett <alan.jowett@microsoft.com>

* Fix artifact path

Signed-off-by: Alan Jowett <alan.jowett@microsoft.com>

* Fix yaml to corectly upload artifacts

Signed-off-by: Alan Jowett <alan.jowett@microsoft.com>

* Fix yaml to corectly upload artifacts

Signed-off-by: Alan Jowett <alan.jowett@microsoft.com>

* Fix yaml to corectly upload artifacts

Signed-off-by: Alan Jowett <alan.jowett@microsoft.com>

Co-authored-by: Alan Jowett <alan.jowett@microsoft.com>

* Bpf2c fuzzer fix build (#1182)

* Disable caching of verifier cmake project for now

Signed-off-by: Alan Jowett <alan.jowett@microsoft.com>

* Limit fuzzing memory

Signed-off-by: Alan Jowett <alan.jowett@microsoft.com>

* Validate symbols offset

Signed-off-by: Alan Jowett <alan.jowett@microsoft.com>

Co-authored-by: Alan Jowett <alan.jowett@microsoft.com>

* Reject maps that have no associated symbols

Signed-off-by: Alan Jowett <alan.jowett@microsoft.com>

Co-authored-by: Alan Jowett <alanjo@microsoft.com>
Co-authored-by: Alan Jowett <alan.jowett@microsoft.com>
2022-06-09 10:24:28 -07:00
Dave Thaler eae988a17c
Part 1 of fuzzer additions (#1159)
* WIP: core helper fuzzer scaffolding

Signed-off-by: Dave Thaler <dthaler@microsoft.com>

* Initial chunk of business logic

Signed-off-by: Dave Thaler <dthaler@microsoft.com>

* More business logic

Signed-off-by: Dave Thaler <dthaler@microsoft.com>

* Add initial helper fuzzer corpus

Signed-off-by: Dave Thaler <dthaler@microsoft.com>

* Fix code analysis warning

Signed-off-by: Dave Thaler <dthaler@microsoft.com>

* Update docs and CI/CD

Signed-off-by: Dave Thaler <dthaler@microsoft.com>

* Update README.md

Signed-off-by: Dave Thaler <dthaler@microsoft.com>

* Fix analysis warning

Signed-off-by: Dave Thaler <dthaler@microsoft.com>

* Add verifier_fuzzer step to github CI/CD

Signed-off-by: Dave Thaler <dthaler@microsoft.com>

* Add core helper and bpf2c fuzzers to CI/CD

Signed-off-by: Dave Thaler <dthaler@microsoft.com>

* Fix fuzzers in CI/CD

Signed-off-by: Dave Thaler <dthaler@microsoft.com>

* Temporarily revert cicd.yml changes

To see if tests pass or not

Signed-off-by: Dave Thaler <dthaler@microsoft.com>

* Temporarily revert more files

Signed-off-by: Dave Thaler <dthaler@microsoft.com>
2022-06-02 06:19:10 -07:00
Alan Jowett c62b083ebc
Add libfuzzer based fuzzer. (#1117)
* Add libfuzzer based fuzzer.

See: https://www.llvm.org/docs/LibFuzzer.html

Signed-off-by: Alan Jowett <alan.jowett@microsoft.com>

* Fix ELF parsing bugs found by fuzzer

Signed-off-by: Dave Thaler <dthaler@microsoft.com>

* Make verifier fuzzer compile in Debug configuration

Signed-off-by: Dave Thaler <dthaler@microsoft.com>

* Cleanup fuzzer code

Signed-off-by: Alan Jowett <alan.jowett@microsoft.com>

* PR feedback

Signed-off-by: Alan Jowett <alan.jowett@microsoft.com>

* Setup/cleanup state for fuzzing

Signed-off-by: Alan Jowett <alan.jowett@microsoft.com>

* Fix debug build of execution_context_fuzzer

Signed-off-by: Alan Jowett <alan.jowett@microsoft.com>

* Fix verifier

Signed-off-by: Dave Thaler <dthaler@microsoft.com>

* Pickup latest ebpf-verifier

Signed-off-by: Alan Jowett <alan.jowett@microsoft.com>

* Remove corpus from git

Signed-off-by: Alan Jowett <alan.jowett@microsoft.com>

* Fix CR/LF mangling in ELF files

Signed-off-by: Alan Jowett <alan.jowett@microsoft.com>

* PR feedback

Signed-off-by: Alan Jowett <alan.jowett@microsoft.com>

* Remove corpus from git

Signed-off-by: Alan Jowett <alan.jowett@microsoft.com>

* Fix build break

Signed-off-by: Alan Jowett <alan.jowett@microsoft.com>

* Enable debug fuzzer build

Signed-off-by: Alan Jowett <alan.jowett@microsoft.com>

* Update to latest verifier

Signed-off-by: Dave Thaler <dthaler@microsoft.com>

* Update test based on latest verifier changes

Signed-off-by: Dave Thaler <dthaler@microsoft.com>

* Fix execution context fuzzer

Signed-off-by: Dave Thaler <dthaler@microsoft.com>

Co-authored-by: Alan Jowett <alan.jowett@microsoft.com>
Co-authored-by: Dave Thaler <dthaler@microsoft.com>
Co-authored-by: saxena-anurag <43585259+saxena-anurag@users.noreply.github.com>
2022-05-27 16:31:04 -07:00