mirror of
https://github.com/Telecominfraproject/wlan-ap.git
synced 2025-10-29 01:22:25 +00:00
16cf91b3d232720f78c5e783d7764320ba90aff8
Because _md[32] is defined as "char" instead of "unsigned char" in uc_md5() and sprintf() is used instead of snprintf(), the resulting string can be malformed (padded with FF for negative values) and can overflow the target buffer, producing strings like: 21FFFF0D12FFFF6A48651050FFFF4CFFFFFFBA FFFFFF16FF3EFF7C6560FFFF6BFFFFFFFFFFE7 The same issue affects the hex_to_str() helper function which uc_md5() does not use. This commit addresses these issues by: - refactoring hex_to_str(): - accept a const void * input buffer internally cast to uchar - use snprintf() and the correct format length modifier 'hh' - use hex_to_str() in uc_md5() - adjust uses in other callers to pass sizeof(inbuf)/2 instead of a hardcoded number str_to_hex() is also refactored with the same guidelines to simplify the code and minimally address sscanf() failures by ending conversion. While there, document these two helpers. Signed-off-by: Thibaut VARÈNE <hacks@slashdirt.org>
OpenWiFi AP NOS
OpenWrt-based access point network operating system (AP NOS) for TIP OpenWiFi. Read more at openwifi.tip.build.
Building
Setting up your build machine
Building requires a recent Linux installation. Older systems without Python 3.7 will have trouble. See this guide for details: https://openwrt.org/docs/guide-developer/toolchain/beginners-build-guide
Install build packages on Debian/Ubuntu (or see above guide for other systems):
sudo apt install build-essential libncurses5-dev gawk git libssl-dev gettext zlib1g-dev swig unzip time rsync python3 python3-setuptools python3-yaml
Doing a native build on Linux
Use ./build.sh <target>, or follow the manual steps below:
- Clone and set up the tree. This will create an
openwrt/directory.
./setup.py --setup # for subsequent builds, use --rebase instead
- Select the profile and base package selection. This setup will install the
feeds and packages and generate the
.configfile.
cd openwrt
./scripts/gen_config.py linksys_ea8300
- Build the tree (replace
-j 8with the number of cores to use).
make -j 8 V=s
Build output
The build results are located in the openwrt/bin/ directory:
| Type | Path |
|---|---|
| Firmware images | openwrt/bin/targets/<target>/<subtarget>/ |
| Kernel modules | openwrt/bin/targets/<target>/<subtarget>/packages/ |
| Package binaries | openwrt/bin/packages/<platform>/<feed>/ |
Developer Notes
Branching model
main- Stable dev branchnext- Integration branchstaging-*- Feature/bug branchesrelease/v#.#.#- Release branches (major.minor.patch)
Repository structure
Build files:
Makefile- Calls Docker environment per targetdock-run.sh- Dockerized build environmentdocker/Dockerfile- Dockerfile for build imagebuild.sh- Build scriptsetup.py- Clone and set up the treeconfig.yml- Specifies OpenWrt version and patches to apply
Directories:
feeds/- OpenWiFi feedspatches/- OpenWiFi patches applied during buildsprofiles/- Per-target kernel configs, packages, and feeds- wifi-ax: Wi-Fi AX packages
- ucentral-ap: uCentral packages
- x64_vm: x86-64 VM image
uCentral packages
AP-NOS packages implementing the uCentral protocol include the following repositories (refer to the ucentral feed for a full list):
- ucentral-client: https://github.com/Telecominfraproject/wlan-ucentral-client
- ucentral-schema: https://github.com/Telecominfraproject/wlan-ucentral-schema
- ucentral-wifi: https://github.com/blogic/ucentral-wifi
Description
Languages
C
85.9%
Shell
5.6%
Makefile
3.3%
Roff
1.8%
UnrealScript
1.6%
Other
1.6%