Sergey Alirzaev 5 tahun lalu
induk
melakukan
78f8227a73

+ 2 - 1
modules/SSH_Server/server.c

@@ -17,6 +17,7 @@
  * You should have received a copy of the GNU General Public License
  * along with wolfSSH.  If not, see <http://www.gnu.org/licenses/>.
  */
+#pragma GCC diagnostic error "-Wall"
 
 #define WOLFSSH_TEST_SERVER
 #define WOLFSSH_TEST_THREADING
@@ -271,7 +272,7 @@ static int wsUserAuth(byte authType, WS_UserAuthData* authData, void* ctx)
 
     // the incoming password is not zero-terminated
     char password[MAX_WEB_PASSWD_LEN];
-    strncpy(password, authData->sf.password.password, sizeof(password));
+    strncpy(password, (char *)authData->sf.password.password, sizeof(password));
     password[min(MAX_WEB_PASSWD_LEN - 1, authData->sf.password.passwordSz)] = 0;
     *user_id = cli_auth_user(authData->username, password);
     if (*user_id != MAX_USER_LEVELS) {

+ 1 - 0
modules/SSH_Server/user_settings.h

@@ -98,6 +98,7 @@ enum {
 #define WFIONREAD FIONREAD
 static inline void ws_Ioctl(int fd, int flag, int* ret)
 {
+    (void)flag;
     int status;
     uint32_t bytesSz;
 

+ 54 - 118
modules/Telnet_Server/telnet_server.c

@@ -5,6 +5,8 @@
  *      Author: balbekova
  */
 
+#pragma GCC diagnostic error "-Wall"
+
 /* Standard includes. */
 #include <string.h>
 
@@ -172,17 +174,13 @@ typedef struct{
 	cli_state_t *cli_state;
 } telnetd_state_t;
 
-static portBASE_TYPE FreeRTOS_CLIAuthProcess( int8_t * pcWriteBuffer, telnetd_state_t *s  );
-static portBASE_TYPE FreeRTOS_ChangePWDProcess( int8_t * pcWriteBuffer, telnetd_state_t *s  );
-
 telnetd_state_t auth_tlnt_srvr_param[NUMBER_TELNET_CONNECT];
 
 uint8_t type_term = 0;
 
 static int32_t lSocket;
 static int8_t *pcOutputString;
-static bool flagTelnetChange = false;
-static struct fd_set master_set, read_set, write_set;
+static struct fd_set master_set, read_set;
 static int max_sd;
 static struct sockaddr_in sa;
 
@@ -384,7 +382,7 @@ static void newdata(telnetd_state_t *s)
 		if(c == TELNET_IAC) {
 			s->state = STATE_IAC;
 		} else {
-			cli_getchar(s, c);
+			cli_getchar(s->cli_state, c);
 		}
 		break;
 	}
@@ -410,81 +408,81 @@ static void stop_server(void) {
 /* Start server */
 static bool start_server(uint16_t port)
 {
-		int res;
+	int res;
 
-		lSocket = socket(PF_INET, SOCK_STREAM, 0);
+	lSocket = socket(PF_INET, SOCK_STREAM, 0);
 
-		if (lSocket < 0) {
-			DBG printf("Socket create failed\r\n");
-			return false;
-		}
+	if (lSocket < 0) {
+		DBG printf("Socket create failed\r\n");
+		return false;
+	}
 
-		res = fcntl(lSocket, F_SETFL, O_NONBLOCK);
-		if (res < 0) {
-				DBG printf("fcntl() failed");
-				closesocket(lSocket);
-				return false;
-		}
+	res = fcntl(lSocket, F_SETFL, O_NONBLOCK);
+	if (res < 0) {
+			DBG printf("fcntl() failed");
+			closesocket(lSocket);
+			return false;
+	}
 
-		memset(&sa, 0, sizeof(struct sockaddr_in));
-		sa.sin_family = AF_INET;
-		sa.sin_addr.s_addr = IPADDR_ANY;
-		sa.sin_port = htons(port);
+	memset(&sa, 0, sizeof(struct sockaddr_in));
+	sa.sin_family = AF_INET;
+	sa.sin_addr.s_addr = IPADDR_ANY;
+	sa.sin_port = htons(port);
 
-		if (bind(lSocket, (struct sockaddr *)&sa, sizeof(sa)) == -1)
-		{
-				DBG printf("Bind to port %d failed\n", port);
-				closesocket(lSocket);
-				return false;
-		}
+	if (bind(lSocket, (struct sockaddr *)&sa, sizeof(sa)) == -1)
+	{
+			DBG printf("Bind to port %d failed\n", port);
+			closesocket(lSocket);
+			return false;
+	}
 
-		res = listen(lSocket, 20);
-		if (res < 0) {
-				DBG printf("Listen failed failed\r\n");
-				closesocket(lSocket);
-				return false;
-		}
+	res = listen(lSocket, 20);
+	if (res < 0) {
+			DBG printf("Listen failed failed\r\n");
+			closesocket(lSocket);
+			return false;
+	}
 
-		FD_ZERO(&master_set);
-		max_sd = lSocket;
-		FD_SET(lSocket, &master_set);
+	FD_ZERO(&master_set);
+	max_sd = lSocket;
+	FD_SET(lSocket, &master_set);
 
-		DBG printf("Port %d opened\n", port);
+	DBG printf("Port %d opened\n", port);
 
-		return true;
+	return true;
 }
 
 
 void vBasicSocketsCommandInterpreterTask( void *pvParameters )
 {
-	int32_t lBytes, lAddrLen = sizeof( struct sockaddr_in );
-	struct sockaddr_in sLocalAddr;
-	struct sockaddr_in client_addr;
+	int32_t lBytes;
 	int new_sd;
-		int desc_ready, rc;
-		struct timeval timeout;
-		uint16_t port;
-		bool enabled;
-		bool firstrun = true;
+	int desc_ready, rc;
+	struct timeval timeout;
+	uint16_t port;
+	bool enabled;
+	bool firstrun = true;
 #ifdef HARDWARE_BT6709
-		struct sockaddr_in sa_temp;
-		socklen_t len;
+	struct sockaddr_in sa_temp;
+	socklen_t len;
 #endif
-		static int active_sd = -1;
-		static uint8_t cnt_conn = 0;
-		uint8_t cur_cnt = 0;
+#if TCP_DROP_PREV_CONNECTION
+	static int active_sd = -1;
+#endif
+	static uint8_t cnt_conn = 0;
+	uint8_t cur_cnt = 0;
 
-		FD_ZERO(&master_set);
+	FD_ZERO(&master_set);
 
 	timeout.tv_sec = 5;
 	timeout.tv_usec = 0;
 
 	( void ) pvParameters;
 	pcOutputString = FreeRTOS_CLIGetOutputBuffer();
-		enabled = sSettings.sTelnet.TelnetEnable;
-		port = ( uint16_t ) sSettings.sTelnet.port;
+	enabled = sSettings.sTelnet.TelnetEnable;
+	port = ( uint16_t ) sSettings.sTelnet.port;
 
-		while (1) {
+	while (1) {
 		/* Check if network settings was changed */
 		if ((sSettings.sTelnet.port != port) ||
 				(sSettings.sTelnet.TelnetEnable != enabled) ||
@@ -648,7 +646,6 @@ void vBasicSocketsCommandInterpreterTask( void *pvParameters )
 						/* connection                                 */
 					} while (new_sd != -1);
 				}
-
 				/* This is not the listening socket, therefore an   */
 				/* existing connection must be readable             */
 				else {
@@ -732,64 +729,3 @@ void vBasicSocketsCommandInterpreterTask( void *pvParameters )
 void telnet_server_init(void) {
 	xTaskCreate(vBasicSocketsCommandInterpreterTask, ( char * ) "vBasicSocketsCommandInterpreterTask", 8*configMINIMAL_STACK_SIZE , NULL, tskIDLE_PRIORITY + 1, NULL);
 }
-
-static portBASE_TYPE FreeRTOS_CLIAuthProcess( int8_t * pcWriteBuffer, telnetd_state_t *s  )
-{
-	portBASE_TYPE xReturn = pdTRUE;
-	uint32_t len;
-	uint8_t valueLen, user_id;
-	char WebPassword[MAX_WEB_PASSWD_LEN];
-	char WebLogin[MAX_WEB_LOGIN_LEN];
-	char password[cmdMAX_INPUT_SIZE] = { 0 };
-	const int8_t * const pcPSWHeader = ( int8_t * ) "\r\npassword:";
-	const int8_t * const pcLoginHeader = ( int8_t * ) "\r\nlogin:";
-
-	memset(pcWriteBuffer, 0, configCOMMAND_INT_MAX_OUTPUT_SIZE);
-
-	switch(s->telnetState){
-	case TELNET_AUTH:
-		memset(s->login, 0, MAX_WEB_LOGIN_LEN);
-		len = strlen(s->buf);
-		if(len < MAX_WEB_LOGIN_LEN){
-			strncpy(s->login, s->buf, len);
-			sendopt(s, TELNET_WILL, TELOPT_ECHO);
-			strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcPSWHeader, strlen( ( char * ) pcPSWHeader ) );
-			s->telnetState = TELNET_AUTH_PASSW;
-			xReturn = pdTRUE;
-		}
-		else{
-			xReturn = pdFALSE;
-		}
-		break;
-	case TELNET_AUTH_PASSW:
-		sendopt(s, TELNET_WONT, TELOPT_ECHO);
-		memset(name_login_telnet, 0, 50);
-		memset(password, 0, MAX_WEB_PASSWD_LEN);
-		len = strlen(s->buf);
-		strncpy(password, s->buf, len);
-		user_id = cli_auth_user(s->login, password);
-		xReturn = user_id == MAX_USER_LEVELS ? pdFALSE : pdTRUE;
-		break;
-	default:
-		xReturn = pdFALSE;
-		s->telnetState = TELNET_AUTH;
-		return xReturn;
-		break;
-	}
-
-	if(xReturn == pdFALSE){
-		s->telnetState = TELNET_AUTH;
-		if(s->login_err < 4){
-			s->login_err ++;
-			strcpy( ( char * ) pcWriteBuffer, "\r\nОшибка авторизации\r\n" );
-			strncat( ( char * ) pcWriteBuffer, ( const char * ) pcLoginHeader, strlen( ( char * ) pcLoginHeader ) );
-			xReturn = pdTRUE;
-		}
-		else{
-			s->login_err = 0;
-			xReturn = pdFALSE;
-		}
-	}
-
-	return xReturn;
-}

+ 11 - 9
modules/cli/cli.c

@@ -1,3 +1,5 @@
+#pragma GCC diagnostic error "-Wall"
+
 #include "cli.h"
 #include <string.h>
 #include "FreeRTOS.h"
@@ -23,13 +25,13 @@
   */
 extern SETTINGS_t sSettings;
 
-static const int8_t * const pcEndOfCommandOutputString = ( int8_t * ) "\r\n[Нажмите клавишу ENTER для повторного выполнения предыдущей команды]\r\n>";
+static const char * const pcEndOfCommandOutputString = "\r\n[Нажмите клавишу ENTER для повторного выполнения предыдущей команды]\r\n>";
 extern int8_t cOutputBuffer[ configCOMMAND_INT_MAX_OUTPUT_SIZE ];
 cli_state_t cli_states[MAX_SESSIONS];
 
 void SensorInfoTimerCallback(TimerHandle_t pxTimer) {
 	portBASE_TYPE xReturned = pdTRUE;
-	uint8_t num_timer;
+	uint8_t num_timer = 0;
 	for (uint8_t i = 0; i < array_len(cli_states); i ++) {
 		if(pxTimer == cli_states[i].RepeatSensorInfoTimer){
 			num_timer = i;
@@ -40,8 +42,8 @@ void SensorInfoTimerCallback(TimerHandle_t pxTimer) {
 		/* Ensure there is not a string lingering in
 		the output buffer. */
 		cOutputBuffer[ 0 ] = 0x00;
-		xReturned = FreeRTOS_CLIProcessCommand(&cli_states[num_timer], "sensor info", cOutputBuffer, configCOMMAND_INT_MAX_OUTPUT_SIZE);
-		cli_states[num_timer].send(cli_states[num_timer].num_connect, cOutputBuffer, strlen( ( const char * ) cOutputBuffer ));
+		xReturned = FreeRTOS_CLIProcessCommand(&cli_states[num_timer], (int8_t *)"sensor info", cOutputBuffer, configCOMMAND_INT_MAX_OUTPUT_SIZE);
+		cli_states[num_timer].send(cli_states[num_timer].num_connect, (char *)cOutputBuffer, strlen( ( const char * ) cOutputBuffer ));
 
 	} while( xReturned != pdFALSE );
 	xTimerStart(cli_states[num_timer].RepeatSensorInfoTimer, 0);
@@ -204,7 +206,7 @@ static void cli_input(cli_state_t *s)
 		case CLI_AUTH:
 		case CLI_AUTH_PASSW:
 			if(FreeRTOS_CLIAuthProcess(cOutputBuffer, s)){
-				s->send(s->num_connect, cOutputBuffer, strlen( ( const char * ) cOutputBuffer ));
+				s->send(s->num_connect, (char *)cOutputBuffer, strlen( ( const char * ) cOutputBuffer ));
 				memset( s->buf, 0x00, cmdMAX_INPUT_SIZE );
 			}
 			else{
@@ -247,9 +249,9 @@ static void cli_input(cli_state_t *s)
 					cOutputBuffer[ 0 ] = 0x00;
 					// FIXME telnetState should go into the command processor
 					//input_state = s->input_state;
-					xReturned = FreeRTOS_CLIProcessCommand(s, s->buf, cOutputBuffer, configCOMMAND_INT_MAX_OUTPUT_SIZE );
+					xReturned = FreeRTOS_CLIProcessCommand(s, (int8_t *)s->buf, (int8_t *)cOutputBuffer, configCOMMAND_INT_MAX_OUTPUT_SIZE );
 					//s->input_state = input_state;
-					s->send(s->num_connect, cOutputBuffer, strlen( ( const char * ) cOutputBuffer ));
+					s->send(s->num_connect, (char *)cOutputBuffer, strlen( ( const char * ) cOutputBuffer ));
 
 				} while( xReturned != pdFALSE );
 
@@ -266,14 +268,14 @@ static void cli_input(cli_state_t *s)
 					strcpy( s->prev_cmd, s->buf );
 					memset( s->buf, 0x00, cmdMAX_INPUT_SIZE );
 					if(s->input_state != CLI_CHANGE_PWD)
-						s->send(s->num_connect, pcEndOfCommandOutputString, strlen( ( const char * ) pcEndOfCommandOutputString ));
+						s->send(s->num_connect, (char *)pcEndOfCommandOutputString, strlen( ( const char * ) pcEndOfCommandOutputString ));
 				}
 			}
 			break;
 		case CLI_CHANGE_PWD:
 		case CLI_CHANGE_PWD_ACK:
 			FreeRTOS_ChangePWDProcess(cOutputBuffer, s);
-			s->send(s->num_connect, cOutputBuffer, strlen( ( const char * ) cOutputBuffer ));
+			s->send(s->num_connect, (char *)cOutputBuffer, strlen( ( const char * ) cOutputBuffer ));
 			memset( s->buf, 0x00, cmdMAX_INPUT_SIZE );
 			break;
 

+ 1 - 1
thirdparty/TinyStdio/tinystdio.h

@@ -201,7 +201,7 @@ int tfp_sprintf(char *str, const char *fmt, ...) \
 void init_printf(void *putp, putcf putf);
 void tfp_printf(char *fmt, ...) _TFP_SPECIFY_PRINTF_FMT(1, 2);
 # if TINYPRINTF_OVERRIDE_LIBC
-#  define printf tfp_printf
+#  define printf(...) tfp_printf(__VA_ARGS__)
 # endif
 #endif