Version19.96

This commit is contained in:
Antonio Cañas Vargas 2019-12-19 01:42:24 +01:00
parent 8e22bf07f2
commit 774c3fb6d0
15 changed files with 113 additions and 87 deletions

View File

@ -60,7 +60,7 @@ static void RSS_WriteExamAnnouncements (FILE *FileRSS,struct Course *Crs);
void RSS_UpdateRSSFileForACrs (struct Course *Crs)
{
char PathRelPublRSSDir[PATH_MAX + 1];
char PathRelPublRSSFile[PATH_MAX + 1];
char PathRelPublRSSFile[PATH_MAX + 1 + NAME_MAX + 1];
FILE *FileRSS;
char RSSLink[Cns_MAX_BYTES_WWW + 1];
struct tm *tm;

View File

@ -75,7 +75,7 @@ extern struct Globals Gbl;
static void Acc_ShowFormCheckIfIHaveAccount (const char *Title);
static void Acc_WriteRowEmptyAccount (unsigned NumUsr,const char *ID,struct UsrData *UsrDat);
static void Acc_ShowFormRequestNewAccountWithParams (const char *NewNicknameWithoutArroba,
static void Acc_ShowFormRequestNewAccountWithParams (const char NewNicknameWithoutArroba[Nck_MAX_BYTES_NICKNAME_FROM_FORM + 1],
const char *NewEmail);
static bool Acc_GetParamsNewAccount (char NewNicknameWithoutArroba[Nck_MAX_BYTES_NICKNAME_FROM_FORM + 1],
char *NewEmail,
@ -343,7 +343,7 @@ void Acc_ShowFormCreateMyAccount (void)
/************ Show form to create a new account using parameters *************/
/*****************************************************************************/
static void Acc_ShowFormRequestNewAccountWithParams (const char *NewNicknameWithoutArroba,
static void Acc_ShowFormRequestNewAccountWithParams (const char NewNicknameWithoutArroba[Nck_MAX_BYTES_NICKNAME_FROM_FORM + 1],
const char *NewEmail)
{
extern const char *Hlp_PROFILE_SignUp;
@ -632,7 +632,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 NewNicknameWithArroba[Nck_MAX_BYTES_NICKNAME_FROM_FORM + 1];
char NewNicknameWithArroba[1 + Nck_MAX_BYTES_NICKNAME_FROM_FORM + 1];
char NewPlainPassword[Pwd_MAX_BYTES_PLAIN_PASSWORD + 1];
bool Error = false;

View File

@ -492,14 +492,16 @@ enscript -2 --landscape --color --file-align=2 --highlight --line-numbers -o - *
En OpenSWAD:
ps2pdf source.ps destination.pdf
*/
#define Log_PLATFORM_VERSION "SWAD 19.95.2 (2019-12-18)"
#define Log_PLATFORM_VERSION "SWAD 19.96 (2019-12-19)"
#define CSS_FILE "swad19.95.css"
#define JS_FILE "swad19.91.1.js"
/*
// TODO: Hacer un nuevo rol en los TFG: tutor externo (profesor de áreas no vinculadas con el centro, profesionales de empresas, etc.)
// TODO: Impedir la creación y edición de proyectos si no son editables.
// TODO: No se puede entrar con DNI '1' suponiendo que no tenga password ¿por qué?
Version 19.95.2: Dec 18, 2019 Buf fixes in swad.sql. (? lines)
Version 19.96: Dec 19, 2019 Bug fixes and code refactoring. (249423 lines)
Version 19.95.2: Dec 18, 2019 Bug fixes. (? lines)
1 change necessary in database:
DROP TABLE IF EXISTS log;

View File

@ -1553,7 +1553,7 @@ void Exa_GetSummaryAndContentExamAnnouncement (char SummaryStr[Ntf_MAX_BYTES_SUM
long ExaCod,bool GetContent)
{
extern const char *Txt_hours_ABBREVIATION;
char CrsNameAndDate[Hie_MAX_BYTES_FULL_NAME + (2 + Cns_MAX_BYTES_DATE + 6) + 1];
char CrsNameAndDate[Hie_MAX_BYTES_FULL_NAME + (2 + Cns_MAX_BYTES_DATE + 7) + 1];
char StrExamDate[Cns_MAX_BYTES_DATE + 1];
/***** Initializations *****/

View File

@ -5078,7 +5078,7 @@ void Brw_CreateDirDownloadTmp (void)
static unsigned NumDir = 0; // When this function is called several times in the same execution of the program, each time a new directory is created
// This happens when the trees of assignments and works of several users are being listed
char PathUniqueDirL[PATH_MAX + 1];
char PathUniqueDirR[PATH_MAX + 1];
char PathUniqueDirR[PATH_MAX + 1 + NAME_MAX + 1];
/* Example: /var/www/html/swad/tmp/SS/ujCNWsy4ZOdmgMKYBe0sKPAJu6szaZOQlIlJs_QIY */
@ -8689,8 +8689,8 @@ void Brw_RenFolderFileBrowser (void)
extern const char *Txt_You_can_not_rename_this_folder;
char OldPathInTree[PATH_MAX + 1 + NAME_MAX + 1];
char NewPathInTree[PATH_MAX + 1 + NAME_MAX + 1];
char OldPath[PATH_MAX + 1 + PATH_MAX + 1];
char NewPath[PATH_MAX + 1 + PATH_MAX + 1];
char OldPath[PATH_MAX + 1 + PATH_MAX + 1 + NAME_MAX + 1];
char NewPath[PATH_MAX + 1 + PATH_MAX + 1 + NAME_MAX + 1];
/***** Get parameters related to file browser *****/
Brw_GetParAndInitFileBrowser ();
@ -8852,7 +8852,7 @@ static bool Brw_RcvFileInFileBrw (Brw_UploadType_t UploadType)
char SrcFileName[PATH_MAX + 1];
char PathUntilFileName[PATH_MAX + 1];
char Path[PATH_MAX + 1 + PATH_MAX + 1];
char PathTmp[PATH_MAX + 1];
char PathTmp[PATH_MAX + 1 + PATH_MAX + 4 + 1];
char PathCompleteInTreeIncludingFile[PATH_MAX + 1 + NAME_MAX + 1];
char MIMEType[Brw_MAX_BYTES_MIME_TYPE + 1];
bool AdminMarks;
@ -9044,7 +9044,7 @@ void Brw_RecLinkFileBrowser (void)
char FileName[NAME_MAX + 1];
char Path[PATH_MAX + 1 + PATH_MAX + 1];
FILE *FileURL;
char PathCompleteInTreeIncludingFile[PATH_MAX + 1 + NAME_MAX + 1];
char PathCompleteInTreeIncludingFile[PATH_MAX + 1 + NAME_MAX + 4 + 1];
long FilCod = -1L; // Code of new file in database
char FileNameToShow[NAME_MAX + 1];
struct FileMetadata FileMetadata;

View File

@ -724,7 +724,7 @@ void Inf_RemoveUsrFromCrsInfoRead (long UsrCod,long CrsCod)
static bool Inf_CheckPage (long CrsCod,Inf_InfoType_t InfoType)
{
char PathRelDirHTML[PATH_MAX + 1];
char PathRelFileHTML[PATH_MAX + 1];
char PathRelFileHTML[PATH_MAX + 1 + 10 + 1];
// TODO !!!!!!!!!!!! If the page is hosted in server ==> it should be created a temporary public directory
// and host the page in a private directory !!!!!!!!!!!!!!!!!
@ -758,7 +758,7 @@ static bool Inf_CheckPage (long CrsCod,Inf_InfoType_t InfoType)
static bool Inf_CheckAndShowPage (void)
{
char PathRelDirHTML[PATH_MAX + 1];
char PathRelFileHTML[PATH_MAX + 1];
char PathRelFileHTML[PATH_MAX + 1 + 10 + 1];
char URL[PATH_MAX + 1];
// TODO !!!!!!!!!!!! If the page is hosted in server ==> it should be created a temporary public directory
@ -821,7 +821,7 @@ static void Inf_BuildPathPage (long CrsCod,Inf_InfoType_t InfoType,char PathDir[
int Inf_WritePageIntoHTMLBuffer (char **HTMLBuffer)
{
char PathRelDirHTML[PATH_MAX + 1];
char PathRelFileHTML[PATH_MAX + 1];
char PathRelFileHTML[PATH_MAX + 1 + 10 + 1];
FILE *FileHTML;
bool FileExists = false;
size_t Length;
@ -2249,10 +2249,10 @@ void Inf_ReceivePagInfo (void)
struct Param *Param;
char SourceFileName[PATH_MAX + 1];
char PathRelDirHTML[PATH_MAX + 1];
char PathRelFileHTML[PATH_MAX + 1];
char PathRelFileHTML[PATH_MAX + 1 + 10 + 1];
char PathRelFileZIP[PATH_MAX + 1 + NAME_MAX + 1];
char MIMEType[Brw_MAX_BYTES_MIME_TYPE + 1];
char StrUnzip[128 + PATH_MAX * 2 + 1];
char StrUnzip[128 + PATH_MAX + 1 + NAME_MAX + 1 + PATH_MAX + 1];
bool WrongType = false;
bool FileIsOK = false;

View File

@ -706,7 +706,7 @@ void Mrk_GetNotifMyMarks (char SummaryStr[Ntf_MAX_BYTES_SUMMARY + 1],
char FullPathInTreeFromDBMarksTable[PATH_MAX + 1];
char PathUntilFileName[PATH_MAX + 1];
char FileName[NAME_MAX + 1];
char PathMarks[PATH_MAX + 1];
char PathMarks[PATH_MAX + 1 + Cns_MAX_DECIMAL_DIGITS_LONG + 1 + 3 + 1 + Cns_MAX_DECIMAL_DIGITS_LONG + 1 + PATH_MAX + 1];
char FileNameUsrMarks[PATH_MAX + 1];
FILE *FileUsrMarks;
size_t SizeOfMyMarks;

View File

@ -1521,16 +1521,16 @@ static void Med_ShowJPG (struct Media *Media,
{
extern const char *Txt_File_not_found;
char FileNameMedia[NAME_MAX + 1];
char FullPathMediaPriv[PATH_MAX + 1];
char *FullPathMediaPriv;
char *URL;
/***** Build private path to JPG *****/
snprintf (FileNameMedia,sizeof (FileNameMedia),
"%s.%s",
Media->Name,Med_Extensions[Med_JPG]);
snprintf (FullPathMediaPriv,sizeof (FullPathMediaPriv),
"%s/%s",
PathMedPriv,FileNameMedia);
if (asprintf (&FullPathMediaPriv,"%s/%s",
PathMedPriv,FileNameMedia) < 0)
Lay_NotEnoughMemoryExit ();
/***** Check if private media file exists *****/
if (Fil_CheckIfPathExists (FullPathMediaPriv))
@ -1551,6 +1551,8 @@ static void Med_ShowJPG (struct Media *Media,
}
else
HTM_Txt (Txt_File_not_found);
free (FullPathMediaPriv);
}
/*****************************************************************************/
@ -1563,7 +1565,8 @@ static void Med_ShowGIF (struct Media *Media,
{
extern const char *Txt_File_not_found;
char FileNameMedia[NAME_MAX + 1];
char FullPathMediaPriv[PATH_MAX + 1];
char *FullPathGIFPriv;
char *FullPathPNGPriv;
char *URL;
char *URL_GIF;
char *URL_PNG;
@ -1572,16 +1575,16 @@ static void Med_ShowGIF (struct Media *Media,
snprintf (FileNameMedia,sizeof (FileNameMedia),
"%s.%s",
Media->Name,Med_Extensions[Med_GIF]);
snprintf (FullPathMediaPriv,sizeof (FullPathMediaPriv), // The animated GIF image
"%s/%s",
PathMedPriv,FileNameMedia);
if (asprintf (&FullPathGIFPriv,"%s/%s", // The animated GIF image
PathMedPriv,FileNameMedia) < 0)
Lay_NotEnoughMemoryExit ();
/***** Check if private media file exists *****/
if (Fil_CheckIfPathExists (FullPathMediaPriv)) // The animated GIF image
if (Fil_CheckIfPathExists (FullPathGIFPriv)) // The animated GIF image
{
/***** Create symbolic link from temporary public directory to private file
in order to gain access to it for showing/downloading *****/
Brw_CreateTmpPublicLinkToPrivateFile (FullPathMediaPriv,FileNameMedia);
Brw_CreateTmpPublicLinkToPrivateFile (FullPathGIFPriv,FileNameMedia);
/***** Create URL pointing to symbolic link *****/
if (asprintf (&URL,"%s/%s/%s",
@ -1596,18 +1599,18 @@ static void Med_ShowGIF (struct Media *Media,
snprintf (FileNameMedia,sizeof (FileNameMedia),
"%s.png",
Media->Name);
snprintf (FullPathMediaPriv,sizeof (FullPathMediaPriv),
"%s/%s",
PathMedPriv,FileNameMedia);
if (asprintf (&FullPathPNGPriv,"%s/%s",
PathMedPriv,FileNameMedia) < 0)
Lay_NotEnoughMemoryExit ();
if (asprintf (&URL_PNG,"%s/%s",URL,FileNameMedia) < 0) // The static PNG image
Lay_NotEnoughMemoryExit ();
/***** Check if private media file exists *****/
if (Fil_CheckIfPathExists (FullPathMediaPriv)) // The static PNG image
if (Fil_CheckIfPathExists (FullPathPNGPriv)) // The static PNG image
{
/***** Create symbolic link from temporary public directory to private file
in order to gain access to it for showing/downloading *****/
Brw_CreateTmpPublicLinkToPrivateFile (FullPathMediaPriv,FileNameMedia);
Brw_CreateTmpPublicLinkToPrivateFile (FullPathPNGPriv,FileNameMedia);
/***** Show static PNG and animated GIF *****/
HTM_DIV_Begin ("class=\"MED_PLAY\""
@ -1630,6 +1633,8 @@ static void Med_ShowGIF (struct Media *Media,
else
HTM_Txt (Txt_File_not_found);
free (FullPathPNGPriv);
/***** Free URLs *****/
free (URL_PNG);
free (URL_GIF);
@ -1637,6 +1642,8 @@ static void Med_ShowGIF (struct Media *Media,
}
else
HTM_Txt (Txt_File_not_found);
free (FullPathGIFPriv);
}
/*****************************************************************************/
@ -1649,16 +1656,16 @@ static void Med_ShowVideo (struct Media *Media,
{
extern const char *Txt_File_not_found;
char FileNameMediaPriv[NAME_MAX + 1];
char FullPathMediaPriv[PATH_MAX + 1];
char *FullPathMediaPriv;
char URL_Video[PATH_MAX + 1];
/***** Build private path to video *****/
snprintf (FileNameMediaPriv,sizeof (FileNameMediaPriv),
"%s.%s",
Media->Name,Med_Extensions[Media->Type]);
snprintf (FullPathMediaPriv,sizeof (FullPathMediaPriv),
"%s/%s",
PathMedPriv,FileNameMediaPriv);
if (asprintf (&FullPathMediaPriv,"%s/%s",
PathMedPriv,FileNameMediaPriv) < 0)
Lay_NotEnoughMemoryExit ();
/***** Check if private media file exists *****/
if (Fil_CheckIfPathExists (FullPathMediaPriv))
@ -1689,6 +1696,8 @@ static void Med_ShowVideo (struct Media *Media,
}
else
HTM_Txt (Txt_File_not_found);
free (FullPathMediaPriv);
}
/*****************************************************************************/
@ -1824,7 +1833,7 @@ void Med_RemoveMediaFromAllRows (unsigned NumMedia,MYSQL_RES *mysql_res)
void Med_RemoveMedia (long MedCod)
{
char PathMedPriv[PATH_MAX + 1];
char FullPathMediaPriv[PATH_MAX + 1];
char *FullPathMediaPriv;
struct Media Media;
/***** Trivial case *****/
@ -1860,34 +1869,37 @@ void Med_RemoveMedia (long MedCod)
{
case Med_JPG:
/***** Remove private JPG file *****/
snprintf (FullPathMediaPriv,sizeof (FullPathMediaPriv),
"%s/%s.%s",
PathMedPriv,Media.Name,Med_Extensions[Med_JPG]);
if (asprintf (&FullPathMediaPriv,"%s/%s.%s",
PathMedPriv,Media.Name,Med_Extensions[Med_JPG]) < 0)
Lay_NotEnoughMemoryExit ();
unlink (FullPathMediaPriv);
free (FullPathMediaPriv);
break;
case Med_GIF:
/***** Remove private GIF file *****/
snprintf (FullPathMediaPriv,sizeof (FullPathMediaPriv),
"%s/%s.%s",
PathMedPriv,Media.Name,Med_Extensions[Med_GIF]);
if (asprintf (&FullPathMediaPriv,"%s/%s.%s",
PathMedPriv,Media.Name,Med_Extensions[Med_GIF]) < 0)
Lay_NotEnoughMemoryExit ();
unlink (FullPathMediaPriv);
free (FullPathMediaPriv);
/***** Remove private PNG file *****/
snprintf (FullPathMediaPriv,sizeof (FullPathMediaPriv),
"%s/%s.png",
PathMedPriv,Media.Name);
if (asprintf (&FullPathMediaPriv,"%s/%s.png",
PathMedPriv,Media.Name) < 0)
Lay_NotEnoughMemoryExit ();
unlink (FullPathMediaPriv);
free (FullPathMediaPriv);
break;
case Med_MP4:
case Med_WEBM:
case Med_OGG:
/***** Remove private video file *****/
snprintf (FullPathMediaPriv,sizeof (FullPathMediaPriv),
"%s/%s.%s",
PathMedPriv,Media.Name,Med_Extensions[Media.Type]);
if (asprintf (&FullPathMediaPriv,"%s/%s.%s",
PathMedPriv,Media.Name,Med_Extensions[Media.Type]) < 0)
Lay_NotEnoughMemoryExit ();
unlink (FullPathMediaPriv);
free (FullPathMediaPriv);
break;
default:

View File

@ -120,7 +120,7 @@ struct Media
};
/***** Parameters used in a form to upload an image/video *****/
#define Med_MAX_BYTES_PARAM_UPLOAD_MEDIA (16 - 1)
#define Med_MAX_BYTES_PARAM_UPLOAD_MEDIA (32 - 1)
struct ParamUploadMedia
{
char Action [Med_MAX_BYTES_PARAM_UPLOAD_MEDIA + 1];

View File

@ -1592,42 +1592,54 @@ static bool Msg_CheckIfReceivedMsgIsDeletedForAllItsRecipients (long MsgCod)
static unsigned Msg_GetNumUnreadMsgs (long FilterCrsCod,const char *FilterFromToSubquery)
{
char SubQuery[Msg_MAX_BYTES_MESSAGES_QUERY + 1];
char *SubQuery;
unsigned NumMsgs;
/***** Get number of unread messages from database *****/
if (FilterCrsCod >= 0) // If origin course selected
{
if (FilterFromToSubquery[0])
sprintf (SubQuery,"SELECT msg_rcv.MsgCod FROM msg_rcv,msg_snt,usr_data"
" WHERE msg_rcv.UsrCod=%ld AND msg_rcv.Open='N'"
" AND msg_rcv.MsgCod=msg_snt.MsgCod"
" AND msg_snt.CrsCod=%ld"
" AND msg_snt.UsrCod=usr_data.UsrCod%s",
Gbl.Usrs.Me.UsrDat.UsrCod,
FilterCrsCod,
FilterFromToSubquery);
{
if (asprintf (&SubQuery,"SELECT msg_rcv.MsgCod FROM msg_rcv,msg_snt,usr_data"
" WHERE msg_rcv.UsrCod=%ld AND msg_rcv.Open='N'"
" AND msg_rcv.MsgCod=msg_snt.MsgCod"
" AND msg_snt.CrsCod=%ld"
" AND msg_snt.UsrCod=usr_data.UsrCod%s",
Gbl.Usrs.Me.UsrDat.UsrCod,
FilterCrsCod,
FilterFromToSubquery) < 0)
Lay_NotEnoughMemoryExit ();
}
else
sprintf (SubQuery,"SELECT msg_rcv.MsgCod FROM msg_rcv,msg_snt"
" WHERE msg_rcv.UsrCod=%ld AND msg_rcv.Open='N'"
" AND msg_rcv.MsgCod=msg_snt.MsgCod"
" AND msg_snt.CrsCod=%ld",
Gbl.Usrs.Me.UsrDat.UsrCod,
FilterCrsCod);
{
if (asprintf (&SubQuery,"SELECT msg_rcv.MsgCod FROM msg_rcv,msg_snt"
" WHERE msg_rcv.UsrCod=%ld AND msg_rcv.Open='N'"
" AND msg_rcv.MsgCod=msg_snt.MsgCod"
" AND msg_snt.CrsCod=%ld",
Gbl.Usrs.Me.UsrDat.UsrCod,
FilterCrsCod) < 0)
Lay_NotEnoughMemoryExit ();
}
}
else // If no origin course selected
{
if (FilterFromToSubquery[0])
sprintf (SubQuery,"SELECT msg_rcv.MsgCod FROM msg_rcv,msg_snt,usr_data"
" WHERE msg_rcv.UsrCod=%ld AND msg_rcv.Open='N'"
" AND msg_rcv.MsgCod=msg_snt.MsgCod"
" AND msg_snt.UsrCod=usr_data.UsrCod%s",
Gbl.Usrs.Me.UsrDat.UsrCod,
FilterFromToSubquery);
{
if (asprintf (&SubQuery,"SELECT msg_rcv.MsgCod FROM msg_rcv,msg_snt,usr_data"
" WHERE msg_rcv.UsrCod=%ld AND msg_rcv.Open='N'"
" AND msg_rcv.MsgCod=msg_snt.MsgCod"
" AND msg_snt.UsrCod=usr_data.UsrCod%s",
Gbl.Usrs.Me.UsrDat.UsrCod,
FilterFromToSubquery) < 0)
Lay_NotEnoughMemoryExit ();
}
else
sprintf (SubQuery,"SELECT MsgCod FROM msg_rcv"
" WHERE UsrCod=%ld AND Open='N'",
Gbl.Usrs.Me.UsrDat.UsrCod);
{
if (asprintf (&SubQuery,"SELECT MsgCod FROM msg_rcv"
" WHERE UsrCod=%ld AND Open='N'",
Gbl.Usrs.Me.UsrDat.UsrCod) < 0)
Lay_NotEnoughMemoryExit ();
}
}
if (Gbl.Msg.FilterContent[0])
@ -1644,6 +1656,8 @@ static unsigned Msg_GetNumUnreadMsgs (long FilterCrsCod,const char *FilterFromTo
"SELECT COUNT(*) FROM (%s) AS T",
SubQuery);
free (SubQuery);
return NumMsgs;
}

View File

@ -1587,7 +1587,7 @@ static void Pho_ComputeAveragePhoto (long DegCod,Usr_Sex_t Sex,Rol_Role_t Role,
char PathRelAvgPhoto[PATH_MAX + 1];
char FileNamePhotoNames[PATH_MAX + 1];
FILE *FilePhotoNames = NULL; // Initialized to avoid warning
char StrCallToProgram[256]; // Call to photo processing program
char StrCallToProgram[3 * (PATH_MAX + 1)]; // Call to photo processing program
int ReturnCode;
/* To compute execution time of this function */
struct timeval tvStartComputingStat;

View File

@ -66,10 +66,8 @@
struct Rep_CurrentTimeUTC
{
char StrDate[10 + 1]; // Example: 2016-10-02
// 1234567890
char StrTime[8 + 1]; // Example: 19:03:49
// 12345678
char StrDate[3 * (Cns_MAX_DECIMAL_DIGITS_INT + 1)]; // Example: 2016-10-02
char StrTime[3 * (Cns_MAX_DECIMAL_DIGITS_INT + 1)]; // Example: 19:03:49
unsigned Date; // Example: 20161002
unsigned Time; // Example: 190349
};
@ -374,8 +372,8 @@ static void Rep_GetCurrentDateTimeUTC (struct Rep_Report *Report)
static void Rep_CreateNewReportFile (struct Rep_Report *Report)
{
char PathUniqueDirL[PATH_MAX + 1];
char PathUniqueDirR[PATH_MAX + 1];
char PathFileReport[PATH_MAX + 1];
char PathUniqueDirR[PATH_MAX + 1 + Cry_BYTES_ENCRYPTED_STR_SHA256_BASE64 + 1];
char PathFileReport[PATH_MAX + 1 + Cry_BYTES_ENCRYPTED_STR_SHA256_BASE64 + 1 + NAME_MAX + 1];
char Permalink[128 +
Cry_BYTES_ENCRYPTED_STR_SHA256_BASE64 +
NAME_MAX];

View File

@ -9193,7 +9193,7 @@ void Usr_PutSelectorNumColsClassPhoto (void)
/********** Build the relative path of a user from his user's code ***********/
/*****************************************************************************/
void Usr_ConstructPathUsr (long UsrCod,char PathUsr[PATH_MAX + 1])
void Usr_ConstructPathUsr (long UsrCod,char PathUsr[PATH_MAX + 1 + Cns_MAX_DECIMAL_DIGITS_LONG + 1])
{
char PathAboveUsr[PATH_MAX + 1];
@ -9207,7 +9207,7 @@ void Usr_ConstructPathUsr (long UsrCod,char PathUsr[PATH_MAX + 1])
Fil_CreateDirIfNotExists (PathAboveUsr);
/***** Path for user *****/
snprintf (PathUsr,PATH_MAX + 1,
snprintf (PathUsr,PATH_MAX + 1 + Cns_MAX_DECIMAL_DIGITS_LONG + 1,
"%s/%ld",
PathAboveUsr,UsrCod);
}

View File

@ -504,7 +504,7 @@ void Usr_SeeStdClassPhotoPrn (void);
void Usr_SeeTchClassPhotoPrn (void);
void Usr_PutSelectorNumColsClassPhoto (void);
void Usr_ConstructPathUsr (long UsrCod,char PathUsr[PATH_MAX + 1]);
void Usr_ConstructPathUsr (long UsrCod,char PathUsr[PATH_MAX + 1 + Cns_MAX_DECIMAL_DIGITS_LONG + 1]);
bool Usr_ChkIfUsrCodExists (long UsrCod);
void Usr_ShowWarningNoUsersFound (Rol_Role_t Role);

View File

@ -256,7 +256,7 @@ static void ZIP_CreateDirCompressionUsr (struct UsrData *UsrDat)
char FullNameAndUsrID[NAME_MAX + 1];
char PathFolderUsrInsideCrs[128 + PATH_MAX + NAME_MAX];
char LinkTmpUsr[PATH_MAX + 1];
char Link[PATH_MAX + 1];
char Link[PATH_MAX + 1 + Cns_MAX_DECIMAL_DIGITS_UINT + 1];
unsigned NumTry;
bool Success;