Ticket #1024: getappiebuf.2.patch
| File getappiebuf.2.patch, 2.2 kB (added by zdarsky@informatik.uni-kl.de, 5 years ago) |
|---|
-
net80211/ieee80211_wireless.c
old new 3021 3021 static int 3022 3022 ieee80211_ioctl_setappiebuf(struct net_device *dev, 3023 3023 struct iw_request_info *info, 3024 void *w, char *extra)3024 struct iw_point *data, char *extra) 3025 3025 { 3026 3026 struct ieee80211vap *vap = dev->priv; 3027 3027 struct ieee80211req_getset_appiebuf *iebuf = 3028 3028 (struct ieee80211req_getset_appiebuf *)extra; 3029 3029 enum ieee80211_opmode chk_opmode; 3030 int iebuf_len; 3030 3031 int rc = 0; 3031 3032 3032 if (iebuf->app_buflen > IEEE80211_APPIE_MAX) 3033 iebuf_len = data->length - sizeof(struct ieee80211req_getset_appiebuf); 3034 if ( iebuf_len < 0 || iebuf_len != iebuf->app_buflen || 3035 iebuf->app_buflen > IEEE80211_APPIE_MAX ) 3033 3036 return -EINVAL; 3034 3037 3035 3038 switch (iebuf->app_frmtype) { … … 3060 3063 3061 3064 static int 3062 3065 ieee80211_ioctl_getappiebuf(struct net_device *dev, struct iw_request_info *info, 3063 void *w, char *extra)3066 struct iw_point *data, char *extra) 3064 3067 { 3065 3068 struct ieee80211vap *vap = dev->priv; 3066 3069 struct ieee80211req_getset_appiebuf *iebuf = 3067 3070 (struct ieee80211req_getset_appiebuf *)extra; 3071 int max_iebuf_len; 3072 int rc = 0; 3068 3073 3074 max_iebuf_len = data->length - sizeof(struct ieee80211req_getset_appiebuf); 3075 if (max_iebuf_len < 0) 3076 return -EINVAL; 3077 if (copy_from_user(iebuf, data->pointer, sizeof(struct ieee80211req_getset_appiebuf))) 3078 return -EFAULT; 3079 if (iebuf->app_buflen > max_iebuf_len) 3080 iebuf->app_buflen = max_iebuf_len; 3081 3069 3082 switch (iebuf->app_frmtype) { 3070 3083 case IEEE80211_APPIE_FRAME_BEACON: 3071 3084 case IEEE80211_APPIE_FRAME_PROBE_RESP: … … 3082 3095 return -EINVAL; 3083 3096 } 3084 3097 3085 return get_app_ie(iebuf->app_frmtype, vap, iebuf); 3098 rc = get_app_ie(iebuf->app_frmtype, vap, iebuf); 3099 3100 data->length = sizeof(struct ieee80211req_getset_appiebuf) + iebuf->app_buflen; 3101 3102 return rc; 3086 3103 } 3087 3104 3088 3105 static int … … 4820 4837 #define IW_PRIV_TYPE_CHANINFO \ 4821 4838 IW_PRIV_TYPE_BYTE | sizeof(struct ieee80211req_chaninfo) 4822 4839 #define IW_PRIV_TYPE_APPIEBUF \ 4823 (IW_PRIV_TYPE_BYTE | IEEE80211_APPIE_MAX)4840 (IW_PRIV_TYPE_BYTE | (sizeof(struct ieee80211req_getset_appiebuf) + IEEE80211_APPIE_MAX)) 4824 4841 #define IW_PRIV_TYPE_FILTER \ 4825 4842 IW_PRIV_TYPE_BYTE | sizeof(struct ieee80211req_set_filter) 4826 4843
