summaryrefslogtreecommitdiff
path: root/daemon/digest.c
diff options
context:
space:
mode:
authorStef Walter <stef@memberwebs.com>2004-04-24 23:57:22 +0000
committerStef Walter <stef@memberwebs.com>2004-04-24 23:57:22 +0000
commitb9cab65e320fccc04cd06694e717db5e4abb5dcc (patch)
treeb64b5f1ca32b7b48b8ad96510ba88809497acce0 /daemon/digest.c
parentcbbe71752d7f9c6204ab0f16600fe7f10490f203 (diff)
Put nice assertions all over the place.
Diffstat (limited to 'daemon/digest.c')
-rw-r--r--daemon/digest.c26
1 files changed, 18 insertions, 8 deletions
diff --git a/daemon/digest.c b/daemon/digest.c
index 51120a0..79b4ff3 100644
--- a/daemon/digest.c
+++ b/daemon/digest.c
@@ -22,6 +22,7 @@ void digest_makenonce(unsigned char* nonce, unsigned char* secret, unsigned char
internal_nonce_t in;
md5_ctx_t md5;
+ ASSERT(nonce && secret);
ASSERT(sizeof(internal_nonce_t) == DIGEST_NONCE_LEN);
if(old)
@@ -51,6 +52,7 @@ int digest_checknonce(unsigned char* nonce, unsigned char* secret, time_t* tm)
{
internal_nonce_t in;
+ ASSERT(nonce && secret);
ASSERT(sizeof(internal_nonce_t) == DIGEST_NONCE_LEN);
digest_makenonce((unsigned char*)&in, secret, nonce);
@@ -69,6 +71,9 @@ int digest_checknonce(unsigned char* nonce, unsigned char* secret, time_t* tm)
digest_record_t* digest_makerec(unsigned char* nonce, const char* user)
{
digest_record_t* rec = (digest_record_t*)malloc(sizeof(*rec));
+
+ ASSERT(nonce && user);
+
if(!rec)
{
ha_messagex(LOG_CRIT, "out of memory");
@@ -85,8 +90,7 @@ digest_record_t* digest_makerec(unsigned char* nonce, const char* user)
const char* digest_challenge(ha_buffer_t* buf, unsigned char* nonce,
const char* realm, const char* domains, int stale)
{
- ASSERT(realm);
- ASSERT(nonce);
+ ASSERT(buf && realm && nonce);
ha_bufmcat(buf, HA_PREFIX_DIGEST, " realm=\"", realm, "\", nonce=\"", NULL);
ha_bufjoin(buf);
@@ -128,15 +132,12 @@ const char* digest_challenge(ha_buffer_t* buf, unsigned char* nonce,
int digest_parse(char* header, ha_buffer_t* buf, digest_header_t* rec,
unsigned char* nonce)
{
- /*
- * This function destroys the contents of header by
- * terminating strings in it all over the place.
- */
-
char next;
char* key;
char* value;
+ ASSERT(header && buf && rec);
+
header = ha_bufcpy(buf, header);
if(!header)
@@ -258,6 +259,10 @@ int digest_check(const char* realm, const char* method, const char* uri,
const char* digest;
const char* t;
+ ASSERT(realm && method && uri && buf && dg && rec);
+
+ /* TODO: Many of these should somehow communicate BAD REQ back to the client */
+
/* Check for digest */
if(!dg->digest || !dg->digest[0])
{
@@ -448,6 +453,8 @@ const char* digest_respond(ha_buffer_t* buf, digest_header_t* dg,
const char* nextnonce = NULL;
const char* t;
+ ASSERT(buf && dg && rec);
+
if(next)
{
nextnonce = ha_bufenc64(buf, next, DIGEST_NONCE_LEN);
@@ -523,6 +530,9 @@ void digest_makeha1(unsigned char* digest, const char* user,
const char* realm, const char* password)
{
md5_ctx_t md5;
+
+ ASSERT(digest && user && realm && password);
+
md5_init(&md5);
md5_update(&md5, user, strlen(user));
md5_update(&md5, ":", 1);
@@ -530,4 +540,4 @@ void digest_makeha1(unsigned char* digest, const char* user,
md5_update(&md5, ":", 1);
md5_update(&md5, password, strlen(password));
md5_final(digest, &md5);
-} \ No newline at end of file
+}