Commit 17f6211c authored by unknown's avatar unknown
Browse files

Merge joreland@bk-internal.mysql.com:/home/bk/mysql-5.0

into  perch.ndb.mysql.com:/home/jonas/src/mysql-5.0-push

parents 85b93971 3c76331f
Loading
Loading
Loading
Loading
+2 −4
Original line number Diff line number Diff line
@@ -4756,13 +4756,12 @@ Item_func_sp::execute(Item **itp)
  THD *thd= current_thd;
  int res= -1;
  Sub_statement_state statement_state;
  Security_context *save_security_ctx= 0, *save_ctx_func;
  Security_context *save_security_ctx= thd->security_ctx, *save_ctx_func;

#ifndef NO_EMBEDDED_ACCESS_CHECKS
  if (context->security_ctx)
  {
    /* Set view definer security context */
    save_security_ctx= thd->security_ctx;
    thd->security_ctx= context->security_ctx;
  }
#endif
@@ -4787,7 +4786,6 @@ Item_func_sp::execute(Item **itp)
#ifndef NO_EMBEDDED_ACCESS_CHECKS
  sp_restore_security_context(thd, save_ctx_func);
error:
  if (save_security_ctx)
  thd->security_ctx= save_security_ctx;
#else
error:
+1 −1
Original line number Diff line number Diff line
@@ -3532,7 +3532,7 @@ bool check_grant(THD *thd, ulong want_access, TABLE_LIST *tables,
    of other queries). For simple queries first_not_own_table is 0.
  */
  for (i= 0, table= tables;
       table && table != first_not_own_table && i < number;
       table != first_not_own_table && i < number;
       table= table->next_global, i++)
  {
    /* Remove SHOW_VIEW_ACL, because it will be checked during making view */
+2 −4
Original line number Diff line number Diff line
@@ -2705,15 +2705,13 @@ static bool check_grant_column_in_sctx(THD *thd, GRANT_INFO *grant,
{
  if (!check_grants)
    return FALSE;
  Security_context *save_security_ctx= 0;
  Security_context *save_security_ctx= thd->security_ctx;
  bool res;
  if (sctx)
  {
    save_security_ctx= thd->security_ctx;
    thd->security_ctx= sctx;
  }
  res= check_grant_column(thd, grant, db, table, name, length);
  if (save_security_ctx)
  thd->security_ctx= save_security_ctx;
  return res;
}
+3 −1
Original line number Diff line number Diff line
@@ -1767,6 +1767,8 @@ bool dispatch_command(enum enum_server_command command, THD *thd,
    /* Saved variable value */
    my_bool old_innodb_table_locks= 
              IF_INNOBASE_DB(thd->variables.innodb_table_locks, FALSE);
    /* used as fields initializator */
    lex_start(thd, 0, 0);


    statistic_increment(thd->status_var.com_stat[SQLCOM_SHOW_FIELDS],
@@ -5033,7 +5035,7 @@ check_table_access(THD *thd, ulong want_access,TABLE_LIST *tables,
    the given table list refers to the list for prelocking (contains tables
    of other queries). For simple queries first_not_own_table is 0.
  */
  for (; tables && tables != first_not_own_table; tables= tables->next_global)
  for (; tables != first_not_own_table; tables= tables->next_global)
  {
    if (tables->schema_table && 
        (want_access & ~(SELECT_ACL | EXTRA_ACL | FILE_ACL)))
+2 −3
Original line number Diff line number Diff line
@@ -2538,11 +2538,11 @@ bool st_table_list::prepare_security(THD *thd)
      tbl->table->grant= grant;
  }
  thd->security_ctx= save_security_ctx;
  DBUG_RETURN(FALSE);
#else
  while ((tbl= tb++))
    tbl->grant.privilege= ~NO_ACCESS;
#endif
  DBUG_RETURN(FALSE);
}


@@ -2654,7 +2654,7 @@ Natural_join_column::check_grants(THD *thd, const char *name, uint length)
  GRANT_INFO *grant;
  const char *db_name;
  const char *table_name;
  Security_context *save_security_ctx;
  Security_context *save_security_ctx= thd->security_ctx;
  Security_context *new_sctx= table_ref->security_ctx;
  bool res;

@@ -2673,7 +2673,6 @@ Natural_join_column::check_grants(THD *thd, const char *name, uint length)
    table_name= table_ref->table->s->table_name;
  }

  save_security_ctx= thd->security_ctx;
  if (new_sctx)
    thd->security_ctx= new_sctx;
  res= check_grant_column(thd, grant, db_name, table_name, name, length);