Make jq_get_lib_dirs return an empty array if JQ_LIBRARY_PATH is not set

For the jq_state used by the jq utility, the JQ_LIBRARY_PATH attribute
will always be set, but, in general, it is possible that it might not
be.

If it is not set, jq_get_lib_dirs() will return jv_invalid().

That is not good, because some code in linker.c expects it to always
returns an array.

This patch makes jq_get_lib_dirs() return an empty array if
JQ_LIBRARY_PATH is not set to prevent problems.

This issue made OSS fuzz trigger failed assertions every time it tried
to compile a script that uses "include".

Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=61796
1 file changed
tree: 216b3383531d896ef7fd4903150ebbd838382352
  1. .github/
  2. build/
  3. config/
  4. docs/
  5. m4/
  6. modules/
  7. scripts/
  8. sig/
  9. src/
  10. tests/
  11. .gitattributes
  12. .gitignore
  13. .gitmodules
  14. AUTHORS
  15. ChangeLog
  16. compile-ios.sh
  17. configure.ac
  18. COPYING
  19. Dockerfile
  20. jq.1.prebuilt
  21. jq.spec
  22. KEYS
  23. libjq.pc.in
  24. Makefile.am
  25. NEWS.md
  26. README.md
  27. SECURITY.md
README.md

jq

jq is a lightweight and flexible command-line JSON processor akin tosed,awk,grep, and friends for JSON data. It's written in portable C and has zero runtime dependencies, allowing you to easily slice, filter, map, and transform structured data.

Documentation

Installation

Prebuilt Binaries

Download the latest releases from the GitHub release page.

Docker Image

Pull the jq image to start quickly with Docker.

Building from source

Dependencies

  • libtool
  • make
  • automake
  • autoconf

Instructions

git submodule update --init # if building from git to get oniguruma
autoreconf -i               # if building from git
./configure --with-oniguruma=builtin
make -j8
make check
sudo make install

Build a statically linked version:

make LDFLAGS=-all-static

If you‘re not using the latest git version but instead building a released tarball (available on the release page), skip the autoreconf step, and flex or bison won’t be needed.

Cross-Compilation

For details on cross-compliation, check out the GitHub Actions file and the cross-compliation wiki page.

Community & Support

License

jq is released under the MIT License.