Version 16.155.18

This commit is contained in:
Antonio Cañas Vargas 2017-03-13 02:19:49 +01:00
parent 3cd89420a3
commit cf4188c76c
13 changed files with 106 additions and 101 deletions

View File

@ -699,11 +699,10 @@ CREATE TABLE IF NOT EXISTS log_ws (
-- --
CREATE TABLE IF NOT EXISTS mail_domains ( CREATE TABLE IF NOT EXISTS mail_domains (
MaiCod INT NOT NULL AUTO_INCREMENT, MaiCod INT NOT NULL AUTO_INCREMENT,
Domain VARCHAR(127) NOT NULL, Domain VARCHAR(2047) NOT NULL,
Info VARCHAR(127) NOT NULL, Info VARCHAR(2047) NOT NULL,
UNIQUE INDEX(MaiCod), UNIQUE INDEX(MaiCod),
UNIQUE INDEX(Domain), UNIQUE INDEX(Domain));
INDEX(Info));
-- --
-- Table marks_properties: stores information about files of marks -- Table marks_properties: stores information about files of marks
-- --

View File

@ -375,7 +375,7 @@ static void Acc_ShowFormRequestNewAccountWithParams (const char *NewNicknameWith
"</tr>", "</tr>",
The_ClassForm[Gbl.Prefs.Theme], The_ClassForm[Gbl.Prefs.Theme],
Txt_Email, Txt_Email,
Usr_MAX_CHARS_USR_EMAIL, Cns_MAX_CHARS_EMAIL,
Txt_HELP_email, Txt_HELP_email,
NewEmail); NewEmail);
@ -551,7 +551,7 @@ static void Acc_PrintAccountSeparator (void)
bool Acc_CreateMyNewAccountAndLogIn (void) bool Acc_CreateMyNewAccountAndLogIn (void)
{ {
char NewNicknameWithoutArroba[Nck_MAX_BYTES_NICKNAME_FROM_FORM + 1]; 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]; char NewEncryptedPassword[Cry_LENGTH_ENCRYPTED_STR_SHA512_BASE64 + 1];
if (Acc_GetParamsNewAccount (NewNicknameWithoutArroba,NewEmail,NewEncryptedPassword)) if (Acc_GetParamsNewAccount (NewNicknameWithoutArroba,NewEmail,NewEncryptedPassword))
@ -578,7 +578,7 @@ bool Acc_CreateMyNewAccountAndLogIn (void)
{ {
/* Email updated sucessfully */ /* Email updated sucessfully */
Str_Copy (Gbl.Usrs.Me.UsrDat.Email,NewEmail, Str_Copy (Gbl.Usrs.Me.UsrDat.Email,NewEmail,
Usr_MAX_BYTES_USR_EMAIL); Cns_MAX_BYTES_EMAIL);
Gbl.Usrs.Me.UsrDat.EmailConfirmed = false; 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 *****/ /***** 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 if (Mai_CheckIfEmailIsValid (NewEmail)) // New email is valid
{ {

View File

@ -207,33 +207,39 @@
/****************************** Public constants *****************************/ /****************************** 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 CSS_FILE "swad16.147.css"
#define JS_FILE "swad16.144.js" #define JS_FILE "swad16.144.js"
// Number of lines (includes comments but not blank lines) has been got with the following command: // 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 // 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: 2 changes necessary in database:
ALTER TABLE log_search CHANGE COLUMN SearchStr SearchStr VARCHAR(2047) NOT NULL; ALTER TABLE log_search CHANGE COLUMN SearchStr SearchStr VARCHAR(2047) NOT NULL;
ALTER TABLE sessions CHANGE COLUMN SearchString SearchStr VARCHAR(2047) NOT NULL DEFAULT ''; 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: 1 change necessary in database:
ALTER TABLE log_comments CHANGE COLUMN Comments Comments TEXT NOT NULL; 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: 2 changes necessary in database:
ALTER TABLE links CHANGE COLUMN ShortName ShortName VARCHAR(511) NOT NULL; ALTER TABLE links CHANGE COLUMN ShortName ShortName VARCHAR(511) NOT NULL;
ALTER TABLE links CHANGE COLUMN FullName FullName VARCHAR(2047) 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: 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 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; 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: 1 change necessary in database:
ALTER TABLE holidays CHANGE COLUMN Name Name VARCHAR(2047) NOT NULL; ALTER TABLE holidays CHANGE COLUMN Name Name VARCHAR(2047) NOT NULL;

View File

@ -45,6 +45,9 @@
#define Cns_MAX_CHARS_DATE (4 + 1 + 2 + 1 + 2) #define Cns_MAX_CHARS_DATE (4 + 1 + 2 + 1 + 2)
#define Cns_MAX_BYTES_DATE Cns_MAX_CHARS_DATE #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_CHARS_SUBJECT (256 - 1) // 255
#define Cns_MAX_BYTES_SUBJECT ((Cns_MAX_CHARS_SUBJECT + 1) * Str_MAX_BYTES_PER_CHAR - 1) // 4095 #define Cns_MAX_BYTES_SUBJECT ((Cns_MAX_CHARS_SUBJECT + 1) * Str_MAX_BYTES_PER_CHAR - 1) // 4095

View File

@ -1486,32 +1486,31 @@ mysql> DESCRIBE log_ws;
*/ */
// TODO: Change NtfCod and LogCod from INT to BIGINT in database tables. // TODO: Change NtfCod and LogCod from INT to BIGINT in database tables.
DB_CreateTable ("CREATE TABLE IF NOT EXISTS log_ws (" DB_CreateTable ("CREATE TABLE IF NOT EXISTS log_ws ("
"LogCod INT NOT NULL," "LogCod INT NOT NULL,"
"PlgCod INT NOT NULL," "PlgCod INT NOT NULL,"
"FunCod INT NOT NULL," "FunCod INT NOT NULL,"
"UNIQUE INDEX(LogCod)," "UNIQUE INDEX(LogCod),"
"INDEX(PlgCod)," "INDEX(PlgCod),"
"INDEX(FunCod))"); "INDEX(FunCod))");
/***** Table mail_domains *****/ /***** Table mail_domains *****/
/* /*
mysql> DESCRIBE mail_domains; mysql> DESCRIBE mail_domains;
+--------+--------------+------+-----+---------+----------------+ +--------+---------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra | | Field | Type | Null | Key | Default | Extra |
+--------+--------------+------+-----+---------+----------------+ +--------+---------------+------+-----+---------+----------------+
| MaiCod | int(11) | NO | PRI | NULL | auto_increment | | MaiCod | int(11) | NO | PRI | NULL | auto_increment |
| Domain | varchar(127) | NO | UNI | NULL | | | Domain | varchar(255) | NO | UNI | NULL | |
| Info | varchar(127) | NO | MUL | NULL | | | Info | varchar(2047) | NO | | NULL | |
+--------+--------------+------+-----+---------+----------------+ +--------+---------------+------+-----+---------+----------------+
3 rows in set (0.00 sec) 3 rows in set (0,00 sec)
*/ */
DB_CreateTable ("CREATE TABLE IF NOT EXISTS mail_domains (" DB_CreateTable ("CREATE TABLE IF NOT EXISTS mail_domains ("
"MaiCod INT NOT NULL AUTO_INCREMENT," "MaiCod INT NOT NULL AUTO_INCREMENT,"
"Domain VARCHAR(127) NOT NULL," "Domain VARCHAR(255) NOT NULL," // Cns_MAX_BYTES_EMAIL
"Info VARCHAR(127) NOT NULL," "Info VARCHAR(2047) NOT NULL," // Mai_MAX_BYTES_MAIL_INFO
"UNIQUE INDEX(MaiCod)," "UNIQUE INDEX(MaiCod),"
"UNIQUE INDEX(Domain)," "UNIQUE INDEX(Domain))");
"INDEX(Info))");
/***** Table marks_properties *****/ /***** Table marks_properties *****/
/* /*

View File

@ -330,7 +330,7 @@ void Enr_WriteFormToReqAnotherUsrID (Act_Action_t NextAction)
"</label>", "</label>",
The_ClassForm[Gbl.Prefs.Theme], The_ClassForm[Gbl.Prefs.Theme],
Txt_nick_email_or_ID, Txt_nick_email_or_ID,
Usr_MAX_CHARS_USR_LOGIN); Cns_MAX_CHARS_EMAIL);
/***** Send button*****/ /***** Send button*****/
Lay_PutConfirmButton (Txt_Continue); Lay_PutConfirmButton (Txt_Continue);
@ -1421,7 +1421,7 @@ static void Enr_ReceiveFormUsrsCrs (Rol_Role_t Role)
/* Find next string in text */ /* Find next string in text */
Str_GetNextStringUntilSeparator (&Ptr,UsrDat.UsrIDNickOrEmail, Str_GetNextStringUntilSeparator (&Ptr,UsrDat.UsrIDNickOrEmail,
Usr_MAX_BYTES_USR_LOGIN); Cns_MAX_BYTES_EMAIL);
/* Reset default list of users' codes */ /* Reset default list of users' codes */
ListUsrCods.NumUsrs = 0; ListUsrCods.NumUsrs = 0;
@ -1544,7 +1544,7 @@ static void Enr_ReceiveFormUsrsCrs (Rol_Role_t Role)
/* Find next string in text */ /* Find next string in text */
Str_GetNextStringUntilSeparator (&Ptr,UsrDat.UsrIDNickOrEmail, Str_GetNextStringUntilSeparator (&Ptr,UsrDat.UsrIDNickOrEmail,
Usr_MAX_BYTES_USR_LOGIN); Cns_MAX_BYTES_EMAIL);
/* Reset default list of users' codes */ /* Reset default list of users' codes */
ListUsrCods.NumUsrs = 0; ListUsrCods.NumUsrs = 0;

View File

@ -293,7 +293,7 @@ struct Globals
Rol_Role_t LoggedRoleBeforeCloseSession; Rol_Role_t LoggedRoleBeforeCloseSession;
Rol_Role_t MaxRole; Rol_Role_t MaxRole;
bool RoleHasChanged; // Set when I have changed my role 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 LoginPlainPassword[Pwd_MAX_BYTES_PLAIN_PASSWORD + 1];
char LoginEncryptedPassword[Cry_LENGTH_ENCRYPTED_STR_SHA512_BASE64 + 1]; char LoginEncryptedPassword[Cry_LENGTH_ENCRYPTED_STR_SHA512_BASE64 + 1];
char PendingPassword[Cry_LENGTH_ENCRYPTED_STR_SHA512_BASE64 + 1]; char PendingPassword[Cry_LENGTH_ENCRYPTED_STR_SHA512_BASE64 + 1];

View File

@ -67,8 +67,8 @@ extern struct Globals Gbl;
static void Mai_GetParamMaiOrder (void); static void Mai_GetParamMaiOrder (void);
static void Mai_PutIconToEditMailDomains (void); static void Mai_PutIconToEditMailDomains (void);
static void Mai_GetListMailDomainsAllowedForNotif (void); static void Mai_GetListMailDomainsAllowedForNotif (void);
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]);
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]);
static void Mai_ListMailDomainsForEdition (void); static void Mai_ListMailDomainsForEdition (void);
static void Mai_PutParamMaiCod (long MaiCod); 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_CreateMailDomain (struct Mail *Mai);
static void Mai_RemoveEmail (struct UsrData *UsrDat); 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_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]); const char MailKey[Mai_LENGTH_EMAIL_CONFIRM_KEY + 1]);
/*****************************************************************************/ /*****************************************************************************/
@ -291,7 +291,7 @@ static void Mai_GetListMailDomainsAllowedForNotif (void)
/* Get the mail domain (row[1]) */ /* Get the mail domain (row[1]) */
Str_Copy (Mai->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]) */ /* Get the mail domain info (row[2]) */
Str_Copy (Mai->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) 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? *****/ /***** Check #1: is my email address confirmed? *****/
if (!UsrDat->EmailConfirmed) if (!UsrDat->EmailConfirmed)
@ -335,7 +335,7 @@ bool Mai_CheckIfUsrCanReceiveEmailNotif (const struct UsrData *UsrDat)
/********************** Get mailbox from email address ***********************/ /********************** 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; const char *Ptr;
@ -347,7 +347,7 @@ static void Mai_GetMailDomain (const char *Email,char MailDomain[Mai_MAX_BYTES_M
Ptr++; // Skip '@' Ptr++; // Skip '@'
if (strchr (Ptr,(int) '@') == NULL) // No more '@' found if (strchr (Ptr,(int) '@') == NULL) // No more '@' found
Str_Copy (MailDomain,Ptr, 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 ************/ /************ 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 *****/ /***** Get number of mail_domains with a name from database *****/
sprintf (Query,"SELECT COUNT(*) FROM mail_domains WHERE Domain='%s'", sprintf (Query,"SELECT COUNT(*) FROM mail_domains WHERE Domain='%s'",
@ -394,7 +394,7 @@ void Mai_WriteWarningEmailNotifications (void)
void Mai_GetDataOfMailDomainByCod (struct Mail *Mai) void Mai_GetDataOfMailDomainByCod (struct Mail *Mai)
{ {
char Query[1024]; char Query[128];
MYSQL_RES *mysql_res; MYSQL_RES *mysql_res;
MYSQL_ROW row; MYSQL_ROW row;
unsigned long NumRows; unsigned long NumRows;
@ -417,7 +417,7 @@ void Mai_GetDataOfMailDomainByCod (struct Mail *Mai)
/* Get the short name of the mail (row[0]) */ /* Get the short name of the mail (row[0]) */
Str_Copy (Mai->Domain,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]) */ /* Get the full name of the mail (row[1]) */
Str_Copy (Mai->Info,row[1], Str_Copy (Mai->Info,row[1],
@ -490,7 +490,7 @@ static void Mai_ListMailDomainsForEdition (void)
fprintf (Gbl.F.Out,"<input type=\"text\" name=\"Domain\"" fprintf (Gbl.F.Out,"<input type=\"text\" name=\"Domain\""
" size=\"15\" maxlength=\"%u\" value=\"%s\"" " size=\"15\" maxlength=\"%u\" value=\"%s\""
" onchange=\"document.getElementById('%s').submit();\" />", " onchange=\"document.getElementById('%s').submit();\" />",
Mai_MAX_CHARS_MAIL_DOMAIN,Mai->Domain, Cns_MAX_CHARS_EMAIL,Mai->Domain,
Gbl.Form.Id); Gbl.Form.Id);
Act_FormEnd (); Act_FormEnd ();
fprintf (Gbl.F.Out,"</td>"); fprintf (Gbl.F.Out,"</td>");
@ -544,7 +544,7 @@ long Mai_GetParamMaiCod (void)
void Mai_RemoveMailDomain (void) void Mai_RemoveMailDomain (void)
{ {
extern const char *Txt_Email_domain_X_removed; extern const char *Txt_Email_domain_X_removed;
char Query[512]; char Query[128];
struct Mail Mai; struct Mail Mai;
/***** Get mail code *****/ /***** Get mail code *****/
@ -555,7 +555,8 @@ void Mai_RemoveMailDomain (void)
Mai_GetDataOfMailDomainByCod (&Mai); Mai_GetDataOfMailDomainByCod (&Mai);
/***** Remove mail *****/ /***** 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"); DB_QueryDELETE (Query,"can not remove a mail domain");
/***** Write message to show the change made *****/ /***** Write message to show the change made *****/
@ -608,7 +609,7 @@ static void Mai_RenameMailDomain (Cns_ShrtOrFullName_t ShrtOrFullName)
case Cns_SHRT_NAME: case Cns_SHRT_NAME:
ParamName = "Domain"; ParamName = "Domain";
FieldName = "Domain"; FieldName = "Domain";
MaxBytes = Mai_MAX_BYTES_MAIL_DOMAIN; MaxBytes = Cns_MAX_BYTES_EMAIL;
CurrentMaiName = Mai->Domain; CurrentMaiName = Mai->Domain;
break; break;
case Cns_FULL_NAME: case Cns_FULL_NAME:
@ -743,7 +744,7 @@ static void Mai_PutFormToCreateMailDomain (void)
" size=\"15\" maxlength=\"%u\" value=\"%s\"" " size=\"15\" maxlength=\"%u\" value=\"%s\""
" required=\"required\" />" " required=\"required\" />"
"</td>", "</td>",
Mai_MAX_CHARS_MAIL_DOMAIN,Mai->Domain); Cns_MAX_CHARS_EMAIL,Mai->Domain);
/***** Mail domain info *****/ /***** Mail domain info *****/
fprintf (Gbl.F.Out,"<td class=\"CENTER_MIDDLE\">" fprintf (Gbl.F.Out,"<td class=\"CENTER_MIDDLE\">"
@ -807,7 +808,7 @@ void Mai_RecFormNewMailDomain (void)
/***** Get parameters from form *****/ /***** Get parameters from form *****/
/* Get mail short name */ /* 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 */ /* Get mail full name */
Par_GetParToText ("Info",Mai->Info,Mai_MAX_BYTES_MAIL_INFO); 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) static void Mai_CreateMailDomain (struct Mail *Mai)
{ {
extern const char *Txt_Created_new_email_domain_X; 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 *****/ /***** Create a new mail *****/
sprintf (Query,"INSERT INTO mail_domains (Domain,Info) VALUES ('%s','%s')", sprintf (Query,"INSERT INTO mail_domains (Domain,Info) VALUES ('%s','%s')",
@ -1004,9 +1007,9 @@ bool Mai_CheckIfEmailIsValid (const char *Email)
bool ArrobaFound = false; bool ArrobaFound = false;
/***** An email address must have a number of characters /***** 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 || if (Length < 5 ||
Length > Usr_MAX_BYTES_USR_EMAIL) Length > Cns_MAX_BYTES_EMAIL)
return false; return false;
/***** An email address can have digits, letters, '.', '-' and '_'; /***** An email address can have digits, letters, '.', '-' and '_';
@ -1068,7 +1071,7 @@ bool Mai_GetEmailFromUsrCod (struct UsrData *UsrDat)
/* Get email */ /* Get email */
row = mysql_fetch_row (mysql_res); row = mysql_fetch_row (mysql_res);
Str_Copy (UsrDat->Email,row[0], Str_Copy (UsrDat->Email,row[0],
Usr_MAX_BYTES_USR_EMAIL); Cns_MAX_BYTES_EMAIL);
UsrDat->EmailConfirmed = (row[1][0] == 'Y'); UsrDat->EmailConfirmed = (row[1][0] == 'Y');
Found = true; Found = true;
} }
@ -1084,9 +1087,9 @@ bool Mai_GetEmailFromUsrCod (struct UsrData *UsrDat)
/*****************************************************************************/ /*****************************************************************************/
// Returns -1L if email not found // 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_RES *mysql_res;
MYSQL_ROW row; MYSQL_ROW row;
unsigned NumUsrs; unsigned NumUsrs;
@ -1325,7 +1328,7 @@ void Mai_ShowFormChangeUsrEmail (const struct UsrData *UsrDat,bool ItsMe)
"<input type=\"email\" id=\"NewEmail\" name=\"NewEmail\"" "<input type=\"email\" id=\"NewEmail\" name=\"NewEmail\""
" size=\"18\" maxlength=\"%u\" value=\"%s\" />" " size=\"18\" maxlength=\"%u\" value=\"%s\" />"
"</div>", "</div>",
Usr_MAX_CHARS_USR_EMAIL, Cns_MAX_CHARS_EMAIL,
Gbl.Usrs.Me.UsrDat.Email); Gbl.Usrs.Me.UsrDat.Email);
Lay_PutCreateButtonInline (NumEmails ? Txt_Change_email : // User already has an email address Lay_PutCreateButtonInline (NumEmails ? Txt_Change_email : // User already has an email address
Txt_Save); // User has no email address yet 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_Email_X_removed;
extern const char *Txt_User_not_found_or_you_do_not_have_permission_; 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)) if (Usr_ICanEditOtherUsr (UsrDat))
{ {
/***** Get new email from form *****/ /***** 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 *****/ /***** Remove one of user's old email addresses *****/
Mai_RemoveEmailFromDB (UsrDat->UsrCod,Email); Mai_RemoveEmailFromDB (UsrDat->UsrCod,Email);
@ -1401,9 +1404,9 @@ static void Mai_RemoveEmail (struct UsrData *UsrDat)
/*************** Remove an old email address from database *******************/ /*************** 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 *****/ /***** Remove an old email address *****/
sprintf (Query,"DELETE FROM usr_emails" 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_X_had_been_registered_by_another_user;
extern const char *Txt_The_email_address_entered_X_is_not_valid; 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_; 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)) if (Usr_ICanEditOtherUsr (UsrDat))
{ {
/***** Get new email from form *****/ /***** 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 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 true if email is successfully updated
// Return false if email can not be updated beacuse it is registered by another user // 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 *****/ /***** Check if the new email matches any of the confirmed emails of other users *****/
sprintf (Query,"SELECT COUNT(*) FROM usr_emails" sprintf (Query,"SELECT COUNT(*) FROM usr_emails"
@ -1664,10 +1667,12 @@ void Mai_ShowMsgConfirmEmailHasBeenSent (void)
/************************* Insert mail hey in database ***********************/ /************************* 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]) 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 *****/ /***** Remove expired pending emails from database *****/
sprintf (Query,"DELETE FROM pending_emails" 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_X_has_been_confirmed;
extern const char *Txt_The_email_address_has_not_been_confirmed; extern const char *Txt_The_email_address_has_not_been_confirmed;
extern const char *Txt_Failed_email_confirmation_key; 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_RES *mysql_res;
MYSQL_ROW row; MYSQL_ROW row;
char MailKey[Mai_LENGTH_EMAIL_CONFIRM_KEY + 1]; char MailKey[Mai_LENGTH_EMAIL_CONFIRM_KEY + 1];
long UsrCod; long UsrCod;
char Email[Usr_MAX_BYTES_USR_EMAIL + 1]; char Email[Cns_MAX_BYTES_EMAIL + 1];
bool KeyIsCorrect = false; bool KeyIsCorrect = false;
bool Confirmed; bool Confirmed;
@ -1718,7 +1725,7 @@ void Mai_ConfirmEmail (void)
/* Get user's email */ /* Get user's email */
Str_Copy (Email,row[1], Str_Copy (Email,row[1],
Usr_MAX_BYTES_USR_EMAIL); Cns_MAX_BYTES_EMAIL);
KeyIsCorrect = true; KeyIsCorrect = true;
} }

View File

@ -33,9 +33,6 @@
/************************** Public types and constants ***********************/ /************************** 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_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 #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 struct Mail
{ {
long MaiCod; 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]; char Info[Mai_MAX_BYTES_MAIL_INFO + 1];
unsigned NumUsrs; unsigned NumUsrs;
}; };
@ -78,7 +75,7 @@ void Mai_ListEmails (void); // Creates an email message to students
bool Mai_CheckIfEmailIsValid (const char *Email); bool Mai_CheckIfEmailIsValid (const char *Email);
bool Mai_GetEmailFromUsrCod (struct UsrData *UsrDat); 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_PutLinkToChangeOtherUsrEmails (void);
void Mai_ShowFormOthEmail (void); void Mai_ShowFormOthEmail (void);
@ -87,7 +84,7 @@ void Mai_RemoveMyUsrEmail (void);
void Mai_RemoveOtherUsrEmail (void); void Mai_RemoveOtherUsrEmail (void);
void May_NewMyUsrEmail (void); void May_NewMyUsrEmail (void);
void Mai_NewOtherUsrEmail (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); void Mai_PutButtonToCheckEmailAddress (void);
bool Mai_SendMailMsgToConfirmEmail (void); bool Mai_SendMailMsgToConfirmEmail (void);

View File

@ -261,7 +261,7 @@ void Pwd_ShowFormSendNewPwd (void)
" size=\"8\" maxlength=\"%u\" value=\"%s\" />" " size=\"8\" maxlength=\"%u\" value=\"%s\" />"
"</label>", "</label>",
The_ClassForm[Gbl.Prefs.Theme],Txt_nick_email_or_ID, 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 *****/ /***** Send button and end frame *****/
Lay_EndRoundFrameWithButton (Lay_CONFIRM_BUTTON,Txt_Get_a_new_password); Lay_EndRoundFrameWithButton (Lay_CONFIRM_BUTTON,Txt_Get_a_new_password);

View File

@ -2054,7 +2054,7 @@ void Usr_WriteFormLogin (Act_Action_t NextAction,void (*FuncParams) ())
Gbl.Prefs.IconsURL, Gbl.Prefs.IconsURL,
Txt_User[Usr_SEX_UNKNOWN], Txt_User[Usr_SEX_UNKNOWN],
Txt_User[Usr_SEX_UNKNOWN], Txt_User[Usr_SEX_UNKNOWN],
Usr_MAX_CHARS_USR_LOGIN, Cns_MAX_CHARS_EMAIL,
Txt_nick_email_or_ID, Txt_nick_email_or_ID,
Gbl.Usrs.Me.UsrIdLogin); Gbl.Usrs.Me.UsrIdLogin);
@ -2299,7 +2299,7 @@ void Usr_PutFormLogOut (void)
void Usr_GetParamUsrIdLogin (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 // Users' IDs are always stored internally without leading zeros
Str_RemoveLeadingZeros (Gbl.Usrs.Me.UsrIdLogin); 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 *****/ /***** Get parameter with the plain user's ID, @nick or email of another user *****/
Par_GetParToText ("OtherUsrIDNickOrEMail", Par_GetParToText ("OtherUsrIDNickOrEMail",
Gbl.Usrs.Other.UsrDat.UsrIDNickOrEmail, 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 it's a user's ID (if does not contain '@')
if (strchr (Gbl.Usrs.Other.UsrDat.UsrIDNickOrEmail,(int) '@') != NULL) // '@' not found 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) static void Usr_WriteEmail (struct UsrData *UsrDat,const char *BgColor)
{ {
bool ShowEmail; 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]) if (UsrDat->Email[0])
{ {
@ -5206,7 +5206,7 @@ bool Usr_GetListMsgRecipientsWrittenExplicitelyBySender (bool WriteErrorMsgs)
size_t LengthSelectedUsrsCods; size_t LengthSelectedUsrsCods;
size_t LengthUsrCod; size_t LengthUsrCod;
const char *Ptr; const char *Ptr;
char UsrIDNickOrEmail[1024 + 1]; char UsrIDNickOrEmail[Cns_MAX_BYTES_EMAIL + 1];
struct UsrData UsrDat; struct UsrData UsrDat;
struct ListUsrCods ListUsrCods; struct ListUsrCods ListUsrCods;
bool Error = false; bool Error = false;

View File

@ -62,12 +62,6 @@
// Surname1 +' '+ Surname2 + ','+' ' + FirstName // Surname1 +' '+ Surname2 + ','+' ' + FirstName
// Surname1 +' '+ Surname2 + '<br />' + FirstName // Surname1 +' '+ Surname2 + '<br />' + 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_BIRTHDAY_STR_DB_LENGTH (4 + 1 + 2 + 1 + 2) // "'%04u-%02u-%02u'"
#define Usr_MAX_CHARS_ADDRESS (128 - 1) // 127 #define Usr_MAX_CHARS_ADDRESS (128 - 1) // 127
@ -124,7 +118,7 @@ struct UsrData
{ {
long UsrCod; long UsrCod;
char EncryptedUsrCod [Cry_BYTES_ENCRYPTED_STR_SHA256_BASE64 + 1]; 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
{ {
struct ListIDs *List; struct ListIDs *List;
@ -142,7 +136,7 @@ struct UsrData
char FirstName [Usr_MAX_BYTES_FIRSTNAME_OR_SURNAME + 1]; char FirstName [Usr_MAX_BYTES_FIRSTNAME_OR_SURNAME + 1];
char FullName [Usr_MAX_BYTES_FULL_NAME + 1]; char FullName [Usr_MAX_BYTES_FULL_NAME + 1];
Usr_Sex_t Sex; Usr_Sex_t Sex;
char Email [Usr_MAX_BYTES_USR_EMAIL + 1]; char Email [Cns_MAX_BYTES_EMAIL + 1];
bool EmailConfirmed; bool EmailConfirmed;
char Photo [Cry_BYTES_ENCRYPTED_STR_SHA256_BASE64 + 1]; // Name of public link to photo 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 Pri_Visibility_t PhotoVisibility; // Who can see user's photo

View File

@ -695,7 +695,7 @@ int swad__createAccount (struct soap *soap,
{ {
/* Email updated sucessfully */ /* Email updated sucessfully */
Str_Copy (Gbl.Usrs.Me.UsrDat.Email,userEmail, Str_Copy (Gbl.Usrs.Me.UsrDat.Email,userEmail,
Usr_MAX_BYTES_USR_EMAIL); Cns_MAX_BYTES_EMAIL);
Gbl.Usrs.Me.UsrDat.EmailConfirmed = false; Gbl.Usrs.Me.UsrDat.EmailConfirmed = false;
} }
@ -767,7 +767,7 @@ int swad__loginByUserPasswordKey (struct soap *soap,
char *userID,char *userPassword,char *appKey, // input char *userID,char *userPassword,char *appKey, // input
struct swad__loginByUserPasswordKeyOutput *loginByUserPasswordKeyOut) // output struct swad__loginByUserPasswordKeyOutput *loginByUserPasswordKeyOut) // output
{ {
char UsrIDNickOrEmail[Usr_MAX_BYTES_USR_LOGIN + 1]; char UsrIDNickOrEmail[Cns_MAX_BYTES_EMAIL + 1];
int ReturnCode; int ReturnCode;
char Query[512]; char Query[512];
MYSQL_RES *mysql_res; MYSQL_RES *mysql_res;
@ -808,7 +808,7 @@ int swad__loginByUserPasswordKey (struct soap *soap,
/***** Check if user's email, @nickname or ID are valid *****/ /***** Check if user's email, @nickname or ID are valid *****/
Str_Copy (UsrIDNickOrEmail,userID, Str_Copy (UsrIDNickOrEmail,userID,
Usr_MAX_BYTES_USR_LOGIN); Cns_MAX_BYTES_EMAIL);
if (Nck_CheckIfNickWithArrobaIsValid (UsrIDNickOrEmail)) // 1: It's a nickname if (Nck_CheckIfNickWithArrobaIsValid (UsrIDNickOrEmail)) // 1: It's a nickname
{ {
Str_RemoveLeadingArrobas (UsrIDNickOrEmail); Str_RemoveLeadingArrobas (UsrIDNickOrEmail);
@ -1078,7 +1078,7 @@ int swad__getNewPassword (struct soap *soap,
struct swad__getNewPasswordOutput *getNewPasswordOut) // output struct swad__getNewPasswordOutput *getNewPasswordOut) // output
{ {
int ReturnCode; int ReturnCode;
char UsrIDNickOrEmail[Usr_MAX_BYTES_USR_LOGIN + 1]; char UsrIDNickOrEmail[Cns_MAX_BYTES_EMAIL + 1];
char Query[512]; char Query[512];
MYSQL_RES *mysql_res; MYSQL_RES *mysql_res;
MYSQL_ROW row; MYSQL_ROW row;
@ -1098,7 +1098,7 @@ int swad__getNewPassword (struct soap *soap,
/***** Check if user's email, @nickname or ID are valid *****/ /***** Check if user's email, @nickname or ID are valid *****/
Str_Copy (UsrIDNickOrEmail,userID, Str_Copy (UsrIDNickOrEmail,userID,
Usr_MAX_BYTES_USR_LOGIN); Cns_MAX_BYTES_EMAIL);
if (Nck_CheckIfNickWithArrobaIsValid (UsrIDNickOrEmail)) // 1: It's a nickname if (Nck_CheckIfNickWithArrobaIsValid (UsrIDNickOrEmail)) // 1: It's a nickname
{ {
Str_RemoveLeadingArrobas (UsrIDNickOrEmail); Str_RemoveLeadingArrobas (UsrIDNickOrEmail);