summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--libopie2/opienet/onetwork.cpp14
1 files changed, 6 insertions, 8 deletions
diff --git a/libopie2/opienet/onetwork.cpp b/libopie2/opienet/onetwork.cpp
index f4bdbe0..05513f8 100644
--- a/libopie2/opienet/onetwork.cpp
+++ b/libopie2/opienet/onetwork.cpp
@@ -530,15 +530,14 @@ void OWirelessNetworkInterface::buildInformation()
530 struct iwreq wrq; 530 struct iwreq wrq;
531 int len = sizeof( struct iw_range )*2; 531 int len = sizeof( struct iw_range )*2;
532 char *buffer = (char*) malloc( len ); 532 char buffer[len];
533 //FIXME: Validate if we actually got the memory block
534 memset( buffer, 0, len ); 533 memset( buffer, 0, len );
535 memcpy( wrq.ifr_name, name(), IFNAMSIZ); 534 memcpy( wrq.ifr_name, name(), IFNAMSIZ);
536 wrq.u.data.pointer = (caddr_t) buffer; 535 wrq.u.data.pointer = (caddr_t) buffer;
537 wrq.u.data.length = sizeof( struct iw_range ); 536 wrq.u.data.length = sizeof buffer;
538 wrq.u.data.flags = 0; 537 wrq.u.data.flags = 0;
539 538
540 if ( ::ioctl( _sfd, SIOCGIWRANGE, &wrq ) == -1 ) 539 if ( ::ioctl( _sfd, SIOCGIWRANGE, &wrq ) == -1 )
541 { 540 {
542 owarn << "OWirelessNetworkInterface::buildInformation(): Can't get channel information - using default values." << oendl; 541 owarn << "OWirelessNetworkInterface::buildInformation(): Can't get driver information (" << strerror( errno ) << ") - using default values." << oendl;
543 _channels.insert( 2412, 1 ); // 2.412 GHz 542 _channels.insert( 2412, 1 ); // 2.412 GHz
544 _channels.insert( 2417, 2 ); // 2.417 GHz 543 _channels.insert( 2417, 2 ); // 2.417 GHz
@@ -583,5 +582,4 @@ void OWirelessNetworkInterface::buildInformation()
583 memcpy( &_range, buffer, sizeof( struct iw_range ) ); 582 memcpy( &_range, buffer, sizeof( struct iw_range ) );
584 odebug << "OWirelessNetworkInterface::buildInformation(): Information block constructed." << oendl; 583 odebug << "OWirelessNetworkInterface::buildInformation(): Information block constructed." << oendl;
585 free(buffer);
586} 584}
587 585
@@ -605,5 +603,5 @@ void OWirelessNetworkInterface::buildPrivateList()
605 if ( !wioctl( SIOCGIWPRIV ) ) 603 if ( !wioctl( SIOCGIWPRIV ) )
606 { 604 {
607 owarn << "OWirelessNetworkInterface::buildPrivateList(): Can't get private ioctl information." << oendl; 605 owarn << "OWirelessNetworkInterface::buildPrivateList(): Can't get private ioctl information (" << strerror( errno ) << ")." << oendl;
608 return; 606 return;
609 } 607 }
@@ -1159,5 +1157,5 @@ OStationList* OWirelessNetworkInterface::scanNetwork()
1159 case IWEVQUAL: 1157 case IWEVQUAL:
1160 { 1158 {
1161 odebug << "IWEVQUAL" << oendl; 1159 odebug << "IWEVQUAL" << oendl;
1162 stations->last()->level = static_cast<int>(we->u.qual.level); 1160 stations->last()->level = static_cast<int>(we->u.qual.level);
1163 break; /* Quality part of statistics (scan) */ 1161 break; /* Quality part of statistics (scan) */
@@ -1165,5 +1163,5 @@ OStationList* OWirelessNetworkInterface::scanNetwork()
1165 case SIOCGIWENCODE: 1163 case SIOCGIWENCODE:
1166 { 1164 {
1167 odebug << "SIOCGIWENCODE" << oendl; 1165 odebug << "SIOCGIWENCODE" << oendl;
1168 stations->last()->encrypted = !(we->u.data.flags & IW_ENCODE_DISABLED); 1166 stations->last()->encrypted = !(we->u.data.flags & IW_ENCODE_DISABLED);
1169 break; 1167 break;