extern void rtw_msleep_os(int ms);
extern void rtw_usleep_os(int us);
-extern u32 rtw_atoi(u8* s);
-
#ifdef DBG_DELAY_OS
#define rtw_mdelay_os(ms) _rtw_mdelay_os((ms), __FUNCTION__, __LINE__)
#define rtw_udelay_os(ms) _rtw_udelay_os((ms), __FUNCTION__, __LINE__)
}
}
-u32 rtw_atoi(u8* s)
-{
-
- int num=0,flag=0;
- int i;
- for(i=0;i<=strlen(s);i++)
- {
- if(s[i] >= '0' && s[i] <= '9')
- num = num * 10 + s[i] -'0';
- else if(s[0] == '-' && i==0)
- flag =1;
- else
- break;
- }
-
- if(flag == 1)
- num = num * -1;
-
- return(num);
-
-}
-
inline u8* _rtw_vmalloc(u32 sz)
{
u8 *pbuf;
return 0;
}
-static int get_int_from_command(char *pcmd )
+static int get_int_from_command(char *pcmd)
{
int i = 0;
+ int val;
for( i = 0; i < strlen( pcmd ); i++ )
{
break;
}
}
- return ( rtw_atoi( pcmd + i ) );
+ if (sscanf(pcmd + i, "%d", &val) != 1)
+ val = -EINVAL;
+ return val;
}
int rtw_android_priv_cmd(struct net_device *net, struct ifreq *ifr, int cmd)
struct wifi_display_info *pwfd_info;
_adapter* padapter = ( _adapter * ) rtw_netdev_priv(net);
+ int val = get_int_from_command(priv_cmd.buf);
- pwfd_info = &padapter->wfd_info;
- pwfd_info->rtsp_ctrlport = ( u16 ) get_int_from_command( priv_cmd.buf );
+ if ((val > 0xffff) || (val < 0)) {
+ ret = -EINVAL;
+ } else {
+ pwfd_info = &padapter->wfd_info;
+ pwfd_info->rtsp_ctrlport = ( u16 ) val;
+ }
break;
}
case ANDROID_WIFI_CMD_WFD_SET_MAX_TPUT:
struct wifi_display_info *pwfd_info;
_adapter* padapter = ( _adapter * ) rtw_netdev_priv(net);
+ int val = get_int_from_command(priv_cmd.buf);
- pwfd_info = &padapter->wfd_info;
- pwfd_info->wfd_device_type = ( u8 ) get_int_from_command( priv_cmd.buf );
+ if ((val < 0) || (val > 255)) {
+ ret = -EINVAL;
+ } else {
+ pwfd_info = &padapter->wfd_info;
+ pwfd_info->wfd_device_type = (u8)val;
- pwfd_info->wfd_device_type &= WFD_DEVINFO_DUAL;
+ pwfd_info->wfd_device_type &= WFD_DEVINFO_DUAL;
+ }
break;
}
#endif