@@ -3682,6 +3682,32 @@ static void M_LanConfig_Draw (cb_context_t *cbx)
36823682 M_PrintWhite (cbx , basex , 148 , m_return_reason );
36833683}
36843684
3685+ static void validate_LanConfig (void )
3686+ {
3687+ char raw_join_address [countof (lan_config_joinname )];
3688+
3689+ q_strlcpy (raw_join_address , lan_config_joinname , sizeof (lan_config_joinname ));
3690+
3691+ // Check if the resulting raw_join_address is of form 'address:port', in this case overwrite lan_config_portname with it
3692+ size_t nb_parts = 0 ;
3693+
3694+ char * * split_adress = q_strsplit (raw_join_address , ":" , & nb_parts );
3695+
3696+ if (nb_parts == 2 && atoi (split_adress [1 ]) > 0 && atoi (split_adress [1 ]) <= 65535 )
3697+ {
3698+ // overwrite existing port value
3699+ q_strlcpy (lan_config_portname , split_adress [1 ], sizeof (lan_config_portname ));
3700+
3701+ // set join name from the first part:
3702+ q_strlcpy (lan_config_joinname , q_strtrim (split_adress [0 ]), sizeof (lan_config_joinname ));
3703+ }
3704+ else
3705+ {
3706+ q_strlcpy (lan_config_joinname , raw_join_address , sizeof (lan_config_joinname ));
3707+ }
3708+ Mem_Free (split_adress );
3709+ }
3710+
36853711static void M_LanConfig_Key (int key )
36863712{
36873713 int l ;
@@ -3732,6 +3758,7 @@ static void M_LanConfig_Key (int key)
37323758 M_Menu_Search_f (SLIST_INTERNET );
37333759 else if (lan_config_cursor == 3 )
37343760 {
3761+ validate_LanConfig ();
37353762 m_return_state = m_state ;
37363763 m_return_onerror = true;
37373764 IN_Activate ();
@@ -3774,34 +3801,15 @@ static void M_LanConfig_Key (int key)
37743801
37753802 if (joinname_remaining_room_size > 0 )
37763803 {
3777- char raw_join_address [countof (lan_config_joinname )];
3778-
3779- q_strlcpy (raw_join_address , lan_config_joinname , sizeof (lan_config_joinname ));
3780-
37813804 char * clipboard_text = PL_GetClipboardData ();
37823805
37833806 // append the existing clipboard text
37843807 if (clipboard_text )
3785- q_strlcpy (raw_join_address + current_joinname_size , clipboard_text , joinname_remaining_room_size );
3808+ q_strlcpy (lan_config_joinname + current_joinname_size , clipboard_text , joinname_remaining_room_size );
37863809
37873810 // Check if the resulting raw_join_address is of form 'address:port', in this case overwrite lan_config_portname with it
3788- size_t nb_parts = 0 ;
3789-
3790- char * * split_adress = q_strsplit (raw_join_address , ":" , & nb_parts );
3811+ validate_LanConfig ();
37913812
3792- if (nb_parts == 2 && atoi (split_adress [1 ]) > 0 && atoi (split_adress [1 ]) <= 65535 )
3793- {
3794- // overwrite existing port
3795- q_strlcpy (lan_config_portname , split_adress [1 ], sizeof (lan_config_portname ));
3796-
3797- // set join name from the first part:
3798- q_strlcpy (lan_config_joinname , q_strtrim (split_adress [0 ]), sizeof (lan_config_joinname ));
3799- }
3800- else
3801- {
3802- q_strlcpy (lan_config_joinname , raw_join_address , sizeof (lan_config_joinname ));
3803- }
3804- Mem_Free (split_adress );
38053813 Mem_Free (clipboard_text );
38063814 } // end if enough room to Ctrl+v
38073815 }
0 commit comments