1
0
mirror of https://github.com/moparisthebest/curl synced 2024-08-13 17:03:50 -04:00

digest: Use boolean based success code for Curl_sasl_digest_get_pair()

Rather than use a 0 and 1 integer base result code use a TRUE / FALSE
based success code.
This commit is contained in:
Steve Holme 2016-03-12 17:25:15 +00:00
parent a7a653fd58
commit e4a0a9ef18
3 changed files with 14 additions and 15 deletions

View File

@ -92,13 +92,8 @@ const struct {
#endif #endif
#if !defined(CURL_DISABLE_CRYPTO_AUTH) #if !defined(CURL_DISABLE_CRYPTO_AUTH)
/* bool Curl_sasl_digest_get_pair(const char *str, char *value, char *content,
* Returns 0 on success and then the buffers are filled in fine. const char **endptr)
*
* Non-zero means failure to parse.
*/
int Curl_sasl_digest_get_pair(const char *str, char *value, char *content,
const char **endptr)
{ {
int c; int c;
bool starts_with_quote = FALSE; bool starts_with_quote = FALSE;
@ -110,7 +105,7 @@ int Curl_sasl_digest_get_pair(const char *str, char *value, char *content,
if('=' != *str++) if('=' != *str++)
/* eek, no match */ /* eek, no match */
return 1; return FALSE;
if('\"' == *str) { if('\"' == *str) {
/* this starts with a quote so it must end with one as well! */ /* this starts with a quote so it must end with one as well! */
@ -129,6 +124,7 @@ int Curl_sasl_digest_get_pair(const char *str, char *value, char *content,
continue; continue;
} }
break; break;
case ',': case ',':
if(!starts_with_quote) { if(!starts_with_quote) {
/* this signals the end of the content if we didn't get a starting /* this signals the end of the content if we didn't get a starting
@ -137,11 +133,13 @@ int Curl_sasl_digest_get_pair(const char *str, char *value, char *content,
continue; continue;
} }
break; break;
case '\r': case '\r':
case '\n': case '\n':
/* end of string */ /* end of string */
c = 0; c = 0;
continue; continue;
case '\"': case '\"':
if(!escape && starts_with_quote) { if(!escape && starts_with_quote) {
/* end of string */ /* end of string */
@ -150,14 +148,15 @@ int Curl_sasl_digest_get_pair(const char *str, char *value, char *content,
} }
break; break;
} }
escape = FALSE; escape = FALSE;
*content++ = *str; *content++ = *str;
} }
*content = 0;
*content = 0;
*endptr = str; *endptr = str;
return 0; /* all is fine! */ return TRUE;
} }
#endif #endif
@ -780,7 +779,7 @@ CURLcode Curl_sasl_decode_digest_http_message(const char *chlg,
chlg++; chlg++;
/* Extract a value=content pair */ /* Extract a value=content pair */
if(!Curl_sasl_digest_get_pair(chlg, value, content, &chlg)) { if(Curl_sasl_digest_get_pair(chlg, value, content, &chlg)) {
if(Curl_raw_equal(value, "nonce")) { if(Curl_raw_equal(value, "nonce")) {
free(digest->nonce); free(digest->nonce);
digest->nonce = strdup(content); digest->nonce = strdup(content);

View File

@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___ * | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____| * \___|\___/|_| \_\_____|
* *
* Copyright (C) 2012 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al. * Copyright (C) 2012 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
* *
* This software is licensed as described in the file COPYING, which * This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms * you should have received as part of this distribution. The terms
@ -149,8 +149,8 @@ char *Curl_sasl_build_gssapi_spn(const char *service, const char *instance);
#ifndef CURL_DISABLE_CRYPTO_AUTH #ifndef CURL_DISABLE_CRYPTO_AUTH
/* This is used to extract the realm from a challenge message */ /* This is used to extract the realm from a challenge message */
int Curl_sasl_digest_get_pair(const char *str, char *value, char *content, bool Curl_sasl_digest_get_pair(const char *str, char *value, char *content,
const char **endptr); const char **endptr);
/* This is used to generate a base64 encoded DIGEST-MD5 response message */ /* This is used to generate a base64 encoded DIGEST-MD5 response message */
CURLcode Curl_sasl_create_digest_md5_message(struct SessionHandle *data, CURLcode Curl_sasl_create_digest_md5_message(struct SessionHandle *data,

View File

@ -304,7 +304,7 @@ CURLcode Curl_override_sspi_http_realm(const char *chlg,
chlg++; chlg++;
/* Extract a value=content pair */ /* Extract a value=content pair */
if(!Curl_sasl_digest_get_pair(chlg, value, content, &chlg)) { if(Curl_sasl_digest_get_pair(chlg, value, content, &chlg)) {
if(Curl_raw_equal(value, "realm")) { if(Curl_raw_equal(value, "realm")) {
/* Setup identity's domain and length */ /* Setup identity's domain and length */