* finding or making jordens@debian.org--zd1211/zd1211--integration--0--patch-7 * finding or making jordens@debian.org--zd1211/zd1211--integration--0--patch-8 * computing changeset A {arch}/zd1211/zd1211--integration/zd1211--integration--0/jordens@debian.org--zd1211/patch-log/patch-8 M src/zd1205.c * changeset report * modified files --- orig/src/zd1205.c +++ mod/src/zd1205.c @@ -5636,8 +5636,10 @@ #define NUM_CHANNELS ( sizeof(channel_frequency) / sizeof(channel_frequency[0]) ) -#define MAX_KEY_SIZE 13 -#define MIN_KEY_SIZE 5 +#define WEP256_KEY_SIZE 29 +#define WEP128_KEY_SIZE 13 +#define WEP64_KEY_SIZE 5 +#define MAX_KEY_SIZE WEP256_KEY_SIZE static int zd1205_ioctl_setiwencode(struct net_device *dev, struct iw_point *erq, char *key) @@ -5653,26 +5655,32 @@ // ZD1211DEBUG(1, "index = %d\n", index); // ZD1211DEBUG(1, "erq->length = %d\n", erq->length); - if (erq->length > MAX_KEY_SIZE) - return -EINVAL; - if ((index < 0) || (index >= 4)) index = current_index; - /* Set the length */ - if (erq->length > MIN_KEY_SIZE) { - pSetting->WepKeyLen = MAX_KEY_SIZE; + /* Set the length */ + switch (erq->length) + { + case WEP64_KEY_SIZE: + pSetting->WepKeyLen = WEP64_KEY_SIZE; + pSetting->EncryMode = WEP64; + break; + case WEP128_KEY_SIZE: + pSetting->WepKeyLen = WEP128_KEY_SIZE; pSetting->EncryMode = WEP128; - } else { - // if (erq->length > 0){ - pSetting->WepKeyLen = MIN_KEY_SIZE; + break; + case WEP256_KEY_SIZE: + pSetting->WepKeyLen = WEP64_KEY_SIZE; pSetting->EncryMode = WEP64; + break; + default: + return -EINVAL; + } // } // else { // pSetting->WepKeyLen = 0; /* Disable the key */ // pSetting->EncryMode = NO_WEP; // } - } /* Check if the key is not marked as invalid */ if (!(erq->flags & IW_ENCODE_NOKEY)) { // for command: key xxxxxxxxxx [n] @@ -5794,7 +5802,7 @@ /* Copy the key to the user buffer */ erq->length = pSetting->WepKeyLen; - if (erq->length > 16) + if (erq->length > MAX_KEY_SIZE) { erq->length = 0; @@ -6393,9 +6401,10 @@ range->min_frag = 256; range->max_frag = 2346; range->max_encoding_tokens = NUM_WEPKEYS; - range->num_encoding_sizes = 2; + range->num_encoding_sizes = 3; range->encoding_size[0] = 5; range->encoding_size[1] = 13; + range->encoding_size[2] = 29; // XXX what about num_bitrates/throughput? range->num_bitrates = 0; * added files