From cf4188c76cd6da576904f813296adbdbd4e6d279 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antonio=20Ca=C3=B1as=20Vargas?= Date: Mon, 13 Mar 2017 02:19:49 +0100 Subject: [PATCH] Version 16.155.18 --- sql/swad.sql | 7 ++-- swad_account.c | 8 ++--- swad_changelog.h | 18 ++++++---- swad_constant.h | 3 ++ swad_database.c | 39 +++++++++++----------- swad_enrollment.c | 6 ++-- swad_global.h | 2 +- swad_mail.c | 83 +++++++++++++++++++++++++--------------------- swad_mail.h | 9 ++--- swad_password.c | 2 +- swad_user.c | 10 +++--- swad_user.h | 10 ++---- swad_web_service.c | 10 +++--- 13 files changed, 106 insertions(+), 101 deletions(-) diff --git a/sql/swad.sql b/sql/swad.sql index 52abd9724..2bd5d2704 100644 --- a/sql/swad.sql +++ b/sql/swad.sql @@ -699,11 +699,10 @@ CREATE TABLE IF NOT EXISTS log_ws ( -- CREATE TABLE IF NOT EXISTS mail_domains ( MaiCod INT NOT NULL AUTO_INCREMENT, - Domain VARCHAR(127) NOT NULL, - Info VARCHAR(127) NOT NULL, + Domain VARCHAR(2047) NOT NULL, + Info VARCHAR(2047) NOT NULL, UNIQUE INDEX(MaiCod), - UNIQUE INDEX(Domain), - INDEX(Info)); + UNIQUE INDEX(Domain)); -- -- Table marks_properties: stores information about files of marks -- diff --git a/swad_account.c b/swad_account.c index a542ba0ab..ea07ef79d 100644 --- a/swad_account.c +++ b/swad_account.c @@ -375,7 +375,7 @@ static void Acc_ShowFormRequestNewAccountWithParams (const char *NewNicknameWith "", The_ClassForm[Gbl.Prefs.Theme], Txt_Email, - Usr_MAX_CHARS_USR_EMAIL, + Cns_MAX_CHARS_EMAIL, Txt_HELP_email, NewEmail); @@ -551,7 +551,7 @@ static void Acc_PrintAccountSeparator (void) bool Acc_CreateMyNewAccountAndLogIn (void) { char NewNicknameWithoutArroba[Nck_MAX_BYTES_NICKNAME_FROM_FORM + 1]; - char NewEmail[Usr_MAX_BYTES_USR_EMAIL + 1]; + char NewEmail[Cns_MAX_BYTES_EMAIL + 1]; char NewEncryptedPassword[Cry_LENGTH_ENCRYPTED_STR_SHA512_BASE64 + 1]; if (Acc_GetParamsNewAccount (NewNicknameWithoutArroba,NewEmail,NewEncryptedPassword)) @@ -578,7 +578,7 @@ bool Acc_CreateMyNewAccountAndLogIn (void) { /* Email updated sucessfully */ Str_Copy (Gbl.Usrs.Me.UsrDat.Email,NewEmail, - Usr_MAX_BYTES_USR_EMAIL); + Cns_MAX_BYTES_EMAIL); Gbl.Usrs.Me.UsrDat.EmailConfirmed = false; } @@ -649,7 +649,7 @@ static bool Acc_GetParamsNewAccount (char NewNicknameWithoutArroba[Nck_MAX_BYTES } /***** Step 2/3: Get new email from form *****/ - Par_GetParToText ("NewEmail",NewEmail,Usr_MAX_BYTES_USR_EMAIL); + Par_GetParToText ("NewEmail",NewEmail,Cns_MAX_BYTES_EMAIL); if (Mai_CheckIfEmailIsValid (NewEmail)) // New email is valid { diff --git a/swad_changelog.h b/swad_changelog.h index 417960bf8..57c86ac72 100644 --- a/swad_changelog.h +++ b/swad_changelog.h @@ -207,33 +207,39 @@ /****************************** Public constants *****************************/ /*****************************************************************************/ -#define Log_PLATFORM_VERSION "SWAD 16.155.17 (2017-03-12)" +#define Log_PLATFORM_VERSION "SWAD 16.155.18 (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.17:Mar 11, 2017 Adjusting size of database fields. (216755 lines) + Version 16.155.18:Mar 13, 2017 Adjusting size of database fields. (216761 lines) + 3 changes necessary in database: +DROP INDEX Info ON mail_domains; +ALTER TABLE mail_domains CHANGE COLUMN Domain Domain VARCHAR(255) NOT NULL; +ALTER TABLE mail_domains CHANGE COLUMN Info Info VARCHAR(2047) NOT NULL; + + Version 16.155.17:Mar 12, 2017 Adjusting size of database fields. (216755 lines) 2 changes necessary in database: ALTER TABLE log_search CHANGE COLUMN SearchStr SearchStr VARCHAR(2047) NOT NULL; ALTER TABLE sessions CHANGE COLUMN SearchString SearchStr VARCHAR(2047) NOT NULL DEFAULT ''; - Version 16.155.16:Mar 11, 2017 Adjusting size of database fields. (216749 lines) + Version 16.155.16:Mar 12, 2017 Adjusting size of database fields. (216749 lines) 1 change necessary in database: ALTER TABLE log_comments CHANGE COLUMN Comments Comments TEXT NOT NULL; - Version 16.155.15:Mar 11, 2017 Adjusting size of database fields. (216746 lines) + Version 16.155.15:Mar 12, 2017 Adjusting size of database fields. (216746 lines) 2 changes necessary in database: ALTER TABLE links CHANGE COLUMN ShortName ShortName VARCHAR(511) NOT NULL; ALTER TABLE links CHANGE COLUMN FullName FullName VARCHAR(2047) NOT NULL; - Version 16.155.14:Mar 11, 2017 Adjusting size of database fields. (216737 lines) + Version 16.155.14:Mar 12, 2017 Adjusting size of database fields. (216737 lines) 2 changes necessary in database: ALTER TABLE institutions CHANGE COLUMN ShortName ShortName VARCHAR(511) COLLATE latin1_spanish_ci NOT NULL; ALTER TABLE institutions CHANGE COLUMN FullName FullName VARCHAR(2047) COLLATE latin1_spanish_ci NOT NULL; - Version 16.155.13:Mar 11, 2017 Adjusting size of database fields. (216734 lines) + Version 16.155.13:Mar 12, 2017 Adjusting size of database fields. (216734 lines) 1 change necessary in database: ALTER TABLE holidays CHANGE COLUMN Name Name VARCHAR(2047) NOT NULL; diff --git a/swad_constant.h b/swad_constant.h index e8c7fd036..a9ab8da0d 100644 --- a/swad_constant.h +++ b/swad_constant.h @@ -45,6 +45,9 @@ #define Cns_MAX_CHARS_DATE (4 + 1 + 2 + 1 + 2) #define Cns_MAX_BYTES_DATE Cns_MAX_CHARS_DATE +#define Cns_MAX_CHARS_EMAIL (256 - 1) // 255 +#define Cns_MAX_BYTES_EMAIL Cns_MAX_CHARS_EMAIL // 255 + #define Cns_MAX_CHARS_SUBJECT (256 - 1) // 255 #define Cns_MAX_BYTES_SUBJECT ((Cns_MAX_CHARS_SUBJECT + 1) * Str_MAX_BYTES_PER_CHAR - 1) // 4095 diff --git a/swad_database.c b/swad_database.c index 4bc4ee4ee..0a18356c6 100644 --- a/swad_database.c +++ b/swad_database.c @@ -1486,32 +1486,31 @@ mysql> DESCRIBE log_ws; */ // TODO: Change NtfCod and LogCod from INT to BIGINT in database tables. DB_CreateTable ("CREATE TABLE IF NOT EXISTS log_ws (" - "LogCod INT NOT NULL," - "PlgCod INT NOT NULL," - "FunCod INT NOT NULL," - "UNIQUE INDEX(LogCod)," - "INDEX(PlgCod)," - "INDEX(FunCod))"); + "LogCod INT NOT NULL," + "PlgCod INT NOT NULL," + "FunCod INT NOT NULL," + "UNIQUE INDEX(LogCod)," + "INDEX(PlgCod)," + "INDEX(FunCod))"); /***** Table mail_domains *****/ /* mysql> DESCRIBE mail_domains; -+--------+--------------+------+-----+---------+----------------+ -| Field | Type | Null | Key | Default | Extra | -+--------+--------------+------+-----+---------+----------------+ -| MaiCod | int(11) | NO | PRI | NULL | auto_increment | -| Domain | varchar(127) | NO | UNI | NULL | | -| Info | varchar(127) | NO | MUL | NULL | | -+--------+--------------+------+-----+---------+----------------+ -3 rows in set (0.00 sec) ++--------+---------------+------+-----+---------+----------------+ +| Field | Type | Null | Key | Default | Extra | ++--------+---------------+------+-----+---------+----------------+ +| MaiCod | int(11) | NO | PRI | NULL | auto_increment | +| Domain | varchar(255) | NO | UNI | NULL | | +| Info | varchar(2047) | NO | | NULL | | ++--------+---------------+------+-----+---------+----------------+ +3 rows in set (0,00 sec) */ DB_CreateTable ("CREATE TABLE IF NOT EXISTS mail_domains (" - "MaiCod INT NOT NULL AUTO_INCREMENT," - "Domain VARCHAR(127) NOT NULL," - "Info VARCHAR(127) NOT NULL," - "UNIQUE INDEX(MaiCod)," - "UNIQUE INDEX(Domain)," - "INDEX(Info))"); + "MaiCod INT NOT NULL AUTO_INCREMENT," + "Domain VARCHAR(255) NOT NULL," // Cns_MAX_BYTES_EMAIL + "Info VARCHAR(2047) NOT NULL," // Mai_MAX_BYTES_MAIL_INFO + "UNIQUE INDEX(MaiCod)," + "UNIQUE INDEX(Domain))"); /***** Table marks_properties *****/ /* diff --git a/swad_enrollment.c b/swad_enrollment.c index 38bba7b15..7598adbc7 100644 --- a/swad_enrollment.c +++ b/swad_enrollment.c @@ -330,7 +330,7 @@ void Enr_WriteFormToReqAnotherUsrID (Act_Action_t NextAction) "", The_ClassForm[Gbl.Prefs.Theme], Txt_nick_email_or_ID, - Usr_MAX_CHARS_USR_LOGIN); + Cns_MAX_CHARS_EMAIL); /***** Send button*****/ Lay_PutConfirmButton (Txt_Continue); @@ -1421,7 +1421,7 @@ static void Enr_ReceiveFormUsrsCrs (Rol_Role_t Role) /* Find next string in text */ Str_GetNextStringUntilSeparator (&Ptr,UsrDat.UsrIDNickOrEmail, - Usr_MAX_BYTES_USR_LOGIN); + Cns_MAX_BYTES_EMAIL); /* Reset default list of users' codes */ ListUsrCods.NumUsrs = 0; @@ -1544,7 +1544,7 @@ static void Enr_ReceiveFormUsrsCrs (Rol_Role_t Role) /* Find next string in text */ Str_GetNextStringUntilSeparator (&Ptr,UsrDat.UsrIDNickOrEmail, - Usr_MAX_BYTES_USR_LOGIN); + Cns_MAX_BYTES_EMAIL); /* Reset default list of users' codes */ ListUsrCods.NumUsrs = 0; diff --git a/swad_global.h b/swad_global.h index 9773186f1..f2cb8d909 100644 --- a/swad_global.h +++ b/swad_global.h @@ -293,7 +293,7 @@ struct Globals Rol_Role_t LoggedRoleBeforeCloseSession; Rol_Role_t MaxRole; bool RoleHasChanged; // Set when I have changed my role - char UsrIdLogin[Usr_MAX_BYTES_USR_LOGIN + 1]; // String to store the ID, nickname or email entered in the user's login + char UsrIdLogin[Cns_MAX_BYTES_EMAIL + 1]; // String to store the ID, nickname or email entered in the user's login char LoginPlainPassword[Pwd_MAX_BYTES_PLAIN_PASSWORD + 1]; char LoginEncryptedPassword[Cry_LENGTH_ENCRYPTED_STR_SHA512_BASE64 + 1]; char PendingPassword[Cry_LENGTH_ENCRYPTED_STR_SHA512_BASE64 + 1]; diff --git a/swad_mail.c b/swad_mail.c index 5a09c08f6..c4db083c7 100644 --- a/swad_mail.c +++ b/swad_mail.c @@ -67,8 +67,8 @@ extern struct Globals Gbl; static void Mai_GetParamMaiOrder (void); static void Mai_PutIconToEditMailDomains (void); static void Mai_GetListMailDomainsAllowedForNotif (void); -static void Mai_GetMailDomain (const char *Email,char MailDomain[Mai_MAX_BYTES_MAIL_DOMAIN + 1]); -static bool Mai_CheckIfMailDomainIsAllowedForNotif (const char MailDomain[Mai_MAX_BYTES_MAIL_DOMAIN + 1]); +static void Mai_GetMailDomain (const char *Email,char MailDomain[Cns_MAX_BYTES_EMAIL + 1]); +static bool Mai_CheckIfMailDomainIsAllowedForNotif (const char MailDomain[Cns_MAX_BYTES_EMAIL + 1]); static void Mai_ListMailDomainsForEdition (void); static void Mai_PutParamMaiCod (long MaiCod); @@ -82,9 +82,9 @@ static void Mai_PutHeadMailDomains (void); static void Mai_CreateMailDomain (struct Mail *Mai); static void Mai_RemoveEmail (struct UsrData *UsrDat); -static void Mai_RemoveEmailFromDB (long UsrCod,const char *Email); +static void Mai_RemoveEmailFromDB (long UsrCod,const char Email[Cns_MAX_BYTES_EMAIL + 1]); static void Mai_NewUsrEmail (struct UsrData *UsrDat,bool ItsMe); -static void Mai_InsertMailKey (const char *Email, +static void Mai_InsertMailKey (const char Email[Cns_MAX_BYTES_EMAIL + 1], const char MailKey[Mai_LENGTH_EMAIL_CONFIRM_KEY + 1]); /*****************************************************************************/ @@ -291,7 +291,7 @@ static void Mai_GetListMailDomainsAllowedForNotif (void) /* Get the mail domain (row[1]) */ Str_Copy (Mai->Domain,row[1], - Mai_MAX_BYTES_MAIL_DOMAIN); + Cns_MAX_BYTES_EMAIL); /* Get the mail domain info (row[2]) */ Str_Copy (Mai->Info,row[2], @@ -320,7 +320,7 @@ static void Mai_GetListMailDomainsAllowedForNotif (void) bool Mai_CheckIfUsrCanReceiveEmailNotif (const struct UsrData *UsrDat) { - char MailDomain[Mai_MAX_BYTES_MAIL_DOMAIN + 1]; + char MailDomain[Cns_MAX_BYTES_EMAIL + 1]; /***** Check #1: is my email address confirmed? *****/ if (!UsrDat->EmailConfirmed) @@ -335,7 +335,7 @@ bool Mai_CheckIfUsrCanReceiveEmailNotif (const struct UsrData *UsrDat) /********************** Get mailbox from email address ***********************/ /*****************************************************************************/ -static void Mai_GetMailDomain (const char *Email,char MailDomain[Mai_MAX_BYTES_MAIL_DOMAIN + 1]) +static void Mai_GetMailDomain (const char *Email,char MailDomain[Cns_MAX_BYTES_EMAIL + 1]) { const char *Ptr; @@ -347,7 +347,7 @@ static void Mai_GetMailDomain (const char *Email,char MailDomain[Mai_MAX_BYTES_M Ptr++; // Skip '@' if (strchr (Ptr,(int) '@') == NULL) // No more '@' found Str_Copy (MailDomain,Ptr, - Mai_MAX_BYTES_MAIL_DOMAIN); + Cns_MAX_BYTES_EMAIL); } } @@ -355,9 +355,9 @@ static void Mai_GetMailDomain (const char *Email,char MailDomain[Mai_MAX_BYTES_M /************ Check if a mail domain is allowed for notifications ************/ /*****************************************************************************/ -static bool Mai_CheckIfMailDomainIsAllowedForNotif (const char MailDomain[Mai_MAX_BYTES_MAIL_DOMAIN + 1]) +static bool Mai_CheckIfMailDomainIsAllowedForNotif (const char MailDomain[Cns_MAX_BYTES_EMAIL + 1]) { - char Query[512]; + char Query[128 + Cns_MAX_BYTES_EMAIL]; /***** Get number of mail_domains with a name from database *****/ sprintf (Query,"SELECT COUNT(*) FROM mail_domains WHERE Domain='%s'", @@ -394,7 +394,7 @@ void Mai_WriteWarningEmailNotifications (void) void Mai_GetDataOfMailDomainByCod (struct Mail *Mai) { - char Query[1024]; + char Query[128]; MYSQL_RES *mysql_res; MYSQL_ROW row; unsigned long NumRows; @@ -417,7 +417,7 @@ void Mai_GetDataOfMailDomainByCod (struct Mail *Mai) /* Get the short name of the mail (row[0]) */ Str_Copy (Mai->Domain,row[0], - Mai_MAX_BYTES_MAIL_DOMAIN); + Cns_MAX_BYTES_EMAIL); /* Get the full name of the mail (row[1]) */ Str_Copy (Mai->Info,row[1], @@ -490,7 +490,7 @@ static void Mai_ListMailDomainsForEdition (void) fprintf (Gbl.F.Out,"", - Mai_MAX_CHARS_MAIL_DOMAIN,Mai->Domain, + Cns_MAX_CHARS_EMAIL,Mai->Domain, Gbl.Form.Id); Act_FormEnd (); fprintf (Gbl.F.Out,""); @@ -544,7 +544,7 @@ long Mai_GetParamMaiCod (void) void Mai_RemoveMailDomain (void) { extern const char *Txt_Email_domain_X_removed; - char Query[512]; + char Query[128]; struct Mail Mai; /***** Get mail code *****/ @@ -555,7 +555,8 @@ void Mai_RemoveMailDomain (void) Mai_GetDataOfMailDomainByCod (&Mai); /***** Remove mail *****/ - sprintf (Query,"DELETE FROM mail_domains WHERE MaiCod='%ld'",Mai.MaiCod); + sprintf (Query,"DELETE FROM mail_domains WHERE MaiCod='%ld'", + Mai.MaiCod); DB_QueryDELETE (Query,"can not remove a mail domain"); /***** Write message to show the change made *****/ @@ -608,7 +609,7 @@ static void Mai_RenameMailDomain (Cns_ShrtOrFullName_t ShrtOrFullName) case Cns_SHRT_NAME: ParamName = "Domain"; FieldName = "Domain"; - MaxBytes = Mai_MAX_BYTES_MAIL_DOMAIN; + MaxBytes = Cns_MAX_BYTES_EMAIL; CurrentMaiName = Mai->Domain; break; case Cns_FULL_NAME: @@ -743,7 +744,7 @@ static void Mai_PutFormToCreateMailDomain (void) " size=\"15\" maxlength=\"%u\" value=\"%s\"" " required=\"required\" />" "", - Mai_MAX_CHARS_MAIL_DOMAIN,Mai->Domain); + Cns_MAX_CHARS_EMAIL,Mai->Domain); /***** Mail domain info *****/ fprintf (Gbl.F.Out,"" @@ -807,7 +808,7 @@ void Mai_RecFormNewMailDomain (void) /***** Get parameters from form *****/ /* Get mail short name */ - Par_GetParToText ("Domain",Mai->Domain,Mai_MAX_BYTES_MAIL_DOMAIN); + Par_GetParToText ("Domain",Mai->Domain,Cns_MAX_BYTES_EMAIL); /* Get mail full name */ Par_GetParToText ("Info",Mai->Info,Mai_MAX_BYTES_MAIL_INFO); @@ -844,7 +845,9 @@ void Mai_RecFormNewMailDomain (void) static void Mai_CreateMailDomain (struct Mail *Mai) { extern const char *Txt_Created_new_email_domain_X; - char Query[1024]; + char Query[128 + + Cns_MAX_BYTES_EMAIL + + Mai_MAX_BYTES_MAIL_INFO]; /***** Create a new mail *****/ sprintf (Query,"INSERT INTO mail_domains (Domain,Info) VALUES ('%s','%s')", @@ -1004,9 +1007,9 @@ bool Mai_CheckIfEmailIsValid (const char *Email) bool ArrobaFound = false; /***** An email address must have a number of characters - 5 <= Length <= Usr_MAX_BYTES_USR_EMAIL *****/ + 5 <= Length <= Cns_MAX_BYTES_EMAIL *****/ if (Length < 5 || - Length > Usr_MAX_BYTES_USR_EMAIL) + Length > Cns_MAX_BYTES_EMAIL) return false; /***** An email address can have digits, letters, '.', '-' and '_'; @@ -1068,7 +1071,7 @@ bool Mai_GetEmailFromUsrCod (struct UsrData *UsrDat) /* Get email */ row = mysql_fetch_row (mysql_res); Str_Copy (UsrDat->Email,row[0], - Usr_MAX_BYTES_USR_EMAIL); + Cns_MAX_BYTES_EMAIL); UsrDat->EmailConfirmed = (row[1][0] == 'Y'); Found = true; } @@ -1084,9 +1087,9 @@ bool Mai_GetEmailFromUsrCod (struct UsrData *UsrDat) /*****************************************************************************/ // Returns -1L if email not found -long Mai_GetUsrCodFromEmail (const char *Email) +long Mai_GetUsrCodFromEmail (const char Email[Cns_MAX_BYTES_EMAIL + 1]) { - char Query[1024]; + char Query[512 + Cns_MAX_BYTES_EMAIL]; MYSQL_RES *mysql_res; MYSQL_ROW row; unsigned NumUsrs; @@ -1325,7 +1328,7 @@ void Mai_ShowFormChangeUsrEmail (const struct UsrData *UsrDat,bool ItsMe) "" "", - Usr_MAX_CHARS_USR_EMAIL, + Cns_MAX_CHARS_EMAIL, Gbl.Usrs.Me.UsrDat.Email); Lay_PutCreateButtonInline (NumEmails ? Txt_Change_email : // User already has an email address Txt_Save); // User has no email address yet @@ -1376,12 +1379,12 @@ static void Mai_RemoveEmail (struct UsrData *UsrDat) { extern const char *Txt_Email_X_removed; extern const char *Txt_User_not_found_or_you_do_not_have_permission_; - char Email[Usr_MAX_BYTES_USR_EMAIL + 1]; + char Email[Cns_MAX_BYTES_EMAIL + 1]; if (Usr_ICanEditOtherUsr (UsrDat)) { /***** Get new email from form *****/ - Par_GetParToText ("Email",Email,Usr_MAX_BYTES_USR_EMAIL); + Par_GetParToText ("Email",Email,Cns_MAX_BYTES_EMAIL); /***** Remove one of user's old email addresses *****/ Mai_RemoveEmailFromDB (UsrDat->UsrCod,Email); @@ -1401,9 +1404,9 @@ static void Mai_RemoveEmail (struct UsrData *UsrDat) /*************** Remove an old email address from database *******************/ /*****************************************************************************/ -static void Mai_RemoveEmailFromDB (long UsrCod,const char *Email) +static void Mai_RemoveEmailFromDB (long UsrCod,const char Email[Cns_MAX_BYTES_EMAIL + 1]) { - char Query[1024]; + char Query[256 + Cns_MAX_BYTES_EMAIL]; /***** Remove an old email address *****/ sprintf (Query,"DELETE FROM usr_emails" @@ -1458,12 +1461,12 @@ static void Mai_NewUsrEmail (struct UsrData *UsrDat,bool ItsMe) 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; extern const char *Txt_User_not_found_or_you_do_not_have_permission_; - char NewEmail[Usr_MAX_BYTES_USR_EMAIL + 1]; + char NewEmail[Cns_MAX_BYTES_EMAIL + 1]; if (Usr_ICanEditOtherUsr (UsrDat)) { /***** Get new email from form *****/ - Par_GetParToText ("NewEmail",NewEmail,Usr_MAX_BYTES_USR_EMAIL); + Par_GetParToText ("NewEmail",NewEmail,Cns_MAX_BYTES_EMAIL); if (Mai_CheckIfEmailIsValid (NewEmail)) // New email is valid { @@ -1517,9 +1520,9 @@ static void Mai_NewUsrEmail (struct UsrData *UsrDat,bool ItsMe) // Return true if email is successfully updated // Return false if email can not be updated beacuse it is registered by another user -bool Mai_UpdateEmailInDB (const struct UsrData *UsrDat,const char *NewEmail) +bool Mai_UpdateEmailInDB (const struct UsrData *UsrDat,const char NewEmail[Cns_MAX_BYTES_EMAIL + 1]) { - char Query[1024]; + char Query[256 + Cns_MAX_BYTES_EMAIL]; /***** Check if the new email matches any of the confirmed emails of other users *****/ sprintf (Query,"SELECT COUNT(*) FROM usr_emails" @@ -1664,10 +1667,12 @@ void Mai_ShowMsgConfirmEmailHasBeenSent (void) /************************* Insert mail hey in database ***********************/ /*****************************************************************************/ -static void Mai_InsertMailKey (const char *Email, +static void Mai_InsertMailKey (const char Email[Cns_MAX_BYTES_EMAIL + 1], const char MailKey[Mai_LENGTH_EMAIL_CONFIRM_KEY + 1]) { - char Query[512 + Mai_LENGTH_EMAIL_CONFIRM_KEY]; + char Query[256 + + Cns_MAX_BYTES_EMAIL + + Mai_LENGTH_EMAIL_CONFIRM_KEY]; /***** Remove expired pending emails from database *****/ sprintf (Query,"DELETE FROM pending_emails" @@ -1694,12 +1699,14 @@ void Mai_ConfirmEmail (void) extern const char *Txt_The_email_X_has_been_confirmed; extern const char *Txt_The_email_address_has_not_been_confirmed; extern const char *Txt_Failed_email_confirmation_key; - char Query[1024]; + char Query[256 + + Cns_MAX_BYTES_EMAIL + + Mai_LENGTH_EMAIL_CONFIRM_KEY]; MYSQL_RES *mysql_res; MYSQL_ROW row; char MailKey[Mai_LENGTH_EMAIL_CONFIRM_KEY + 1]; long UsrCod; - char Email[Usr_MAX_BYTES_USR_EMAIL + 1]; + char Email[Cns_MAX_BYTES_EMAIL + 1]; bool KeyIsCorrect = false; bool Confirmed; @@ -1718,7 +1725,7 @@ void Mai_ConfirmEmail (void) /* Get user's email */ Str_Copy (Email,row[1], - Usr_MAX_BYTES_USR_EMAIL); + Cns_MAX_BYTES_EMAIL); KeyIsCorrect = true; } diff --git a/swad_mail.h b/swad_mail.h index bb093bbd9..8a2f9b093 100644 --- a/swad_mail.h +++ b/swad_mail.h @@ -33,9 +33,6 @@ /************************** Public types and constants ***********************/ /*****************************************************************************/ -#define Mai_MAX_CHARS_MAIL_DOMAIN (128 - 1) // 127 -#define Mai_MAX_BYTES_MAIL_DOMAIN ((Mai_MAX_CHARS_MAIL_DOMAIN + 1) * Str_MAX_BYTES_PER_CHAR - 1) // 2047 - #define Mai_MAX_CHARS_MAIL_INFO (128 - 1) // 127 #define Mai_MAX_BYTES_MAIL_INFO ((Mai_MAX_CHARS_MAIL_INFO + 1) * Str_MAX_BYTES_PER_CHAR - 1) // 2047 @@ -51,7 +48,7 @@ typedef enum struct Mail { long MaiCod; - char Domain[Mai_MAX_BYTES_MAIL_DOMAIN + 1]; + char Domain[Cns_MAX_BYTES_EMAIL + 1]; char Info[Mai_MAX_BYTES_MAIL_INFO + 1]; unsigned NumUsrs; }; @@ -78,7 +75,7 @@ void Mai_ListEmails (void); // Creates an email message to students bool Mai_CheckIfEmailIsValid (const char *Email); bool Mai_GetEmailFromUsrCod (struct UsrData *UsrDat); -long Mai_GetUsrCodFromEmail (const char *Email); +long Mai_GetUsrCodFromEmail (const char Email[Cns_MAX_BYTES_EMAIL + 1]); void Mai_PutLinkToChangeOtherUsrEmails (void); void Mai_ShowFormOthEmail (void); @@ -87,7 +84,7 @@ void Mai_RemoveMyUsrEmail (void); void Mai_RemoveOtherUsrEmail (void); void May_NewMyUsrEmail (void); void Mai_NewOtherUsrEmail (void); -bool Mai_UpdateEmailInDB (const struct UsrData *UsrDat,const char *NewEmail); +bool Mai_UpdateEmailInDB (const struct UsrData *UsrDat,const char NewEmail[Cns_MAX_BYTES_EMAIL + 1]); void Mai_PutButtonToCheckEmailAddress (void); bool Mai_SendMailMsgToConfirmEmail (void); diff --git a/swad_password.c b/swad_password.c index f052fde6c..63c435549 100644 --- a/swad_password.c +++ b/swad_password.c @@ -261,7 +261,7 @@ void Pwd_ShowFormSendNewPwd (void) " size=\"8\" maxlength=\"%u\" value=\"%s\" />" "", The_ClassForm[Gbl.Prefs.Theme],Txt_nick_email_or_ID, - Usr_MAX_CHARS_USR_LOGIN,Gbl.Usrs.Me.UsrIdLogin); + Cns_MAX_CHARS_EMAIL,Gbl.Usrs.Me.UsrIdLogin); /***** Send button and end frame *****/ Lay_EndRoundFrameWithButton (Lay_CONFIRM_BUTTON,Txt_Get_a_new_password); diff --git a/swad_user.c b/swad_user.c index 9e23b40a3..73a4208da 100644 --- a/swad_user.c +++ b/swad_user.c @@ -2054,7 +2054,7 @@ void Usr_WriteFormLogin (Act_Action_t NextAction,void (*FuncParams) ()) Gbl.Prefs.IconsURL, Txt_User[Usr_SEX_UNKNOWN], Txt_User[Usr_SEX_UNKNOWN], - Usr_MAX_CHARS_USR_LOGIN, + Cns_MAX_CHARS_EMAIL, Txt_nick_email_or_ID, Gbl.Usrs.Me.UsrIdLogin); @@ -2299,7 +2299,7 @@ void Usr_PutFormLogOut (void) void Usr_GetParamUsrIdLogin (void) { - Par_GetParToText ("UsrId",Gbl.Usrs.Me.UsrIdLogin,Usr_MAX_BYTES_USR_LOGIN); + Par_GetParToText ("UsrId",Gbl.Usrs.Me.UsrIdLogin,Cns_MAX_BYTES_EMAIL); // Users' IDs are always stored internally without leading zeros Str_RemoveLeadingZeros (Gbl.Usrs.Me.UsrIdLogin); } @@ -2313,7 +2313,7 @@ static void Usr_GetParamOtherUsrIDNickOrEMail (void) /***** Get parameter with the plain user's ID, @nick or email of another user *****/ Par_GetParToText ("OtherUsrIDNickOrEMail", Gbl.Usrs.Other.UsrDat.UsrIDNickOrEmail, - Usr_MAX_BYTES_USR_LOGIN); + Cns_MAX_BYTES_EMAIL); // If it's a user's ID (if does not contain '@') if (strchr (Gbl.Usrs.Other.UsrDat.UsrIDNickOrEmail,(int) '@') != NULL) // '@' not found @@ -3589,7 +3589,7 @@ static void Usr_WriteMainUsrDataExceptUsrID (struct UsrData *UsrDat, static void Usr_WriteEmail (struct UsrData *UsrDat,const char *BgColor) { bool ShowEmail; - char MailLink[7 + Usr_MAX_BYTES_USR_EMAIL + 1]; // mailto:mail_address + char MailLink[7 + Cns_MAX_BYTES_EMAIL + 1]; // mailto:mail_address if (UsrDat->Email[0]) { @@ -5206,7 +5206,7 @@ bool Usr_GetListMsgRecipientsWrittenExplicitelyBySender (bool WriteErrorMsgs) size_t LengthSelectedUsrsCods; size_t LengthUsrCod; const char *Ptr; - char UsrIDNickOrEmail[1024 + 1]; + char UsrIDNickOrEmail[Cns_MAX_BYTES_EMAIL + 1]; struct UsrData UsrDat; struct ListUsrCods ListUsrCods; bool Error = false; diff --git a/swad_user.h b/swad_user.h index 1b81a4b27..981048681 100644 --- a/swad_user.h +++ b/swad_user.h @@ -62,12 +62,6 @@ // Surname1 +' '+ Surname2 + ','+' ' + FirstName // Surname1 +' '+ Surname2 + '
' + FirstName -#define Usr_MAX_CHARS_USR_EMAIL (128 - 1) // 127 -#define Usr_MAX_BYTES_USR_EMAIL Usr_MAX_CHARS_USR_EMAIL // 127 - -#define Usr_MAX_CHARS_USR_LOGIN Usr_MAX_CHARS_USR_EMAIL // 127, maximum number of chars of @nick, email or ID -#define Usr_MAX_BYTES_USR_LOGIN ((Usr_MAX_CHARS_USR_LOGIN + 1) * Str_MAX_BYTES_PER_CHAR - 1) // 2047 - #define Usr_BIRTHDAY_STR_DB_LENGTH (4 + 1 + 2 + 1 + 2) // "'%04u-%02u-%02u'" #define Usr_MAX_CHARS_ADDRESS (128 - 1) // 127 @@ -124,7 +118,7 @@ struct UsrData { long UsrCod; char EncryptedUsrCod [Cry_BYTES_ENCRYPTED_STR_SHA256_BASE64 + 1]; - char UsrIDNickOrEmail[Usr_MAX_BYTES_USR_LOGIN + 1]; // String to store the ID, nickname or email + char UsrIDNickOrEmail[Cns_MAX_BYTES_EMAIL + 1]; // String to store the ID, nickname or email struct { struct ListIDs *List; @@ -142,7 +136,7 @@ struct UsrData char FirstName [Usr_MAX_BYTES_FIRSTNAME_OR_SURNAME + 1]; char FullName [Usr_MAX_BYTES_FULL_NAME + 1]; Usr_Sex_t Sex; - char Email [Usr_MAX_BYTES_USR_EMAIL + 1]; + char Email [Cns_MAX_BYTES_EMAIL + 1]; bool EmailConfirmed; char Photo [Cry_BYTES_ENCRYPTED_STR_SHA256_BASE64 + 1]; // Name of public link to photo Pri_Visibility_t PhotoVisibility; // Who can see user's photo diff --git a/swad_web_service.c b/swad_web_service.c index d28fdd3eb..14f0d77bb 100644 --- a/swad_web_service.c +++ b/swad_web_service.c @@ -695,7 +695,7 @@ int swad__createAccount (struct soap *soap, { /* Email updated sucessfully */ Str_Copy (Gbl.Usrs.Me.UsrDat.Email,userEmail, - Usr_MAX_BYTES_USR_EMAIL); + Cns_MAX_BYTES_EMAIL); Gbl.Usrs.Me.UsrDat.EmailConfirmed = false; } @@ -767,7 +767,7 @@ int swad__loginByUserPasswordKey (struct soap *soap, char *userID,char *userPassword,char *appKey, // input struct swad__loginByUserPasswordKeyOutput *loginByUserPasswordKeyOut) // output { - char UsrIDNickOrEmail[Usr_MAX_BYTES_USR_LOGIN + 1]; + char UsrIDNickOrEmail[Cns_MAX_BYTES_EMAIL + 1]; int ReturnCode; char Query[512]; MYSQL_RES *mysql_res; @@ -808,7 +808,7 @@ int swad__loginByUserPasswordKey (struct soap *soap, /***** Check if user's email, @nickname or ID are valid *****/ Str_Copy (UsrIDNickOrEmail,userID, - Usr_MAX_BYTES_USR_LOGIN); + Cns_MAX_BYTES_EMAIL); if (Nck_CheckIfNickWithArrobaIsValid (UsrIDNickOrEmail)) // 1: It's a nickname { Str_RemoveLeadingArrobas (UsrIDNickOrEmail); @@ -1078,7 +1078,7 @@ int swad__getNewPassword (struct soap *soap, struct swad__getNewPasswordOutput *getNewPasswordOut) // output { int ReturnCode; - char UsrIDNickOrEmail[Usr_MAX_BYTES_USR_LOGIN + 1]; + char UsrIDNickOrEmail[Cns_MAX_BYTES_EMAIL + 1]; char Query[512]; MYSQL_RES *mysql_res; MYSQL_ROW row; @@ -1098,7 +1098,7 @@ int swad__getNewPassword (struct soap *soap, /***** Check if user's email, @nickname or ID are valid *****/ Str_Copy (UsrIDNickOrEmail,userID, - Usr_MAX_BYTES_USR_LOGIN); + Cns_MAX_BYTES_EMAIL); if (Nck_CheckIfNickWithArrobaIsValid (UsrIDNickOrEmail)) // 1: It's a nickname { Str_RemoveLeadingArrobas (UsrIDNickOrEmail);