From a2919f5b2e74d90acb7c7a71410a187388e256f9 Mon Sep 17 00:00:00 2001 From: Carter Li Date: Fri, 24 Jan 2025 09:36:53 +0800 Subject: [PATCH] OS (Linux): acquire more os info from lsb-release if missing from os-release Fix #1521 --- src/detection/os/os_linux.c | 23 +++++++---------------- 1 file changed, 7 insertions(+), 16 deletions(-) diff --git a/src/detection/os/os_linux.c b/src/detection/os/os_linux.c index 7774847ca..7bf92e22c 100644 --- a/src/detection/os/os_linux.c +++ b/src/detection/os/os_linux.c @@ -11,14 +11,6 @@ #define FF_STR_INDIR(x) #x #define FF_STR(x) FF_STR_INDIR(x) -static inline bool allRelevantValuesSet(const FFOSResult* result) -{ - return result->id.length > 0 - && result->name.length > 0 - && result->prettyName.length > 0 - ; -} - static bool parseLsbRelease(const char* fileName, FFOSResult* result) { return ffParsePropFileValues(fileName, 4, (FFpropquery[]) { @@ -275,18 +267,17 @@ static void detectOS(FFOSResult* os) if(os->prettyName.length == 0) ffStrbufAppendS(&os->prettyName, "Bedrock Linux"); - if(parseOsRelease("/bedrock" FASTFETCH_TARGET_DIR_ETC "/os-release", os) && allRelevantValuesSet(os)) - return; + parseOsRelease("/bedrock" FASTFETCH_TARGET_DIR_ETC "/os-release", os); + return; } // Refer: https://gist.github.com/natefoo/814c5bf936922dad97ff - if((parseOsRelease(FASTFETCH_TARGET_DIR_ETC "/os-release", os) || - parseLsbRelease(FASTFETCH_TARGET_DIR_ETC "/lsb-release", os)) && - allRelevantValuesSet(os)) - return; - - parseOsRelease(FASTFETCH_TARGET_DIR_USR "/lib/os-release", os); + parseOsRelease(FASTFETCH_TARGET_DIR_ETC "/os-release", os); + if (os->id.length == 0 || os->version.length == 0 || os->prettyName.length == 0 || os->codename.length == 0) + parseLsbRelease(FASTFETCH_TARGET_DIR_ETC "/lsb-release", os); + if (os->id.length == 0 || os->name.length > 0 || os->prettyName.length > 0) + parseOsRelease(FASTFETCH_TARGET_DIR_USR "/lib/os-release", os); } void ffDetectOSImpl(FFOSResult* os)