Changeset 19118


Ignore:
Timestamp:
2010-01-13T19:39:44+01:00 (8 years ago)
Author:
jow
Message:

[package] base-files, mac80211 (#6491)

  • fix wep key handling in iw with mac80211 based drivers
  • sanitize keys where necessary
  • put a procedure prepare_key_wep() into /sbin/wifi for use by other driver backends
Location:
trunk/package
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/package/base-files/files/sbin/wifi

    r15180 r19118  
    3434        [ "$iftype" = bridge ] && config_get "$cfg" ifname 
    3535)} 
     36 
     37prepare_key_wep() { 
     38        local key="$1" 
     39        local hex=1 
     40 
     41        echo -n "$key" | grep -qE "[^a-fA-F0-9]" && hex=0 
     42        [ "${#key}" -eq 10 -a $hex -eq 1 ] || \ 
     43        [ "${#key}" -eq 26 -a $hex -eq 1 ] || { 
     44                [ "${key:0:2}" = "s:" ] && key="${key#s:}" 
     45                key="$(echo -n "$key" | hexdump -ve '1/1 "%02x" ""')" 
     46        } 
     47        echo "$key" 
     48} 
    3649 
    3750wifi_fixup_hwmode() { 
  • trunk/package/mac80211/files/lib/wifi/mac80211.sh

    r18923 r19118  
    177177                if [ ! "$mode" = "ap" ]; then 
    178178                        case "$enc" in 
    179                                 wep) 
     179                                *wep*) 
    180180                                        config_get keymgmt "$vif" keymgmt 
    181                                         if [ -n "$keymgmt" ]; then 
    182                                                 for idx in 1 2 3 4; do 
    183                                                         local zidx 
    184                                                         zidx=$(($idx - 1)) 
    185                                                         config_get key "$vif" "key${idx}" 
    186                                                         if [ -n "$key" ]; then 
    187                                                                 append keystring "${zidx}:${key} " 
    188                                                         fi 
    189                                                 done 
     181                                        if [ -z "$keymgmt" ]; then 
     182                                                config_get key "$vif" key 
     183                                                key="${key:-1}" 
     184                                                case "$key" in 
     185                                                        [1234]) 
     186                                                                for idx in 1 2 3 4; do 
     187                                                                        local zidx 
     188                                                                        zidx=$(($idx - 1)) 
     189                                                                        config_get ckey "$vif" "key${idx}" 
     190                                                                        if [ -n "$ckey" ]; then 
     191                                                                                [ $idx -eq $key ] && zidx="d:${zidx}" 
     192                                                                                append keystring "${zidx}:$(prepare_key_wep "$ckey")" 
     193                                                                        fi 
     194                                                                done 
     195                                                                ;; 
     196                                                        *) 
     197                                                                keystring="d:0:$(prepare_key_wep "$key")" 
     198                                                                ;; 
     199                                                esac 
    190200                                        fi 
    191201                                ;; 
    192                                 *wpa*|*psk*) 
     202                                *psk*|*wpa*) 
    193203                                        config_get key "$vif" key 
    194204                                ;; 
     
    242252                                config_get bssid "$vif" bssid 
    243253                                case "$enc" in 
    244                                         wep) 
    245                                                 if [ -n "$keymgmt" ]; then 
     254                                        *wep*) 
     255                                                if [ -z "$keymgmt" ]; then 
    246256                                                        [ -n "$keystring" ] && 
    247                                                                 iw dev "$ifname" connect "$ssid" ${fixed:+$freq} $bssid key "$keystring" 
     257                                                                iw dev "$ifname" connect "$ssid" ${fixed:+$freq} $bssid key $keystring 
    248258                                                else 
    249259                                                        if eval "type wpa_supplicant_setup_vif" 2>/dev/null >/dev/null; then 
Note: See TracChangeset for help on using the changeset viewer.