diff --git a/sql/swad.sql b/sql/swad.sql index bd66987b5..8b7c3536d 100644 --- a/sql/swad.sql +++ b/sql/swad.sql @@ -1245,7 +1245,7 @@ CREATE TABLE IF NOT EXISTS usr_duplicated ( -- CREATE TABLE IF NOT EXISTS usr_emails ( UsrCod INT NOT NULL, - E_mail VARCHAR(127) COLLATE latin1_general_ci NOT NULL, + E_mail VARCHAR(255) COLLATE latin1_general_ci NOT NULL, CreatTime DATETIME NOT NULL, Confirmed ENUM('N','Y') NOT NULL DEFAULT 'N', UNIQUE INDEX(UsrCod,E_mail), diff --git a/swad_account.c b/swad_account.c index ad330e44d..0939ec167 100644 --- a/swad_account.c +++ b/swad_account.c @@ -606,7 +606,7 @@ static bool Acc_GetParamsNewAccount (char NewNicknameWithoutArroba[Nck_MAX_BYTES extern const char *Txt_The_nickname_entered_X_is_not_valid_; extern const char *Txt_The_email_address_X_had_been_registered_by_another_user; extern const char *Txt_The_email_address_entered_X_is_not_valid; - char Query[1024]; + char Query[256 + Cns_MAX_CHARS_EMAIL_ADDRESS]; char NewNicknameWithArroba[Nck_MAX_BYTES_NICKNAME_FROM_FORM + 1]; char NewPlainPassword[Pwd_MAX_BYTES_PLAIN_PASSWORD + 1]; bool Error = false; diff --git a/swad_changelog.h b/swad_changelog.h index cbac6a41c..83b515134 100644 --- a/swad_changelog.h +++ b/swad_changelog.h @@ -209,13 +209,17 @@ /****************************** Public constants *****************************/ /*****************************************************************************/ -#define Log_PLATFORM_VERSION "SWAD 16.155.28 (2017-03-13)" +#define Log_PLATFORM_VERSION "SWAD 16.155.29 (2017-03-13)" #define CSS_FILE "swad16.147.css" #define JS_FILE "swad16.144.js" // Number of lines (includes comments but not blank lines) has been got with the following command: // nl swad*.c swad*.h css/swad*.css py/swad*.py js/swad*.js soap/swad*?.h sql/swad*.sql | tail -1 /* + Version 16.155.29:Mar 13, 2017 Adjusting size of database fields. (217034 lines) + 1 change necessary in database. +ALTER TABLE usr_emails CHANGE COLUMN E_mail E_mail VARCHAR(255) COLLATE latin1_general_ci NOT NULL; + Version 16.155.28:Mar 13, 2017 Adjusting size of database fields. (217035 lines) 7 changes necessary in database. ALTER TABLE usr_data CHANGE COLUMN Surname1 Surname1 VARCHAR(511) COLLATE latin1_spanish_ci NOT NULL DEFAULT ''; diff --git a/swad_database.c b/swad_database.c index 76f0975cf..6f9b776c0 100644 --- a/swad_database.c +++ b/swad_database.c @@ -2618,11 +2618,11 @@ mysql> DESCRIBE usr_duplicated; 3 rows in set (0.00 sec) */ DB_CreateTable ("CREATE TABLE IF NOT EXISTS usr_duplicated (" - "UsrCod INT NOT NULL," - "InformerCod INT NOT NULL," - "InformTime DATETIME NOT NULL," - "UNIQUE INDEX(UsrCod,InformerCod)," - "INDEX(UsrCod))"); + "UsrCod INT NOT NULL," + "InformerCod INT NOT NULL," + "InformTime DATETIME NOT NULL," + "UNIQUE INDEX(UsrCod,InformerCod)," + "INDEX(UsrCod))"); /***** Table usr_emails *****/ /* @@ -2631,19 +2631,19 @@ mysql> DESCRIBE usr_emails; | Field | Type | Null | Key | Default | Extra | +-----------+---------------+------+-----+---------+-------+ | UsrCod | int(11) | NO | PRI | NULL | | -| E_mail | varchar(127) | NO | PRI | NULL | | +| E_mail | varchar(255) | NO | PRI | NULL | | | CreatTime | datetime | NO | | NULL | | | Confirmed | enum('N','Y') | NO | | N | | +-----------+---------------+------+-----+---------+-------+ -4 rows in set (0.01 sec) +4 rows in set (0,00 sec) */ DB_CreateTable ("CREATE TABLE IF NOT EXISTS usr_emails (" - "UsrCod INT NOT NULL," - "E_mail VARCHAR(127) COLLATE latin1_general_ci NOT NULL," - "CreatTime DATETIME NOT NULL," - "Confirmed ENUM('N','Y') NOT NULL DEFAULT 'N'," - "UNIQUE INDEX(UsrCod,E_mail)," - "UNIQUE INDEX(E_mail))"); + "UsrCod INT NOT NULL," + "E_mail VARCHAR(255) COLLATE latin1_general_ci NOT NULL," // Cns_MAX_CHARS_EMAIL_ADDRESS + "CreatTime DATETIME NOT NULL," + "Confirmed ENUM('N','Y') NOT NULL DEFAULT 'N'," + "UNIQUE INDEX(UsrCod,E_mail)," + "UNIQUE INDEX(E_mail))"); /***** Table usr_figures *****/ /* diff --git a/swad_mail.c b/swad_mail.c index afb598e3d..f2cb91ca0 100644 --- a/swad_mail.c +++ b/swad_mail.c @@ -1722,7 +1722,7 @@ void Mai_ConfirmEmail (void) /***** Get user's code and email from key *****/ sprintf (Query,"SELECT UsrCod,E_mail FROM pending_emails" - " WHERE MailKey='%s'", + " WHERE MailKey='%s'", MailKey); if (DB_QuerySELECT (Query,&mysql_res,"can not get user's code and email from key")) { diff --git a/swad_web_service.c b/swad_web_service.c index 46b2b7ce7..b9fb70182 100644 --- a/swad_web_service.c +++ b/swad_web_service.c @@ -720,7 +720,7 @@ static int Svc_CheckParamsNewAccount (char *NewNicknameWithArroba, // Input char *NewPlainPassword, // Input char *NewEncryptedPassword) // Output { - char Query[1024]; + char Query[256 + Cns_MAX_CHARS_EMAIL_ADDRESS]; /***** Step 1/3: Check new nickname *****/ /* Make a copy without possible starting arrobas */ @@ -771,7 +771,9 @@ int swad__loginByUserPasswordKey (struct soap *soap, { char UsrIDNickOrEmail[Cns_MAX_BYTES_EMAIL_ADDRESS + 1]; int ReturnCode; - char Query[512]; + char Query[512 + + Cns_MAX_CHARS_EMAIL_ADDRESS + + Pwd_BYTES_ENCRYPTED_PASSWORD]; MYSQL_RES *mysql_res; MYSQL_ROW row; unsigned NumRows; @@ -1082,7 +1084,7 @@ int swad__getNewPassword (struct soap *soap, { int ReturnCode; char UsrIDNickOrEmail[Cns_MAX_BYTES_EMAIL_ADDRESS + 1]; - char Query[512]; + char Query[128 + Cns_MAX_BYTES_EMAIL_ADDRESS]; MYSQL_RES *mysql_res; MYSQL_ROW row; unsigned NumRows; @@ -1107,18 +1109,14 @@ int swad__getNewPassword (struct soap *soap, Str_RemoveLeadingArrobas (UsrIDNickOrEmail); /* User has typed a nickname */ - sprintf (Query,"SELECT UsrCod" - " FROM usr_nicknames" - " WHERE Nickname='%s'", + sprintf (Query,"SELECT UsrCod FROM usr_nicknames WHERE Nickname='%s'", UsrIDNickOrEmail); } else if (Mai_CheckIfEmailIsValid (Gbl.Usrs.Me.UsrIdLogin)) // 2: It's an email { /* User has typed an email */ // TODO: Get only if email confirmed? - sprintf (Query,"SELECT UsrCod" - " FROM usr_emails" - " WHERE E_mail='%s'", + sprintf (Query,"SELECT UsrCod FROM usr_emails WHERE E_mail='%s'", UsrIDNickOrEmail); } else // 3: It's not a nickname nor email @@ -1130,9 +1128,7 @@ int swad__getNewPassword (struct soap *soap, { /* User has typed a valid user's ID (existing or not) */ // TODO: Get only if ID confirmed? - sprintf (Query,"SELECT UsrCod" - " FROM usr_IDs" - " WHERE UsrID='%s'", + sprintf (Query,"SELECT UsrCod FROM usr_IDs WHERE UsrID='%s'", UsrIDNickOrEmail); } else // String is not a valid user's nickname, email or ID