~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/sql_connect.cc

  • Committer: Brian Aker
  • Date: 2008-08-03 22:14:59 UTC
  • Revision ID: brian@tangent.org-20080803221459-gz8on1zlp22dbr9d
First pass on PAM auth

Show diffs side-by-side

added added

removed removed

Lines of Context:
19
19
*/
20
20
 
21
21
#include "mysql_priv.h"
 
22
#include <drizzled/authentication.h>
22
23
 
23
24
#define MIN_HANDSHAKE_SIZE      6
24
25
 
77
78
 
78
79
int
79
80
check_user(THD *thd, enum enum_server_command command,
80
 
           const char *passwd __attribute__((unused)),
 
81
           const char *passwd,
81
82
           uint passwd_len, const char *db,
82
83
           bool check_count)
83
84
{
84
85
  LEX_STRING db_str= { (char *) db, db ? strlen(db) : 0 };
 
86
  bool is_authenticated;
85
87
 
86
88
  /*
87
89
    Clear thd->db as it points to something, that will be freed when
91
93
  */
92
94
  thd->reset_db(NULL, 0);
93
95
 
94
 
  bool opt_secure_auth_local;
95
 
  pthread_mutex_lock(&LOCK_global_system_variables);
96
 
  opt_secure_auth_local= opt_secure_auth;
97
 
  pthread_mutex_unlock(&LOCK_global_system_variables);
98
 
 
99
 
  /*
100
 
    If the server is running in secure auth mode, short scrambles are 
101
 
    forbidden.
102
 
  */
103
 
  if (opt_secure_auth_local && passwd_len == SCRAMBLE_LENGTH_323)
104
 
  {
105
 
    my_error(ER_NOT_SUPPORTED_AUTH_MODE, MYF(0));
106
 
    general_log_print(thd, COM_CONNECT, ER(ER_NOT_SUPPORTED_AUTH_MODE));
107
 
    return(1);
108
 
  }
109
 
  if (passwd_len != 0 &&
110
 
      passwd_len != SCRAMBLE_LENGTH &&
111
 
      passwd_len != SCRAMBLE_LENGTH_323)
 
96
  if (passwd_len != 0 && passwd_len != SCRAMBLE_LENGTH)
112
97
  {
113
98
    my_error(ER_HANDSHAKE_ERROR, MYF(0), thd->main_security_ctx.host_or_ip);
114
99
    return(1);
115
100
  }
116
101
 
 
102
  is_authenticated= authenticate_user(thd, passwd);
 
103
 
 
104
  if (is_authenticated != true)
 
105
  {
 
106
    my_error(ER_ACCESS_DENIED_ERROR, MYF(0),
 
107
             thd->main_security_ctx.user,
 
108
             thd->main_security_ctx.host_or_ip,
 
109
             passwd_len ? ER(ER_YES) : ER(ER_NO));
 
110
 
 
111
    return 1;
 
112
  }
 
113
 
 
114
 
117
115
  USER_RESOURCES ur;
118
116
  thd->security_ctx->skip_grants();
119
117
  memset(&ur, 0, sizeof(USER_RESOURCES));
327
325
      return 1;
328
326
    }
329
327
  }
330
 
#ifdef _CUSTOMCONFIG_
331
 
#include "_cust_sql_parse.h"
332
 
#endif
333
328
  if (thd->packet.alloc(thd->variables.net_buffer_length))
334
329
    return 1; /* The error is set by alloc(). */
335
330