You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by Randy Terbush <ra...@hyperreal.org> on 1997/09/01 01:05:35 UTC

cvs commit: apachen/src/modules/standard mod_digest.c

randy       97/08/31 16:05:34

  Modified:    src/modules/standard mod_digest.c
  Log:
  Convert log_*() to aplog_error().
  Style changes.
  
  Revision  Changes    Path
  1.21      +108 -105  apachen/src/modules/standard/mod_digest.c
  
  Index: mod_digest.c
  ===================================================================
  RCS file: /export/home/cvs/apachen/src/modules/standard/mod_digest.c,v
  retrieving revision 1.20
  retrieving revision 1.21
  diff -u -r1.20 -r1.21
  --- mod_digest.c	1997/08/18 13:12:11	1.20
  +++ mod_digest.c	1997/08/31 23:05:33	1.21
  @@ -98,15 +98,16 @@
   
   module MODULE_VAR_EXPORT digest_module;
   
  -char *get_hash(request_rec *r, char *user, char *auth_pwfile)
  +char *get_hash (request_rec *r, char *user, char *auth_pwfile)
   {
       FILE *f;
       char l[MAX_STRING_LEN];
       const char *rpw;
       char *w, *x;
   
  -    if(!(f=pfopen(r->pool, auth_pwfile, "r"))) {
  -        log_reason ("Could not open password file", auth_pwfile, r);
  +    if (!(f=pfopen(r->pool, auth_pwfile, "r"))) {
  +        aplog_error(APLOG_MARK, APLOG_ERR, r->server,
  +		    "Could not open password file: %s", auth_pwfile);
   	return NULL;
       }
       while(!(cfg_getline(l,MAX_STRING_LEN,f))) {
  @@ -126,113 +127,115 @@
   
   /* Parse the Authorization header, if it exists */
   
  -int get_digest_rec(request_rec *r, digest_header_rec *response) {
  -  const char *auth_line = table_get(r->headers_in, "Authorization");
  -  int l;
  -  int s = 0, vk = 0, vv = 0;
  -  char *t, *key, *value;
  -
  -  if (!(t = auth_type(r)) || strcasecmp(t, "Digest"))
  -    return DECLINED;
  -
  -  if (!auth_name (r)) {
  -    log_reason ("need AuthName", r->uri, r);
  -    return SERVER_ERROR;
  -  }
  -
  -  if (!auth_line) {
  -    note_digest_auth_failure (r);
  -    return AUTH_REQUIRED;
  -  }
  -
  -  if (strcmp(getword (r->pool, &auth_line, ' '), "Digest")) {
  -    /* Client tried to authenticate using wrong auth scheme */
  -    log_reason ("client used wrong authentication scheme", r->uri, r);
  -    note_digest_auth_failure (r);
  -    return AUTH_REQUIRED;
  -  }
  +int get_digest_rec (request_rec *r, digest_header_rec *response)
  +{
  +    const char *auth_line = table_get(r->headers_in, "Authorization");
  +    int l;
  +    int s = 0, vk = 0, vv = 0;
  +    char *t, *key, *value;
  +
  +    if (!(t = auth_type(r)) || strcasecmp(t, "Digest"))
  +	return DECLINED;
  +
  +    if (!auth_name (r)) {
  +	aplog_error(APLOG_MARK, APLOG_ERR, r->server, "need AuthName: %s", r->uri);
  +	return SERVER_ERROR;
  +    }
  +
  +    if (!auth_line) {
  +	note_digest_auth_failure (r);
  +	return AUTH_REQUIRED;
  +    }
  +
  +    if (strcmp(getword(r->pool, &auth_line, ' '), "Digest")) {
  +	/* Client tried to authenticate using wrong auth scheme */
  +	aplog_error(APLOG_MARK, APLOG_ERR, r->server,
  +		    "client used wrong authentication scheme: %s", r->uri);
  +	note_digest_auth_failure(r);
  +	return AUTH_REQUIRED;
  +    }
   
  -  l = strlen(auth_line);
  +    l = strlen(auth_line);
   
  -  key=palloc(r->pool,l);
  -  value=palloc(r->pool,l);
  +    key = palloc(r->pool,l);
  +    value = palloc(r->pool,l);
   
  -  /* There's probably a better way to do this, but for the time being... */
  +    /* There's probably a better way to do this, but for the time being... */
   
   #define D_KEY 0
   #define D_VALUE 1
   #define D_STRING 2
   #define D_EXIT -1
   
  -  while (s != D_EXIT) {
  -    switch (s) {
  -    case D_STRING:
  -      if (auth_line[0] == '\"') {
  -	s = D_VALUE;
  -      }
  -      else {
  -	value[vv] = auth_line[0];
  -	vv++;
  -      }
  -      auth_line++;
  -      break;
  -
  -    case D_VALUE:
  -      if (isalnum(auth_line[0])) {
  -	value[vv] = auth_line[0];
  -	vv++;
  -      }
  -      else if (auth_line[0] == '\"') {
  -	s = D_STRING;
  -      }
  -      else {
  -	value[vv] = '\0';
  -
  -	if (!strcasecmp(key, "username"))
  -	  response->username = pstrdup(r->pool, value);
  -	else if (!strcasecmp(key, "realm"))
  -	  response->realm = pstrdup(r->pool, value);
  -	else if (!strcasecmp(key, "nonce"))
  -	  response->nonce = pstrdup(r->pool, value);
  -	else if (!strcasecmp(key, "uri"))
  -	  response->requested_uri = pstrdup(r->pool, value);
  -	else if (!strcasecmp(key, "response"))
  -	  response->digest = pstrdup(r->pool, value);
  -
  -	vv = 0;
  -	s = D_KEY;
  -      }
  -      auth_line++;
  -      break;
  -
  -    case D_KEY:
  -      if (isalnum(auth_line[0])) {
  -	key[vk] = auth_line[0];
  -	vk++;
  -      }
  -      else if (auth_line[0] == '=') {
  -	key[vk] = '\0';
  -	vk = 0;
  -	s = D_VALUE;
  -      }
  -      auth_line++;
  -      break;
  -    }
  -
  -    if (auth_line[-1] == '\0')
  -      s = D_EXIT;
  -  }
  -
  -  if (!response->username || !response->realm || !response->nonce ||
  -      !response->requested_uri || !response->digest) {
  -    note_digest_auth_failure (r);
  -    return AUTH_REQUIRED;
  -  }
  +    while (s != D_EXIT) {
  +	switch (s) {
  +	case D_STRING:
  +	    if (auth_line[0] == '\"') {
  +		s = D_VALUE;
  +	    }
  +	    else {
  +		value[vv] = auth_line[0];
  +		vv++;
  +	    }
  +	    auth_line++;
  +	    break;
  +
  +	case D_VALUE:
  +	    if (isalnum(auth_line[0])) {
  +		value[vv] = auth_line[0];
  +		vv++;
  +	    }
  +	    else if (auth_line[0] == '\"') {
  +		s = D_STRING;
  +	    }
  +	    else {
  +		value[vv] = '\0';
  +
  +		if (!strcasecmp(key, "username"))
  +		    response->username = pstrdup(r->pool, value);
  +		else if (!strcasecmp(key, "realm"))
  +		    response->realm = pstrdup(r->pool, value);
  +		else if (!strcasecmp(key, "nonce"))
  +		    response->nonce = pstrdup(r->pool, value);
  +		else if (!strcasecmp(key, "uri"))
  +		    response->requested_uri = pstrdup(r->pool, value);
  +		else if (!strcasecmp(key, "response"))
  +		    response->digest = pstrdup(r->pool, value);
  +		
  +		vv = 0;
  +		s = D_KEY;
  +	    }
  +	    auth_line++;
  +	    break;
  +
  +	case D_KEY:
  +	    if (isalnum(auth_line[0])) {
  +		key[vk] = auth_line[0];
  +		vk++;
  +	    }
  +	    else if (auth_line[0] == '=') {
  +		key[vk] = '\0';
  +		vk = 0;
  +		s = D_VALUE;
  +	    }
  +	    auth_line++;
  +	    break;
  +	}
  +
  +	if (auth_line[-1] == '\0')
  +	    s = D_EXIT;
  +    }
  +
  +    if (!response->username || !response->realm || !response->nonce ||
  +	!response->requested_uri || !response->digest) {
  +	note_digest_auth_failure (r);
  +	return AUTH_REQUIRED;
  +    }
   
  -  r->connection->user = response->username;
  -  r->connection->auth_type = "Digest";
  +    r->connection->user = response->username;
  +    r->connection->auth_type = "Digest";
   
  -  return OK;
  +    return OK;
   }
   
   /* The actual MD5 code... whee */
  @@ -277,15 +280,15 @@
           return DECLINED;
   	
       if (!(a1 = get_hash(r, c->user, sec->pwfile))) {
  -        ap_snprintf(errstr, sizeof(errstr), "user %s not found",c->user);
  -	log_reason (errstr, r->uri, r);
  -	note_digest_auth_failure (r);
  +        ap_snprintf(errstr, sizeof(errstr), "user %s not found", c->user);
  +	aplog_error(APLOG_MARK, APLOG_ERR, r->server, "%s: %s", errstr, r->uri);
  +	note_digest_auth_failure(r);
   	return AUTH_REQUIRED;
       }
       /* anyone know where the prototype for crypt is? */
  -    if(strcmp(response->digest, find_digest(r, response, a1))) {
  -        ap_snprintf(errstr, sizeof(errstr), "user %s: password mismatch",c->user);
  -	log_reason (errstr, r->uri, r);
  +    if (strcmp(response->digest, find_digest(r, response, a1))) {
  +        ap_snprintf(errstr, sizeof(errstr), "user %s: password mismatch", c->user);
  +	aplog_error(APLOG_MARK, APLOG_ERR, r->server, "%s: %s", errstr, r->uri);
   	note_digest_auth_failure (r);
   	return AUTH_REQUIRED;
       }