-
Notifications
You must be signed in to change notification settings - Fork 23
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Support Textual Mode & improvements #37
Conversation
Dev sign mode textual
Dev textual title truncation
Update actions
Update Stax icon
Updates
Bring changes from remote
Improvements
Align master with version on P1
Increase Tokens & remove textual for nanoS
}; | ||
typedef struct CborEncoder CborEncoder; | ||
|
||
static const size_t CborIndefiniteLength = SIZE_MAX; |
Check notice
Code scanning / CodeQL
Unused static variable Note
return err; | ||
} | ||
err = cbor_value_leave_container(it, &recursed); | ||
if (err) | ||
return err; | ||
return CborNoError; | ||
} | ||
|
||
case CborIntegerType: { | ||
uint64_t val; | ||
err = cbor_value_get_raw_integer(it, &val); | ||
cbor_assert(err == CborNoError); /* can't fail */ | ||
|
||
break; | ||
} | ||
|
||
case CborByteStringType: | ||
case CborTextStringType: { | ||
size_t n = 0; | ||
const void *ptr; | ||
|
||
err = cbor_value_begin_string_iteration(it); | ||
if (err) | ||
return err; | ||
|
||
while (1) { | ||
CborValue next; | ||
err = _cbor_value_get_string_chunk(it, &ptr, &n, &next); | ||
if (!err) { | ||
err = validate_number(it, type, flags); | ||
if (err) | ||
return err; | ||
} | ||
|
||
*it = next; | ||
if (err == CborErrorNoMoreStringChunks) | ||
return cbor_value_finish_string_iteration(it); | ||
if (err) | ||
return err; | ||
|
||
if (type == CborTextStringType && flags & CborValidateUtf8) { | ||
err = validate_utf8_string(ptr, n); | ||
if (err) | ||
return err; | ||
} | ||
} | ||
|
||
return CborNoError; | ||
} | ||
|
||
case CborTagType: { | ||
CborTag tag; | ||
err = cbor_value_get_tag(it, &tag); | ||
cbor_assert(err == CborNoError); /* can't fail */ | ||
|
||
err = cbor_value_advance_fixed(it); | ||
if (err) | ||
return err; | ||
err = validate_tag(it, tag, flags, recursionLeft - 1); | ||
if (err) | ||
return err; | ||
|
||
return CborNoError; | ||
} | ||
|
||
case CborSimpleType: { | ||
uint8_t simple_type; | ||
err = cbor_value_get_simple_type(it, &simple_type); | ||
cbor_assert(err == CborNoError); /* can't fail */ | ||
err = validate_simple_type(simple_type, flags); | ||
if (err) | ||
return err; | ||
break; | ||
} | ||
|
||
case CborNullType: | ||
case CborBooleanType: | ||
break; | ||
|
||
case CborUndefinedType: | ||
if (flags & CborValidateNoUndefined) | ||
return CborErrorExcludedType; | ||
break; | ||
|
||
case CborHalfFloatType: | ||
case CborFloatType: | ||
case CborDoubleType: { | ||
#ifdef CBOR_NO_FLOATING_POINT | ||
return CborErrorUnsupportedType; | ||
#else | ||
err = validate_floating_point(it, type, flags); | ||
if (err) | ||
return err; | ||
break; | ||
#endif /* !CBOR_NO_FLOATING_POINT */ | ||
} | ||
|
||
case CborInvalidType: | ||
return CborErrorUnknownType; | ||
} |
Check notice
Code scanning / CodeQL
Long switch case Note
CborTextStringType (32 lines)
if (flags & CborValidateShortestFloatingPoint && type > CborHalfFloatType) { | ||
if (type == CborDoubleType) { | ||
valf = (float)val; | ||
if ((double)valf == val) |
Check notice
Code scanning / CodeQL
Equality test on floating-point values Note
# ifndef CBOR_NO_HALF_FLOAT_TYPE | ||
if (type == CborFloatType) { | ||
valf16 = encode_half(valf); | ||
if (valf == decode_half(valf16)) |
Check notice
Code scanning / CodeQL
Equality test on floating-point values Note
if (tagData->tag < tag) | ||
continue; | ||
if (tagData->tag > tag) | ||
tagData = NULL; |
Check notice
Code scanning / CodeQL
For loop variable changed in body Note
loop
|
||
/* Error API */ | ||
|
||
typedef enum CborError { |
Check notice
Code scanning / CodeQL
Irregular enum initialization Note
CborSignatureTag = 55799 | ||
} CborKnownTags; | ||
|
||
/* #define the constants so we can check with #ifdef */ |
Check notice
Code scanning / CodeQL
Commented-out code Note
Checklist
develop