diff --git a/src/detection/battery/battery_apple.c b/src/detection/battery/battery_apple.c index 979367662..8fa956c77 100644 --- a/src/detection/battery/battery_apple.c +++ b/src/detection/battery/battery_apple.c @@ -27,13 +27,23 @@ const char* ffDetectBatteryImpl(FFinstance* instance, FFlist* results) } bool boolValue; + const char* error; BatteryResult* battery = ffListAdd(results); ffStrbufInit(&battery->capacity); int currentCapacity, maxCapacity; - if(!ffCfDictGetInt(properties, CFSTR("CurrentCapacity"), ¤tCapacity) && - !ffCfDictGetInt(properties, CFSTR("MaxCapacity"), &maxCapacity)) - ffStrbufAppendF(&battery->capacity, "%.0f", currentCapacity * 100.0 / maxCapacity); + + if ((error = ffCfDictGetInt(properties, CFSTR("MaxCapacity"), &maxCapacity))) + return error; + if (maxCapacity <= 0) + return "Querying MaxCapacity failed"; + + if ((error = ffCfDictGetInt(properties, CFSTR("CurrentCapacity"), ¤tCapacity))) + return error; + if(currentCapacity <= 0) + return "Querying CurrentCapacity failed"; + + ffStrbufAppendF(&battery->capacity, "%.0f", currentCapacity * 100.0 / maxCapacity); ffStrbufInit(&battery->manufacturer); ffStrbufInit(&battery->modelName);