README.md
Rendering markdown...
#!/usr/bin/env bash
# Likely only works on Linux due to GNU Find, probably needs to be ported for BSD utils
OPTIONAL_FIND_ARGS=-xdev # Remove if you don't have slow remote mounts etc.
# Start with liblzma
LIBS=liblzma.so.5
LIB_DIRS="/usr/lib /lib"
BIN_DIRS="/usr/bin /bin /usr/local/bin"
RED='\033[0;31m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
test_lib() {
local lib_path
lib_path="$1"
deps=$(ldd "$lib_path" 2>/dev/null)
for lib in $LIBS; do
if [[ "$deps" == *"${lib}"* ]]; then
echo -e "${YELLOW}${lib_path}${NC} depends on potentially problematic ${YELLOW}${lib}${NC}"
LIBS="$LIBS $lib_path"
return
fi
done
}
find_affected_libs() {
for lib_dir in $LIB_DIRS; do
find "${lib_dir}" $OPTIONAL_FIND_ARGS -type f -name "*.so*" | while read -r file; do test_lib "$file"; done;
done
}
test_binary() {
local bin_path
bin_path="$1"
deps=$(ldd "$bin_path" 2>/dev/null)
for lib in $LIBS; do
if [[ "$deps" == *"${lib}"* ]]; then
echo -e "${RED}${bin_path}${NC} depends on potentially problematic ${YELLOW}${lib}${NC}"
return
fi
done
}
find_affected_binaries() {
for bin_dir in $BIN_DIRS; do
find "${bin_dir}" $OPTIONAL_FIND_ARGS -type f -executable | while read -r file; do test_binary "$file"; done;
done
}
#find_affected_libs
find_affected_binaries