From b1fc6ecd7219d266817808deb9a1c90e1aa28d27 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antonio=20Ca=C3=B1as=20Vargas?= Date: Sun, 24 Jul 2016 12:17:03 +0200 Subject: [PATCH] Version 15.243.2 --- swad_action.c | 4 +- swad_changelog.h | 6 ++- swad_web_service.c | 94 ++++++++++++++++++++++++---------------------- 3 files changed, 55 insertions(+), 49 deletions(-) diff --git a/swad_action.c b/swad_action.c index a8e3c23c1..1d8b03551 100644 --- a/swad_action.c +++ b/swad_action.c @@ -2658,7 +2658,7 @@ struct Act_Actions Act_Actions[Act_NUM_ACTIONS] = /* ActSeeNtf */{ 990, 0,TabMsg,ActSeeNtf ,0x1FE,0x1FE,0x1FE,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Ntf_ShowMyNotifications ,"bell64x64.gif" }, /* ActSeeAnn */{1235, 1,TabMsg,ActSeeAnn ,0x1FF,0x1FF,0x1FF,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Ann_ShowAllAnnouncements ,"note64x64.gif" }, /* ActSeeAllNot */{ 762, 2,TabMsg,ActSeeAllNot ,0x1FF,0x1FF,0x000,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Not_ListFullNotices ,"note64x64.gif" }, - /* ActReqMsgUsr */{ 26, 3,TabMsg,ActReqMsgUsr ,0x1FC,0x1FC,0x1FC,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Msg_FormMsgUsrs ,"editnewmsg64x64.gif" }, + /* ActReqMsgUsr */{ 26, 3,TabMsg,ActReqMsgUsr ,0x1FE,0x1FE,0x1FE,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Msg_FormMsgUsrs ,"editnewmsg64x64.gif" }, /* ActSeeRcvMsg */{ 3, 4,TabMsg,ActSeeRcvMsg ,0x1FE,0x1FE,0x1FE,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Msg_ShowRecMsgs ,"recmsg64x64.gif" }, /* ActSeeSntMsg */{ 70, 5,TabMsg,ActSeeSntMsg ,0x1FE,0x1FE,0x1FE,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Msg_ShowSntMsgs ,"sntmsg64x64.gif" }, /* ActMaiStd */{ 100, 6,TabMsg,ActMaiStd ,0x110,0x100,0x000,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Mai_ListEMails ,"email64x64.gif" }, @@ -2681,7 +2681,7 @@ struct Act_Actions Act_Actions[Act_NUM_ACTIONS] = /* ActSeeNewNtf */{ 991,-1,TabMsg,ActSeeNtf ,0x1FE,0x1FE,0x1FE,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Ntf_ShowMyNotifications ,NULL}, /* ActMrkNtfSee */{1146,-1,TabMsg,ActSeeNtf ,0x1FE,0x1FE,0x1FE,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Ntf_MarkAllNotifAsSeen ,NULL}, - /* ActRcvMsgUsr */{ 27,-1,TabMsg,ActReqMsgUsr ,0x1FC,0x1FC,0x1FC,Act_CONTENT_DATA,Act_MAIN_WINDOW,NULL ,Msg_RecMsgFromUsr ,NULL}, + /* ActRcvMsgUsr */{ 27,-1,TabMsg,ActReqMsgUsr ,0x1FE,0x1FE,0x1FE,Act_CONTENT_DATA,Act_MAIN_WINDOW,NULL ,Msg_RecMsgFromUsr ,NULL}, /* ActReqDelAllSntMsg*/{ 604,-1,TabMsg,ActSeeSntMsg ,0x1FE,0x1FE,0x1FE,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Msg_ReqDelAllSntMsgs ,NULL}, /* ActReqDelAllRcvMsg*/{ 593,-1,TabMsg,ActSeeRcvMsg ,0x1FE,0x1FE,0x1FE,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Msg_ReqDelAllRecMsgs ,NULL}, /* ActDelAllSntMsg */{ 434,-1,TabMsg,ActSeeSntMsg ,0x1FE,0x1FE,0x1FE,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Msg_DelAllSntMsgs ,NULL}, diff --git a/swad_changelog.h b/swad_changelog.h index cd8846a65..1875cacb0 100644 --- a/swad_changelog.h +++ b/swad_changelog.h @@ -138,14 +138,16 @@ /****************************** Public constants *****************************/ /*****************************************************************************/ -#define Log_PLATFORM_VERSION "SWAD 15.243 (2016-07-20)" +#define Log_PLATFORM_VERSION "SWAD 15.243.2 (2016-07-24)" #define CSS_FILE "swad15.229.css" #define JS_FILE "swad15.238.1.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 15.243: Jul 20, 2016 Fixed bug in web service (getNotifications). + Version 15.243.2: Jul 24, 2016 Guests now have permission to write messages. (? lines) + Version 15.243.1: Jul 21, 2016 Fixed bugs in web service. (203962 lines) + Version 15.243: Jul 20, 2016 Fixed bug in web service (getNotifications). Code refactoring in web service. (203956 lines) Version 15.242.6: Jul 15, 2016 Fixed bug in creation of database table tst_config. (203850 lines) Version 15.242.5: Jul 15, 2016 Fixed bug in user's registration. (203849 lines) diff --git a/swad_web_service.c b/swad_web_service.c index 0e790f8e6..4783c3dcc 100644 --- a/swad_web_service.c +++ b/swad_web_service.c @@ -811,9 +811,9 @@ int swad__loginByUserPasswordKey (struct soap *soap, loginByUserPasswordKeyOut->wsKey = (char *) soap_malloc (Gbl.soap,256); loginByUserPasswordKeyOut->userNickname = (char *) soap_malloc (Gbl.soap,Nck_MAX_LENGTH_NICKNAME_WITHOUT_ARROBA+1); loginByUserPasswordKeyOut->userID = (char *) soap_malloc (Gbl.soap,256); - loginByUserPasswordKeyOut->userFirstname = (char *) soap_malloc (Gbl.soap,256); - loginByUserPasswordKeyOut->userSurname1 = (char *) soap_malloc (Gbl.soap,256); - loginByUserPasswordKeyOut->userSurname2 = (char *) soap_malloc (Gbl.soap,256); + loginByUserPasswordKeyOut->userFirstname = (char *) soap_malloc (Gbl.soap,Usr_MAX_BYTES_NAME_SPEC_CHAR+1); + loginByUserPasswordKeyOut->userSurname1 = (char *) soap_malloc (Gbl.soap,Usr_MAX_BYTES_NAME_SPEC_CHAR+1); + loginByUserPasswordKeyOut->userSurname2 = (char *) soap_malloc (Gbl.soap,Usr_MAX_BYTES_NAME_SPEC_CHAR+1); loginByUserPasswordKeyOut->userPhoto = (char *) soap_malloc (Gbl.soap,PATH_MAX+1); loginByUserPasswordKeyOut->userBirthday = (char *) soap_malloc (Gbl.soap,8+2+2+1); @@ -907,15 +907,18 @@ int swad__loginByUserPasswordKey (struct soap *soap, strncpy (loginByUserPasswordKeyOut->userNickname,Gbl.Usrs.Me.UsrDat.Nickname,Nck_MAX_LENGTH_NICKNAME_WITHOUT_ARROBA); loginByUserPasswordKeyOut->userNickname[Nck_MAX_LENGTH_NICKNAME_WITHOUT_ARROBA] = '\0'; - strncpy (loginByUserPasswordKeyOut->userID,Gbl.Usrs.Me.UsrDat.IDs.List[0].ID,255); // TODO: What user's ID? - loginByUserPasswordKeyOut->userID[255] = '\0'; + if (Gbl.Usrs.Me.UsrDat.IDs.Num) + { + strncpy (loginByUserPasswordKeyOut->userID,Gbl.Usrs.Me.UsrDat.IDs.List[0].ID,255); // TODO: What user's ID? + loginByUserPasswordKeyOut->userID[255] = '\0'; + } - strncpy (loginByUserPasswordKeyOut->userSurname1,Gbl.Usrs.Me.UsrDat.Surname1,255); - loginByUserPasswordKeyOut->userSurname1[255] = '\0'; - strncpy (loginByUserPasswordKeyOut->userSurname2,Gbl.Usrs.Me.UsrDat.Surname2,255); - loginByUserPasswordKeyOut->userSurname2[255] = '\0'; - strncpy (loginByUserPasswordKeyOut->userFirstname,Gbl.Usrs.Me.UsrDat.FirstName,255); - loginByUserPasswordKeyOut->userFirstname[255] = '\0'; + strncpy (loginByUserPasswordKeyOut->userSurname1,Gbl.Usrs.Me.UsrDat.Surname1,Usr_MAX_BYTES_NAME_SPEC_CHAR); + loginByUserPasswordKeyOut->userSurname1[Usr_MAX_BYTES_NAME_SPEC_CHAR] = '\0'; + strncpy (loginByUserPasswordKeyOut->userSurname2,Gbl.Usrs.Me.UsrDat.Surname2,Usr_MAX_BYTES_NAME_SPEC_CHAR); + loginByUserPasswordKeyOut->userSurname2[Usr_MAX_BYTES_NAME_SPEC_CHAR] = '\0'; + strncpy (loginByUserPasswordKeyOut->userFirstname,Gbl.Usrs.Me.UsrDat.FirstName,Usr_MAX_BYTES_NAME_SPEC_CHAR); + loginByUserPasswordKeyOut->userFirstname[Usr_MAX_BYTES_NAME_SPEC_CHAR] = '\0'; Pho_BuildLinkToPhoto (&Gbl.Usrs.Me.UsrDat,PhotoURL); strncpy (loginByUserPasswordKeyOut->userPhoto,PhotoURL,PATH_MAX); @@ -970,9 +973,9 @@ int swad__loginBySessionKey (struct soap *soap, loginBySessionKeyOut->wsKey = (char *) soap_malloc (Gbl.soap,256); loginBySessionKeyOut->userNickname = (char *) soap_malloc (Gbl.soap,Nck_MAX_LENGTH_NICKNAME_WITHOUT_ARROBA+1); loginBySessionKeyOut->userID = (char *) soap_malloc (Gbl.soap,256); - loginBySessionKeyOut->userFirstname = (char *) soap_malloc (Gbl.soap,256); - loginBySessionKeyOut->userSurname1 = (char *) soap_malloc (Gbl.soap,256); - loginBySessionKeyOut->userSurname2 = (char *) soap_malloc (Gbl.soap,256); + loginBySessionKeyOut->userFirstname = (char *) soap_malloc (Gbl.soap,Usr_MAX_BYTES_NAME_SPEC_CHAR+1); + loginBySessionKeyOut->userSurname1 = (char *) soap_malloc (Gbl.soap,Usr_MAX_BYTES_NAME_SPEC_CHAR+1); + loginBySessionKeyOut->userSurname2 = (char *) soap_malloc (Gbl.soap,Usr_MAX_BYTES_NAME_SPEC_CHAR+1); loginBySessionKeyOut->userPhoto = (char *) soap_malloc (Gbl.soap,PATH_MAX+1); loginBySessionKeyOut->userBirthday = (char *) soap_malloc (Gbl.soap,8+2+2+1); loginBySessionKeyOut->degreeName = (char *) soap_malloc (Gbl.soap,256); @@ -990,7 +993,7 @@ int swad__loginBySessionKey (struct soap *soap, loginBySessionKeyOut->userSurname2[0] = '\0'; loginBySessionKeyOut->userPhoto[0] = '\0'; loginBySessionKeyOut->userBirthday[0] = '\0'; - loginBySessionKeyOut->userRole = 0; // unknown + loginBySessionKeyOut->userRole = Rol_UNKNOWN; loginBySessionKeyOut->degreeName[0] = '\0'; loginBySessionKeyOut->courseName[0] = '\0'; @@ -1058,15 +1061,18 @@ int swad__loginBySessionKey (struct soap *soap, strncpy (loginBySessionKeyOut->userNickname,Gbl.Usrs.Me.UsrDat.Nickname,Nck_MAX_LENGTH_NICKNAME_WITHOUT_ARROBA); loginBySessionKeyOut->userNickname[Nck_MAX_LENGTH_NICKNAME_WITHOUT_ARROBA] = '\0'; - strncpy (loginBySessionKeyOut->userID,Gbl.Usrs.Me.UsrDat.IDs.List[0].ID,255); // TODO: What user's ID? - loginBySessionKeyOut->userID[255] = '\0'; + if (Gbl.Usrs.Me.UsrDat.IDs.Num) + { + strncpy (loginBySessionKeyOut->userID,Gbl.Usrs.Me.UsrDat.IDs.List[0].ID,255); // TODO: What user's ID? + loginBySessionKeyOut->userID[255] = '\0'; + } - strncpy (loginBySessionKeyOut->userSurname1,Gbl.Usrs.Me.UsrDat.Surname1,255); - loginBySessionKeyOut->userSurname1[255] = '\0'; - strncpy (loginBySessionKeyOut->userSurname2,Gbl.Usrs.Me.UsrDat.Surname2,255); - loginBySessionKeyOut->userSurname2[255] = '\0'; - strncpy (loginBySessionKeyOut->userFirstname,Gbl.Usrs.Me.UsrDat.FirstName,255); - loginBySessionKeyOut->userFirstname[255] = '\0'; + strncpy (loginBySessionKeyOut->userSurname1,Gbl.Usrs.Me.UsrDat.Surname1,Usr_MAX_BYTES_NAME_SPEC_CHAR); + loginBySessionKeyOut->userSurname1[Usr_MAX_BYTES_NAME_SPEC_CHAR] = '\0'; + strncpy (loginBySessionKeyOut->userSurname2,Gbl.Usrs.Me.UsrDat.Surname2,Usr_MAX_BYTES_NAME_SPEC_CHAR); + loginBySessionKeyOut->userSurname2[Usr_MAX_BYTES_NAME_SPEC_CHAR] = '\0'; + strncpy (loginBySessionKeyOut->userFirstname,Gbl.Usrs.Me.UsrDat.FirstName,Usr_MAX_BYTES_NAME_SPEC_CHAR); + loginBySessionKeyOut->userFirstname[Usr_MAX_BYTES_NAME_SPEC_CHAR] = '\0'; Pho_BuildLinkToPhoto (&Gbl.Usrs.Me.UsrDat,PhotoURL); strncpy (loginBySessionKeyOut->userPhoto,PhotoURL,PATH_MAX); @@ -1082,19 +1088,9 @@ int swad__loginBySessionKey (struct soap *soap, loginBySessionKeyOut->wsKey); } else - { - loginBySessionKeyOut->userCode = -1; - loginBySessionKeyOut->userID = NULL; - loginBySessionKeyOut->userSurname1 = NULL; - loginBySessionKeyOut->userSurname2 = NULL; - loginBySessionKeyOut->userFirstname = NULL; - loginBySessionKeyOut->userPhoto = NULL; - loginBySessionKeyOut->userRole = 0; - return soap_receiver_fault (Gbl.soap, "Bad session identifier", "Session identifier does not exist in database"); - } } /*****************************************************************************/ @@ -2052,19 +2048,19 @@ static void Svc_CopyUsrData (struct swad__user *Usr,struct UsrData *UsrDat,bool strcpy (Usr->userID,"********"); /* Copy user's surname1 */ - Usr->userSurname1 = (char *) soap_malloc (Gbl.soap,256); - strncpy (Usr->userSurname1,UsrDat->Surname1,255); - Usr->userSurname1[255] = '\0'; + Usr->userSurname1 = (char *) soap_malloc (Gbl.soap,Usr_MAX_BYTES_NAME_SPEC_CHAR+1); + strncpy (Usr->userSurname1,UsrDat->Surname1,Usr_MAX_BYTES_NAME_SPEC_CHAR); + Usr->userSurname1[Usr_MAX_BYTES_NAME_SPEC_CHAR] = '\0'; /* Copy user's surname2 */ - Usr->userSurname2 = (char *) soap_malloc (Gbl.soap,256); - strncpy (Usr->userSurname2,UsrDat->Surname2,255); - Usr->userSurname2[255] = '\0'; + Usr->userSurname2 = (char *) soap_malloc (Gbl.soap,Usr_MAX_BYTES_NAME_SPEC_CHAR+1); + strncpy (Usr->userSurname2,UsrDat->Surname2,Usr_MAX_BYTES_NAME_SPEC_CHAR); + Usr->userSurname2[Usr_MAX_BYTES_NAME_SPEC_CHAR] = '\0'; /* Copy user's first name */ - Usr->userFirstname = (char *) soap_malloc (Gbl.soap,256); - strncpy (Usr->userFirstname,UsrDat->FirstName,255); - Usr->userFirstname[255] = '\0'; + Usr->userFirstname = (char *) soap_malloc (Gbl.soap,Usr_MAX_BYTES_NAME_SPEC_CHAR+1); + strncpy (Usr->userFirstname,UsrDat->FirstName,Usr_MAX_BYTES_NAME_SPEC_CHAR); + Usr->userFirstname[Usr_MAX_BYTES_NAME_SPEC_CHAR] = '\0'; /* User's photo URL */ Pho_BuildLinkToPhoto (UsrDat,PhotoURL); @@ -2532,9 +2528,17 @@ int swad__getAttendanceUsers (struct soap *soap, getAttendanceUsersOut->usersArray.__ptr[NumRow].userNickname = (char *) soap_malloc (Gbl.soap,Length + 1); strcpy (getAttendanceUsersOut->usersArray.__ptr[NumRow].userNickname,Gbl.Usrs.Other.UsrDat.Nickname); - Length = strlen (Gbl.Usrs.Other.UsrDat.IDs.List[0].ID); // TODO: What user's ID? - getAttendanceUsersOut->usersArray.__ptr[NumRow].userID = (char *) soap_malloc (Gbl.soap,Length + 1); - strcpy (getAttendanceUsersOut->usersArray.__ptr[NumRow].userID,Gbl.Usrs.Other.UsrDat.IDs.List[0].ID); + if (Gbl.Usrs.Other.UsrDat.IDs.Num) + { + Length = strlen (Gbl.Usrs.Other.UsrDat.IDs.List[0].ID); // TODO: What user's ID? + getAttendanceUsersOut->usersArray.__ptr[NumRow].userID = (char *) soap_malloc (Gbl.soap,Length + 1); + strcpy (getAttendanceUsersOut->usersArray.__ptr[NumRow].userID,Gbl.Usrs.Other.UsrDat.IDs.List[0].ID); + } + else + { + getAttendanceUsersOut->usersArray.__ptr[NumRow].userID = (char *) soap_malloc (Gbl.soap,1); + getAttendanceUsersOut->usersArray.__ptr[NumRow].userID[0] = '\0'; + } Length = strlen (Gbl.Usrs.Other.UsrDat.Surname1); getAttendanceUsersOut->usersArray.__ptr[NumRow].userSurname1 = (char *) soap_malloc (Gbl.soap,Length + 1);