The Featureless Linux Library stable version 0.6.12 is released.
This release provides some significant polishing, bug fixing, and corrections (or clarifications) to the project, the standards, and the specifications.
Much of this work is done to pave the way for forward compatibility with improvements and changes introduced in the 0.7 development branches.
I try to avoid making such changes in the specifications for stables releases but I feel these specific changes are merited.
This increases the correctness of the FSS processing code, specifically with the FSS read functions.
The previous behavior only cared whether or not the tests produce equivalent results in terms of reading and writing.
I back ported the 0.7 runtime tests and found that it would be better to have consistent and correct output in regards to white space.
Doing this also exposed several bugs and mistakes in the FSS processing code.
The FSS Embedded Read, in particular, was completely forgotten about by me.
The previous releases have been marked stable but I forgot to actually verify the proper functioning of the FSS Embedded Read program.
The back porting of the runtime tests exposed significant problems with the FSS Embedded Read program.
I had not implemented the `--columns` support for FSS Embedded Read in prior releases.
The `--columns` is now properly supported and has runtime tests.
The FSS Embedded Read to include the back ported fixes from the 0.7 development branch:
- The use of `f_memory_array_increase()` is incorrect in several cases.
- Switch to `f_memory_array_resize()`.
- Add two when resizing to account for the depth position but also an additional element as a minor memory allocation optimization.
- The `--select` now also follows the more strict behavior as implemented in the 0.7 branch.
- The `--total` to match the more strict behavior as implemented in the 0.7 branch.
The FSS Embedded Read has the following additional notable fixes thanks to the runtime tests:
- Security issue regarding incorrect memset value (passed `sizeof(skip)` when instead `sizeof(bool)` should be used).
- The `--line` parameter is not being correctly validated and throws an error when a value is specified.
- Fix a bug where empty Content is being improperly handled and '}' is being returned as the Content for empty Content.
- The `--select` is not always printing a number, so make sure a number, even if it is `0`, is always printed.
- The comments are not being properly processed because `graph_first` is not and should be being set to 0x1 at start, resulting in the first comment is not being treated as a comment.
- The entire Content is being displayed when `--object` is used with `--line` when instead only a single line must be printed.
- Column counts with empty data are not being correctly handled.
- Should not display any lines when Content is empty and Objects are not being printed.
- Delimits are not being applied when printing in line mode.
- Do not double-print the before spaces when both original and trim modes are in use.
- Print the before even with original and trim are in use when the Object has no size.
The FSS-0002 and FSS-0003 standards have some unclear situations regarding the white space before and after a valid Object that need clarification.
I discovered problems and realized that the standard could be more clear according to the spaces before and after the Object.
This does not change the FSS-0002 and FSS-0003 standards in any functional way.
The simply clarifies the standard regarding the spaces to make it more clear and reduce the chances for a mistake.
The original print is now better preserved.
Printing an Object can now print the before and after Object characters (usually white space).
The trimming and original print may be used together to produce the results where the is no white space before or after the Object but everything else from the original source is preserved.
This combination of trim and original essentially ensure that the old behavior can be still produced.
This does not utilize the `closes` structure as is done in the 0.7 development branches to ensure API does not get broken.
This is mostly simulated and more proper and precise support for this requires at least the 0.7 development branch.
I did some experimentation and found that I could get this project to build and run on an Android environment.
I generally do not want OS-specific build files in the core FLL project.
This should help build more support for the Android environment and help pave the way for future projects that may help those users unfortunate enough to find themselves in an Android environment.
This Android functionality is not well tested nor is it well supported.
The Android support has been tested to build using `bootstrap.sh` and then using `fake`.
Example execution of `byte_dump` of `bash` program (this is a large dump).
```
# byte_dump -wt 7 $(type -p bash)
```
The Featureless Make is intended to not be language specific since its inception.
I did not know how the languages were to work, so I mostly built this to guarantee C/C++ support.
I recently discovered that the `golang` supports some command line based compilation.
The `golang` is now supported in the most basic way, but this support is not well tested.
Use the `example_go` project as a point of reference.
I have only tested the basic build and I have not done anything advanced.
This relaxes some of the requirements in the build specification.
The `bash` is changed to `shell` to encourage more types of scripts.
The `custom` is added and used as a fallback if `build_language_path` is not used.
I found that there needs to be some additional settings in the `settings` specification.
This updates the specification and adds:
- `build_compiler_arguments`
- `build_compiler_arguments_library`
- `build_compiler_arguments_library_shared`
- `build_compiler_arguments_library_static`
- `build_compiler_arguments_object`
- `build_compiler_arguments_object_shared`
- `build_compiler_arguments_object_static`
- `build_compiler_arguments_program`
- `build_compiler_arguments_program_shared`
- `build_compiler_arguments_program_static`
- `build_compiler_arguments_shared`
- `build_compiler_arguments_static`
- `build_language_path`
Some discovered mistakes in the language of the specification are also fixed.
The following are changes since the 0.6.11 stable release.
Exploit Fixes:
- None.
Security Fixes:
- Incorrect memset value (passed `sizeof(skip)` when instead `sizeof(bool)` should be used).
Features:
- Fake settings specification updates and enable simple golang support.
- Add support for building under Android.
Bug Fixes:
- FSS Embedded List Read printing tabbing when using original mode and trim mode.
- Get the FSS Embedded List Read working as expected based on runtime tests.
- Replace `index()` with `strchr()`.
- FSS Embedded List Read is not applying delimits when printing in line mode.
- Empty Content lines with no Object printed should not be included for FSS Embedded List.
- Incorrect handling of column counts with empty data for FSS Embedded List Read.
- FSS Embedded Read is printing a single line with `--line` parameter with `--object`.
- Invalid comment handling in FSS Embedded Read.
- FSS Embedded Read has incomplete and incorrect code.
- FSS Extended Read needs to only print new line if Object or Content is printed.
- FSS Extended Read needs to properly handle `--total` when using `--select` and also `--empty`.
- FSS Basic Read needs to properly handle `--total` when using `--select` and also `--empty`.
Refactors:
- None.
Regressions:
- None.
Updates:
- The bootstrap example script now handles building using fake.
- Refresh firewall iptables rules and relax some of the defaults.
- Cgroup example controller script example to show running under a SystemD system.
- Improve robustness of the `fll_control_group_prepare()` function.
- Implement Object alignment and trim expanding in FSS Read programs and restructure the program flags.
- The FSS Lists (FSS-0002, FSS-0003, FSS-0008, etc..) to match recent specification changes and reduce redundancy.
- The FSS Basic List (FSS-0002) to match recent specification changes regading Objects.
- The FSS-0002 and FSS-0003 standards, modifying the space after Object rules.
- Clarify the FSS-0002 and FSS-0003 standards regarding the white space before and after a valid Object.
- Always count any `--select` when using `--object` for FSS Read programs.
- Improvements around FSS Read functions regarding correctness.
- Back port tests for the FSS Read programs with more recent changes.
-----BEGIN PGP SIGNATURE-----