Bluetooth Low Energy host stack in pure OCaml
0

Configure Feed

Select the types of activity you want to include in your feed.

wire: bump the pin to localize the raw EverParse validators

The new ocaml-wire main generates archive rules that localize each package's raw
<Name>Validate* symbols (macOS ld -r -exported_symbol; Linux ld -r plus objcopy
--keep-global-symbol, allowlisting the wrapper), so a C consumer linking the
installed archive reaches only the checked <Name>Check* wrapper. The raw
validators subtract StartPosition before proving it is within InputLength
(unsigned underflow) and are an external-linkage footgun; the wrapper always
passes zero. Bumps the pin in every .opam and .opam.template and regenerates each
package's c/dune.inc; the generated C is unchanged, the fix is entirely in the
archive rule. nm now shows Validate* local and Check* global, and the agree
differential tests still link.

+18 -3
+1 -1
bluetooth.opam
··· 42 42 dev-repo: "git+https://tangled.org/gazagnaire.org/ocaml-bluetooth" 43 43 x-maintenance-intent: ["(latest)"] 44 44 pin-depends: [ 45 - ["wire.1.1.0" "git+https://github.com/parsimoni-labs/ocaml-wire.git#d77c63a078a5ea24e17367a482fad4a1f9e8a85e"] 45 + ["wire.1.1.0" "git+https://github.com/parsimoni-labs/ocaml-wire.git#77116df90f258b8200aefe058c8bc0a6e392d879"] 46 46 ]
+1 -1
bluetooth.opam.template
··· 1 1 pin-depends: [ 2 - ["wire.1.1.0" "git+https://github.com/parsimoni-labs/ocaml-wire.git#d77c63a078a5ea24e17367a482fad4a1f9e8a85e"] 2 + ["wire.1.1.0" "git+https://github.com/parsimoni-labs/ocaml-wire.git#77116df90f258b8200aefe058c8bc0a6e392d879"] 3 3 ]
+16 -1
c/dune.inc
··· 22 22 23 23 (rule 24 24 (targets libad.a) 25 + (enabled_if (= %{ocaml-config:system} macosx)) 25 26 (deps EverParse.h EverParseEndianness.h Ad.c Ad.h AdWrapper.c AdWrapper.h) 26 27 (action 27 28 (progn 28 29 (run cc -std=c11 -D_DEFAULT_SOURCE -Wall -Werror -Wpedantic -Wstrict-prototypes -Wmissing-prototypes -Wshadow -Wcast-qual -DUINT8=uint8_t -DUINT16=uint16_t -DUINT16BE=uint16_t -DUINT32=uint32_t -DUINT32BE=uint32_t -DUINT64=uint64_t -DUINT64BE=uint64_t -c Ad.c AdWrapper.c) 29 - (run ar rcs libad.a Ad.o AdWrapper.o)))) 30 + (run ld -r -o Ad_lib.o Ad.o AdWrapper.o -exported_symbol _AdCheckAdStructure) 31 + (run ar rcs libad.a Ad_lib.o) 32 + ))) 33 + 34 + (rule 35 + (targets libad.a) 36 + (enabled_if (<> %{ocaml-config:system} macosx)) 37 + (deps EverParse.h EverParseEndianness.h Ad.c Ad.h AdWrapper.c AdWrapper.h) 38 + (action 39 + (progn 40 + (run cc -std=c11 -D_DEFAULT_SOURCE -Wall -Werror -Wpedantic -Wstrict-prototypes -Wmissing-prototypes -Wshadow -Wcast-qual -DUINT8=uint8_t -DUINT16=uint16_t -DUINT16BE=uint16_t -DUINT32=uint32_t -DUINT32BE=uint32_t -DUINT64=uint64_t -DUINT64BE=uint64_t -c Ad.c AdWrapper.c) 41 + (run ld -r -o Ad_lib.o Ad.o AdWrapper.o) 42 + (run objcopy --keep-global-symbol AdCheckAdStructure Ad_lib.o) 43 + (run ar rcs libad.a Ad_lib.o) 44 + ))) 30 45 31 46 (rule 32 47 (targets corpus)