jwks_load_strn: Don't toy around with pointer expectations
Remove use of __FLAG_EMPTY as indirect way of signaling that NULL was ok to pass to this function. Signed-off-by: Ben Collins <bcollins@libjwt.io>
This commit is contained in:
parent
f31983dfef
commit
e5f00796c7
2 changed files with 24 additions and 18 deletions
|
@ -1192,8 +1192,7 @@ jwt_alg_t jwt_str_alg(const char *alg);
|
|||
* @param jwk_set Either NULL to create a new set, or an existing jwt_set
|
||||
* to add new keys to it.
|
||||
* @param jwk_json_str JSON string representation of a single key
|
||||
* or array of "keys". If NULL is passed, an empty jwk_set_t is
|
||||
* created. Must be null terminated.
|
||||
* or array of "keys".
|
||||
* @return A valid jwt_set_t on success. On failure, either NULL
|
||||
* or a jwt_set_t with error set. NULL generally means ENOMEM.
|
||||
*/
|
||||
|
|
|
@ -454,14 +454,13 @@ static jwk_set_t *jwks_process(jwk_set_t *jwk_set, json_t *j_all, json_error_t *
|
|||
return jwk_set;
|
||||
}
|
||||
|
||||
#define __FLAG_EMPTY (void *)0xfffff00d
|
||||
jwk_set_t *jwks_load_strn(jwk_set_t *jwk_set, const char *jwk_json_str,
|
||||
const size_t len)
|
||||
static jwk_set_t *__jwks_load_strn(jwk_set_t *jwk_set, const char *jwk_json_str,
|
||||
const size_t len, int empty_allowed)
|
||||
{
|
||||
json_auto_t *j_all = NULL;
|
||||
json_error_t error;
|
||||
|
||||
if (jwk_json_str == NULL)
|
||||
if (jwk_json_str == NULL && !empty_allowed)
|
||||
return NULL;
|
||||
|
||||
if (jwk_set == NULL)
|
||||
|
@ -469,8 +468,8 @@ jwk_set_t *jwks_load_strn(jwk_set_t *jwk_set, const char *jwk_json_str,
|
|||
if (jwk_set == NULL)
|
||||
return NULL; // LCOV_EXCL_LINE
|
||||
|
||||
/* Just an empty set. */
|
||||
if (jwk_json_str == __FLAG_EMPTY)
|
||||
/* Just an empty set */
|
||||
if (jwk_json_str == NULL)
|
||||
return jwk_set;
|
||||
|
||||
/* Parse the JSON string. */
|
||||
|
@ -479,19 +478,22 @@ jwk_set_t *jwks_load_strn(jwk_set_t *jwk_set, const char *jwk_json_str,
|
|||
return jwks_process(jwk_set, j_all, &error);
|
||||
}
|
||||
|
||||
jwk_set_t *jwks_load_strn(jwk_set_t *jwk_set, const char *jwk_json_str,
|
||||
const size_t len)
|
||||
{
|
||||
return __jwks_load_strn(jwk_set, jwk_json_str, len, 0);
|
||||
}
|
||||
|
||||
jwk_set_t *jwks_load(jwk_set_t *jwk_set, const char *jwk_json_str)
|
||||
{
|
||||
const char *real_str = jwk_json_str;
|
||||
size_t len;
|
||||
int len;
|
||||
|
||||
if (real_str == NULL) {
|
||||
real_str = __FLAG_EMPTY;
|
||||
len = 0;
|
||||
} else {
|
||||
len = strlen(real_str);
|
||||
}
|
||||
if (jwk_json_str == NULL)
|
||||
return NULL;
|
||||
|
||||
return jwks_load_strn(jwk_set, real_str, len);
|
||||
len = strlen(jwk_json_str);
|
||||
|
||||
return __jwks_load_strn(jwk_set, jwk_json_str, len, 0);
|
||||
}
|
||||
|
||||
jwk_set_t *jwks_load_fromfile(jwk_set_t *jwk_set, const char *file_name)
|
||||
|
@ -534,7 +536,12 @@ jwk_set_t *jwks_load_fromfp(jwk_set_t *jwk_set, FILE *input)
|
|||
|
||||
jwk_set_t *jwks_create(const char *jwk_json_str)
|
||||
{
|
||||
return jwks_load(NULL, jwk_json_str);
|
||||
int len = 0;
|
||||
|
||||
if (jwk_json_str != NULL)
|
||||
len = strlen(jwk_json_str);
|
||||
|
||||
return __jwks_load_strn(NULL, jwk_json_str, len, 1);
|
||||
}
|
||||
|
||||
jwk_set_t *jwks_create_strn(const char *jwk_json_str, const size_t len)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue