Merge pull request #4004 from orestisfl/i3bar-segfault
Fix SEGFAULT when i3bar receives invalid input
This commit is contained in:
commit
e2b2a28625
|
@ -196,6 +196,11 @@ static int stdin_map_key(void *context, const unsigned char *key, size_t len) {
|
|||
|
||||
static int stdin_boolean(void *context, int val) {
|
||||
parser_ctx *ctx = context;
|
||||
|
||||
if (!ctx->last_map_key) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (strcasecmp(ctx->last_map_key, "urgent") == 0) {
|
||||
ctx->block.urgent = val;
|
||||
return 1;
|
||||
|
@ -210,6 +215,11 @@ static int stdin_boolean(void *context, int val) {
|
|||
|
||||
static int stdin_string(void *context, const unsigned char *val, size_t len) {
|
||||
parser_ctx *ctx = context;
|
||||
|
||||
if (!ctx->last_map_key) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (strcasecmp(ctx->last_map_key, "full_text") == 0) {
|
||||
ctx->block.full_text = i3string_from_markup_with_length((const char *)val, len);
|
||||
return 1;
|
||||
|
@ -262,6 +272,11 @@ static int stdin_string(void *context, const unsigned char *val, size_t len) {
|
|||
|
||||
static int stdin_integer(void *context, long long val) {
|
||||
parser_ctx *ctx = context;
|
||||
|
||||
if (!ctx->last_map_key) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (strcasecmp(ctx->last_map_key, "min_width") == 0) {
|
||||
ctx->block.min_width = (uint32_t)val;
|
||||
return 1;
|
||||
|
|
Loading…
Reference in New Issue