Ticket #1024: getappiebuf.patch

File getappiebuf.patch, 1.4 kB (added by zdarsky@informatik.uni-kl.de, 5 years ago)
  • net80211/ieee80211_wireless.c

    old new  
    30383038 
    30393039static int 
    30403040ieee80211_ioctl_getappiebuf(struct net_device *dev, struct iw_request_info *info, 
    3041         void *w, char *extra) 
     3041        struct iw_point *data, char *extra) 
    30423042{ 
    30433043        struct ieee80211vap *vap = dev->priv; 
     3044        struct ieee80211req_getset_appiebuf *params = 
     3045                (struct ieee80211req_getset_appiebuf *)(data->pointer); 
    30443046        struct ieee80211req_getset_appiebuf *iebuf = 
    30453047                (struct ieee80211req_getset_appiebuf *)extra; 
     3048        int rc = 0; 
    30463049 
     3050        if (data->length < sizeof(struct ieee80211req_getset_appiebuf)) { 
     3051                return -EINVAL; 
     3052        } 
     3053                 
     3054        iebuf->app_frmtype = params->app_frmtype; 
     3055        iebuf->app_buflen = params->app_buflen;  
     3056        if (iebuf->app_buflen > data->length - sizeof(struct ieee80211req_getset_appiebuf)) { 
     3057                iebuf->app_buflen = data->length - sizeof(struct ieee80211req_getset_appiebuf); 
     3058        } 
     3059 
    30473060        switch (iebuf->app_frmtype) { 
    30483061        case IEEE80211_APPIE_FRAME_BEACON: 
    30493062        case IEEE80211_APPIE_FRAME_PROBE_RESP: 
     
    30603073                return -EINVAL; 
    30613074        } 
    30623075 
    3063         return get_app_ie(iebuf->app_frmtype, vap, iebuf); 
     3076        rc = get_app_ie(iebuf->app_frmtype, vap, iebuf); 
     3077         
     3078        data->length = sizeof(struct ieee80211req_getset_appiebuf) + iebuf->app_buflen; 
     3079         
     3080        return rc; 
    30643081} 
    30653082 
    30663083static int