Skip to content

Commit 377c06a

Browse files
abdelali221DacoTaco
authored andcommitted
Finalize WD_GetPCSList & WD_GetRSN_WPAEssentials
1 parent ab466ff commit 377c06a

1 file changed

Lines changed: 27 additions & 9 deletions

File tree

libogc/wd.c

Lines changed: 27 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -333,10 +333,21 @@ int WD_GetPCSList(BSSDescriptor *Bss, u8* destbuff, u8 buffsize, u8 offset) {
333333
if(ret < 0) return WD_INVALIDBUFF;
334334
if(IE.PCS_Count * 4 > buffsize) return WD_BUFFTOOSMALL;
335335

336-
u8 IE_len = WD_GetIELength(Bss, IEID_SECURITY_RSN);
336+
u8 IE_len;
337+
if(offset == RSN_OFFSET) {
338+
IE_len = WD_GetIELength(Bss, IEID_SECURITY_RSN);
339+
} else {
340+
IE_len = WD_GetVendorSpecificIELength(Bss, OUI_WPA);
341+
}
342+
337343

338344
u8 buff[IE_len];
339-
WD_GetIE(Bss, IEID_SECURITY_RSN, buff, IE_len);
345+
if(offset == RSN_OFFSET) {
346+
WD_GetIE(Bss, IEID_SECURITY_RSN, buff, IE_len);
347+
} else {
348+
WD_GetVendorSpecificIE(Bss, OUI_WPA, buff, IE_len);
349+
}
350+
340351

341352
memset(destbuff, 0, buffsize);
342353
memcpy(destbuff, &buff[8 + offset], IE.PCS_Count * 4);
@@ -348,12 +359,21 @@ int WD_GetRSN_WPAEssentials(BSSDescriptor *Bss, IE_RSN_WPA *IE, u8 offset) {
348359
if(!Bss) return WD_INVALIDBUFF;
349360
if(!IE) return WD_INVALIDBUFF;
350361

351-
u8 IE_size = WD_GetIELength(Bss, IEID_SECURITY_RSN);
352-
if(IE_size < 0) return WD_NOTFOUND;
362+
u8 IE_len;
363+
if(offset == RSN_OFFSET) {
364+
IE_len = WD_GetIELength(Bss, IEID_SECURITY_RSN);
365+
} else {
366+
IE_len = WD_GetVendorSpecificIELength(Bss, OUI_WPA);
367+
}
368+
if(IE_len < 0) return WD_NOTFOUND;
369+
370+
u8 buff[IE_len];
353371

354-
u8 buff[IE_size];
355-
356-
WD_GetIE(Bss, IEID_SECURITY_RSN, buff, IE_size);
372+
if(offset == RSN_OFFSET) {
373+
WD_GetIE(Bss, IEID_SECURITY_RSN, buff, IE_len);
374+
} else {
375+
WD_GetVendorSpecificIE(Bss, OUI_WPA, buff, IE_len);
376+
}
357377

358378
IE->Version = buff[0 + offset] | buff[1 + offset] << 8;
359379
offset += 2;
@@ -388,7 +408,6 @@ u8 WD_GetSecurity(BSSDescriptor *Bss) {
388408
else if (buff[offset + 3] == 0x04) ret |= WD_WPA_AES;
389409
offset += 4;
390410
}
391-
return ret;
392411
}
393412

394413
ie_len = WD_GetIELength(Bss, IEID_SECURITY_RSN);
@@ -399,7 +418,6 @@ u8 WD_GetSecurity(BSSDescriptor *Bss) {
399418

400419
u8 buff[IE.PCS_Count * 4];
401420
WD_GetPCSList(Bss, buff, IE.PCS_Count * 4, RSN_OFFSET);
402-
403421
u8 offset = 0;
404422

405423
for (int i = 0; i < IE.PCS_Count; i++) {

0 commit comments

Comments
 (0)