mirror of
https://codeberg.org/dnkl/yambar.git
synced 2025-04-24 04:45:41 +02:00
particle/ramp: clamp min/max/value
Make sure that: * min <= max * min <= value <= max Fixes a crash when the tag’s value was out-of-bounds. Closes #45
This commit is contained in:
parent
db7a4af80a
commit
f9dad99db8
2 changed files with 26 additions and 1 deletions
|
@ -12,7 +12,7 @@
|
|||
### Changed
|
||||
|
||||
* doc: split up **yambar-modules**(5) into multiple man pages, one for
|
||||
each module (https://codeberg.org/dnkl/yambar/issues/15).
|
||||
each module (https://codeberg.org/dnkl/yambar/issues/15).
|
||||
|
||||
### Deprecated
|
||||
### Removed
|
||||
|
@ -20,6 +20,8 @@
|
|||
|
||||
* Crash when merging non-dictionary anchors in the YAML configuration
|
||||
(https://codeberg.org/dnkl/yambar/issues/32).
|
||||
* Crash in the `ramp` particle when the tag’s value was out-of-bounds
|
||||
(https://codeberg.org/dnkl/yambar/issues/45).
|
||||
|
||||
|
||||
### Security
|
||||
|
|
|
@ -4,6 +4,9 @@
|
|||
|
||||
#include <stdio.h>
|
||||
|
||||
#define LOG_MODULE "ramp"
|
||||
#define LOG_ENABLE_DBG 0
|
||||
#include "../log.h"
|
||||
#include "../config.h"
|
||||
#include "../config-verify.h"
|
||||
#include "../particle.h"
|
||||
|
@ -102,6 +105,26 @@ instantiate(const struct particle *particle, const struct tag_set *tags)
|
|||
long min = tag != NULL ? tag->min(tag) : 0;
|
||||
long max = tag != NULL ? tag->max(tag) : 0;
|
||||
|
||||
if (min > max) {
|
||||
LOG_WARN(
|
||||
"tag's minimum value is greater than its maximum: "
|
||||
"tag=\"%s\", min=%ld, max=%ld", p->tag, min, max);
|
||||
min = max;
|
||||
}
|
||||
|
||||
if (value < min) {
|
||||
LOG_WARN(
|
||||
"tag's value is less than its minimum value: "
|
||||
"tag=\"%s\", min=%ld, value=%ld", p->tag, min, value);
|
||||
value = min;
|
||||
}
|
||||
if (value > max) {
|
||||
LOG_WARN(
|
||||
"tag's value is greater than its maximum value: "
|
||||
"tag=\"%s\", max=%ld, value=%ld", p->tag, max, value);
|
||||
value = max;
|
||||
}
|
||||
|
||||
assert(value >= min && value <= max);
|
||||
assert(max >= min);
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue