Skip to content

Commit

Permalink
Merge pull request #43 from camgunz/develop
Browse files Browse the repository at this point in the history
Develop
  • Loading branch information
camgunz authored Jun 19, 2017
2 parents d67df1b + 80426ab commit 9320cce
Show file tree
Hide file tree
Showing 2 changed files with 448 additions and 40 deletions.
51 changes: 46 additions & 5 deletions cmp.c
Original file line number Diff line number Diff line change
Expand Up @@ -2657,7 +2657,7 @@ bool cmp_skip_object(cmp_ctx_t *ctx, cmp_object_t *obj) {
}

bool cmp_skip_object_limit(cmp_ctx_t *ctx, cmp_object_t *obj, uint32_t limit) {
uint64_t element_count = 1;
size_t element_count = 1;
uint32_t depth = 0;

while (element_count) {
Expand Down Expand Up @@ -2702,6 +2702,20 @@ bool cmp_skip_object_limit(cmp_ctx_t *ctx, cmp_object_t *obj, uint32_t limit) {
}

if (size) {
switch (cmp_type) {
case CMP_TYPE_FIXEXT1:
case CMP_TYPE_FIXEXT2:
case CMP_TYPE_FIXEXT4:
case CMP_TYPE_FIXEXT8:
case CMP_TYPE_FIXEXT16:
case CMP_TYPE_EXT8:
case CMP_TYPE_EXT16:
case CMP_TYPE_EXT32:
size++;
default:
break;
}

skip_bytes(ctx, size);
}
}
Expand All @@ -2723,7 +2737,7 @@ bool cmp_skip_object_limit(cmp_ctx_t *ctx, cmp_object_t *obj, uint32_t limit) {
if (!read_type_size(ctx, type_marker, cmp_type, &size)) {
return false;
}
element_count += ((uint64_t)size) * 2;
element_count += ((size_t)size) * 2;
break;
default:
break;
Expand All @@ -2734,7 +2748,7 @@ bool cmp_skip_object_limit(cmp_ctx_t *ctx, cmp_object_t *obj, uint32_t limit) {
}

bool cmp_skip_object_no_limit(cmp_ctx_t *ctx) {
uint64_t element_count = 1;
size_t element_count = 1;

while (element_count) {
uint8_t type_marker = 0;
Expand Down Expand Up @@ -2763,8 +2777,23 @@ bool cmp_skip_object_no_limit(cmp_ctx_t *ctx) {
return false;
}

if (size)
if (size) {
switch (cmp_type) {
case CMP_TYPE_FIXEXT1:
case CMP_TYPE_FIXEXT2:
case CMP_TYPE_FIXEXT4:
case CMP_TYPE_FIXEXT8:
case CMP_TYPE_FIXEXT16:
case CMP_TYPE_EXT8:
case CMP_TYPE_EXT16:
case CMP_TYPE_EXT32:
size++;
default:
break;
}

skip_bytes(ctx, size);
}
}

element_count--;
Expand All @@ -2784,7 +2813,7 @@ bool cmp_skip_object_no_limit(cmp_ctx_t *ctx) {
if (!read_type_size(ctx, type_marker, cmp_type, &size)) {
return false;
}
element_count += ((uint64_t)size) * 2;
element_count += ((size_t)size) * 2;
break;
default:
break;
Expand Down Expand Up @@ -2996,6 +3025,9 @@ bool cmp_object_as_char(cmp_object_t *obj, int8_t *c) {
*c = obj->as.s8;
return true;
}
else {
return false;
}
default:
return false;
}
Expand All @@ -3019,6 +3051,9 @@ bool cmp_object_as_short(cmp_object_t *obj, int16_t *s) {
*s = obj->as.u16;
return true;
}
else {
return false;
}
default:
return false;
}
Expand Down Expand Up @@ -3048,6 +3083,9 @@ bool cmp_object_as_int(cmp_object_t *obj, int32_t *i) {
*i = obj->as.u32;
return true;
}
else {
return false;
}
default:
return false;
}
Expand Down Expand Up @@ -3083,6 +3121,9 @@ bool cmp_object_as_long(cmp_object_t *obj, int64_t *d) {
*d = obj->as.u64;
return true;
}
else {
return false;
}
default:
return false;
}
Expand Down
Loading

0 comments on commit 9320cce

Please sign in to comment.