Skip to content
This repository was archived by the owner on Feb 25, 2025. It is now read-only.

Commit f321613

Browse files
Add guards on FlValue methods to check for NULL values (#18226)
1 parent 8371b44 commit f321613

File tree

1 file changed

+22
-0
lines changed

1 file changed

+22
-0
lines changed

shell/platform/linux/fl_value.cc

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -205,11 +205,13 @@ G_MODULE_EXPORT FlValue* fl_value_new_map() {
205205
}
206206

207207
G_MODULE_EXPORT FlValue* fl_value_ref(FlValue* self) {
208+
g_return_val_if_fail(self != nullptr, nullptr);
208209
self->ref_count++;
209210
return self;
210211
}
211212

212213
G_MODULE_EXPORT void fl_value_unref(FlValue* self) {
214+
g_return_if_fail(self != nullptr);
213215
g_return_if_fail(self->ref_count > 0);
214216
self->ref_count--;
215217
if (self->ref_count != 0)
@@ -359,13 +361,15 @@ G_MODULE_EXPORT bool fl_value_equal(FlValue* a, FlValue* b) {
359361
}
360362

361363
G_MODULE_EXPORT void fl_value_append(FlValue* self, FlValue* value) {
364+
g_return_if_fail(self != nullptr);
362365
g_return_if_fail(self->type == FL_VALUE_TYPE_LIST);
363366
g_return_if_fail(value != nullptr);
364367

365368
fl_value_append_take(self, fl_value_ref(value));
366369
}
367370

368371
G_MODULE_EXPORT void fl_value_append_take(FlValue* self, FlValue* value) {
372+
g_return_if_fail(self != nullptr);
369373
g_return_if_fail(self->type == FL_VALUE_TYPE_LIST);
370374
g_return_if_fail(value != nullptr);
371375

@@ -374,6 +378,7 @@ G_MODULE_EXPORT void fl_value_append_take(FlValue* self, FlValue* value) {
374378
}
375379

376380
G_MODULE_EXPORT void fl_value_set(FlValue* self, FlValue* key, FlValue* value) {
381+
g_return_if_fail(self != nullptr);
377382
g_return_if_fail(self->type == FL_VALUE_TYPE_MAP);
378383
g_return_if_fail(key != nullptr);
379384
g_return_if_fail(value != nullptr);
@@ -384,6 +389,7 @@ G_MODULE_EXPORT void fl_value_set(FlValue* self, FlValue* key, FlValue* value) {
384389
G_MODULE_EXPORT void fl_value_set_take(FlValue* self,
385390
FlValue* key,
386391
FlValue* value) {
392+
g_return_if_fail(self != nullptr);
387393
g_return_if_fail(self->type == FL_VALUE_TYPE_MAP);
388394
g_return_if_fail(key != nullptr);
389395
g_return_if_fail(value != nullptr);
@@ -404,6 +410,7 @@ G_MODULE_EXPORT void fl_value_set_take(FlValue* self,
404410
G_MODULE_EXPORT void fl_value_set_string(FlValue* self,
405411
const gchar* key,
406412
FlValue* value) {
413+
g_return_if_fail(self != nullptr);
407414
g_return_if_fail(self->type == FL_VALUE_TYPE_MAP);
408415
g_return_if_fail(key != nullptr);
409416
g_return_if_fail(value != nullptr);
@@ -414,6 +421,7 @@ G_MODULE_EXPORT void fl_value_set_string(FlValue* self,
414421
G_MODULE_EXPORT void fl_value_set_string_take(FlValue* self,
415422
const gchar* key,
416423
FlValue* value) {
424+
g_return_if_fail(self != nullptr);
417425
g_return_if_fail(self->type == FL_VALUE_TYPE_MAP);
418426
g_return_if_fail(key != nullptr);
419427
g_return_if_fail(value != nullptr);
@@ -422,54 +430,63 @@ G_MODULE_EXPORT void fl_value_set_string_take(FlValue* self,
422430
}
423431

424432
G_MODULE_EXPORT bool fl_value_get_bool(FlValue* self) {
433+
g_return_val_if_fail(self != nullptr, FALSE);
425434
g_return_val_if_fail(self->type == FL_VALUE_TYPE_BOOL, FALSE);
426435
FlValueBool* v = reinterpret_cast<FlValueBool*>(self);
427436
return v->value;
428437
}
429438

430439
G_MODULE_EXPORT int64_t fl_value_get_int(FlValue* self) {
440+
g_return_val_if_fail(self != nullptr, 0);
431441
g_return_val_if_fail(self->type == FL_VALUE_TYPE_INT, 0);
432442
FlValueInt* v = reinterpret_cast<FlValueInt*>(self);
433443
return v->value;
434444
}
435445

436446
G_MODULE_EXPORT double fl_value_get_float(FlValue* self) {
447+
g_return_val_if_fail(self != nullptr, 0.0);
437448
g_return_val_if_fail(self->type == FL_VALUE_TYPE_FLOAT, 0.0);
438449
FlValueDouble* v = reinterpret_cast<FlValueDouble*>(self);
439450
return v->value;
440451
}
441452

442453
G_MODULE_EXPORT const gchar* fl_value_get_string(FlValue* self) {
454+
g_return_val_if_fail(self != nullptr, nullptr);
443455
g_return_val_if_fail(self->type == FL_VALUE_TYPE_STRING, nullptr);
444456
FlValueString* v = reinterpret_cast<FlValueString*>(self);
445457
return v->value;
446458
}
447459

448460
G_MODULE_EXPORT const uint8_t* fl_value_get_uint8_list(FlValue* self) {
461+
g_return_val_if_fail(self != nullptr, nullptr);
449462
g_return_val_if_fail(self->type == FL_VALUE_TYPE_UINT8_LIST, nullptr);
450463
FlValueUint8List* v = reinterpret_cast<FlValueUint8List*>(self);
451464
return v->values;
452465
}
453466

454467
G_MODULE_EXPORT const int32_t* fl_value_get_int32_list(FlValue* self) {
468+
g_return_val_if_fail(self != nullptr, nullptr);
455469
g_return_val_if_fail(self->type == FL_VALUE_TYPE_INT32_LIST, nullptr);
456470
FlValueInt32List* v = reinterpret_cast<FlValueInt32List*>(self);
457471
return v->values;
458472
}
459473

460474
G_MODULE_EXPORT const int64_t* fl_value_get_int64_list(FlValue* self) {
475+
g_return_val_if_fail(self != nullptr, nullptr);
461476
g_return_val_if_fail(self->type == FL_VALUE_TYPE_INT64_LIST, nullptr);
462477
FlValueInt64List* v = reinterpret_cast<FlValueInt64List*>(self);
463478
return v->values;
464479
}
465480

466481
G_MODULE_EXPORT const double* fl_value_get_float_list(FlValue* self) {
482+
g_return_val_if_fail(self != nullptr, nullptr);
467483
g_return_val_if_fail(self->type == FL_VALUE_TYPE_FLOAT_LIST, nullptr);
468484
FlValueFloatList* v = reinterpret_cast<FlValueFloatList*>(self);
469485
return v->values;
470486
}
471487

472488
G_MODULE_EXPORT size_t fl_value_get_length(FlValue* self) {
489+
g_return_val_if_fail(self != nullptr, 0);
473490
g_return_val_if_fail(self->type == FL_VALUE_TYPE_UINT8_LIST ||
474491
self->type == FL_VALUE_TYPE_INT32_LIST ||
475492
self->type == FL_VALUE_TYPE_INT64_LIST ||
@@ -515,27 +532,31 @@ G_MODULE_EXPORT size_t fl_value_get_length(FlValue* self) {
515532
}
516533

517534
G_MODULE_EXPORT FlValue* fl_value_get_list_value(FlValue* self, size_t index) {
535+
g_return_val_if_fail(self != nullptr, nullptr);
518536
g_return_val_if_fail(self->type == FL_VALUE_TYPE_LIST, nullptr);
519537

520538
FlValueList* v = reinterpret_cast<FlValueList*>(self);
521539
return static_cast<FlValue*>(g_ptr_array_index(v->values, index));
522540
}
523541

524542
G_MODULE_EXPORT FlValue* fl_value_get_map_key(FlValue* self, size_t index) {
543+
g_return_val_if_fail(self != nullptr, nullptr);
525544
g_return_val_if_fail(self->type == FL_VALUE_TYPE_MAP, nullptr);
526545

527546
FlValueMap* v = reinterpret_cast<FlValueMap*>(self);
528547
return static_cast<FlValue*>(g_ptr_array_index(v->keys, index));
529548
}
530549

531550
G_MODULE_EXPORT FlValue* fl_value_get_map_value(FlValue* self, size_t index) {
551+
g_return_val_if_fail(self != nullptr, nullptr);
532552
g_return_val_if_fail(self->type == FL_VALUE_TYPE_MAP, nullptr);
533553

534554
FlValueMap* v = reinterpret_cast<FlValueMap*>(self);
535555
return static_cast<FlValue*>(g_ptr_array_index(v->values, index));
536556
}
537557

538558
G_MODULE_EXPORT FlValue* fl_value_lookup(FlValue* self, FlValue* key) {
559+
g_return_val_if_fail(self != nullptr, nullptr);
539560
g_return_val_if_fail(self->type == FL_VALUE_TYPE_MAP, nullptr);
540561

541562
ssize_t index = fl_value_lookup_index(self, key);
@@ -545,6 +566,7 @@ G_MODULE_EXPORT FlValue* fl_value_lookup(FlValue* self, FlValue* key) {
545566
}
546567

547568
FlValue* fl_value_lookup_string(FlValue* self, const gchar* key) {
569+
g_return_val_if_fail(self != nullptr, nullptr);
548570
g_autoptr(FlValue) string_key = fl_value_new_string(key);
549571
return fl_value_lookup(self, string_key);
550572
}

0 commit comments

Comments
 (0)