/* 5.2. Error Response says error response should use status code 400 and
* application/json body. If Content-Type matches, try to parse the body
* regardless of the status code. */
- if (curl_ctx->res_body != NULL
+ if (curl_ctx->res_len > 0
&& is_json(curl_ctx->content_type)
&& get_json_strings(curl_ctx->res_body, curl_ctx->res_len, ctx->log,
"error", &error, (void *)NULL)
user_creds->creds = mh_xmalloc(user_creds->alloc * sizeof *user_creds->creds);
for (;;) {
- size_t size = sizeof value_buf;
+ int size = sizeof value_buf;
switch (state = m_getfld(&getfld_ctx, name, value_buf, &size, fp)) {
case FLD:
case FLDPLUS: {
free(creds[i].user);
}
+ /* No longer need user_creds. result just uses its creds member. */
+ free(user_creds);
+
if (result == NULL) {
set_err_details(ctx, MH_OAUTH_CRED_USER_NOT_FOUND, user);
return NULL;
of the response body. */
*tokens = mh_xrealloc(*tokens, *tokens_len * sizeof **tokens);
}
- if (r == 0) {
+ if (r <= 0) {
return FALSE;
}