Skip to content

Commit 9320cce

Browse files
authored
Merge pull request #43 from camgunz/develop
Develop
2 parents d67df1b + 80426ab commit 9320cce

File tree

2 files changed

+448
-40
lines changed

2 files changed

+448
-40
lines changed

cmp.c

Lines changed: 46 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2657,7 +2657,7 @@ bool cmp_skip_object(cmp_ctx_t *ctx, cmp_object_t *obj) {
26572657
}
26582658

26592659
bool cmp_skip_object_limit(cmp_ctx_t *ctx, cmp_object_t *obj, uint32_t limit) {
2660-
uint64_t element_count = 1;
2660+
size_t element_count = 1;
26612661
uint32_t depth = 0;
26622662

26632663
while (element_count) {
@@ -2702,6 +2702,20 @@ bool cmp_skip_object_limit(cmp_ctx_t *ctx, cmp_object_t *obj, uint32_t limit) {
27022702
}
27032703

27042704
if (size) {
2705+
switch (cmp_type) {
2706+
case CMP_TYPE_FIXEXT1:
2707+
case CMP_TYPE_FIXEXT2:
2708+
case CMP_TYPE_FIXEXT4:
2709+
case CMP_TYPE_FIXEXT8:
2710+
case CMP_TYPE_FIXEXT16:
2711+
case CMP_TYPE_EXT8:
2712+
case CMP_TYPE_EXT16:
2713+
case CMP_TYPE_EXT32:
2714+
size++;
2715+
default:
2716+
break;
2717+
}
2718+
27052719
skip_bytes(ctx, size);
27062720
}
27072721
}
@@ -2723,7 +2737,7 @@ bool cmp_skip_object_limit(cmp_ctx_t *ctx, cmp_object_t *obj, uint32_t limit) {
27232737
if (!read_type_size(ctx, type_marker, cmp_type, &size)) {
27242738
return false;
27252739
}
2726-
element_count += ((uint64_t)size) * 2;
2740+
element_count += ((size_t)size) * 2;
27272741
break;
27282742
default:
27292743
break;
@@ -2734,7 +2748,7 @@ bool cmp_skip_object_limit(cmp_ctx_t *ctx, cmp_object_t *obj, uint32_t limit) {
27342748
}
27352749

27362750
bool cmp_skip_object_no_limit(cmp_ctx_t *ctx) {
2737-
uint64_t element_count = 1;
2751+
size_t element_count = 1;
27382752

27392753
while (element_count) {
27402754
uint8_t type_marker = 0;
@@ -2763,8 +2777,23 @@ bool cmp_skip_object_no_limit(cmp_ctx_t *ctx) {
27632777
return false;
27642778
}
27652779

2766-
if (size)
2780+
if (size) {
2781+
switch (cmp_type) {
2782+
case CMP_TYPE_FIXEXT1:
2783+
case CMP_TYPE_FIXEXT2:
2784+
case CMP_TYPE_FIXEXT4:
2785+
case CMP_TYPE_FIXEXT8:
2786+
case CMP_TYPE_FIXEXT16:
2787+
case CMP_TYPE_EXT8:
2788+
case CMP_TYPE_EXT16:
2789+
case CMP_TYPE_EXT32:
2790+
size++;
2791+
default:
2792+
break;
2793+
}
2794+
27672795
skip_bytes(ctx, size);
2796+
}
27682797
}
27692798

27702799
element_count--;
@@ -2784,7 +2813,7 @@ bool cmp_skip_object_no_limit(cmp_ctx_t *ctx) {
27842813
if (!read_type_size(ctx, type_marker, cmp_type, &size)) {
27852814
return false;
27862815
}
2787-
element_count += ((uint64_t)size) * 2;
2816+
element_count += ((size_t)size) * 2;
27882817
break;
27892818
default:
27902819
break;
@@ -2996,6 +3025,9 @@ bool cmp_object_as_char(cmp_object_t *obj, int8_t *c) {
29963025
*c = obj->as.s8;
29973026
return true;
29983027
}
3028+
else {
3029+
return false;
3030+
}
29993031
default:
30003032
return false;
30013033
}
@@ -3019,6 +3051,9 @@ bool cmp_object_as_short(cmp_object_t *obj, int16_t *s) {
30193051
*s = obj->as.u16;
30203052
return true;
30213053
}
3054+
else {
3055+
return false;
3056+
}
30223057
default:
30233058
return false;
30243059
}
@@ -3048,6 +3083,9 @@ bool cmp_object_as_int(cmp_object_t *obj, int32_t *i) {
30483083
*i = obj->as.u32;
30493084
return true;
30503085
}
3086+
else {
3087+
return false;
3088+
}
30513089
default:
30523090
return false;
30533091
}
@@ -3083,6 +3121,9 @@ bool cmp_object_as_long(cmp_object_t *obj, int64_t *d) {
30833121
*d = obj->as.u64;
30843122
return true;
30853123
}
3124+
else {
3125+
return false;
3126+
}
30863127
default:
30873128
return false;
30883129
}

0 commit comments

Comments
 (0)