[ap-utils] Patch to make ap-config able to set ESSID on powerpc linux

Daniel E. Eisenbud eisenbud at cbio.mskcc.org
Mon Feb 23 05:54:23 EET 2004

There's an endianness issue in wlan.c that makes ap-config always set
the ESSID to an empty string on powerpc linux.  (This is with a Netgear
ME102, but that's irrelevant.)  The SNMP packet setting the ESSID
specifies that the length of the string is 0, and also sends the
correct string.  I used snmpset to send the same packet with the correct
length, and it worked.

A quick inspection of wlan.c revealed that this was the result of
casting an int pointer to a char pointer.  The attached patch fixes the
problem, but I haven't checked that there aren't other such problems in
the source.  I presume that this is an issue MacOS X and some other
platforms as well.

-Daniel Eisenbud

Daniel E. Eisenbud
eisenbud at cbio.mskcc.org
Computational Biology Center
Memorial Sloan-Kettering Cancer Center
-------------- next part --------------
--- wlan.c.orig	2004-02-23 03:39:15.323467707 -0500
+++ wlan.c	2004-02-23 03:49:06.974639514 -0500
@@ -140,6 +140,7 @@ void atmel_wireless()
     _("Short"), _("Long")};
     short __rates[4] = { 2, 4, 11, 22 };
     int i, c = 0;
+    char ch;
     unsigned int ap_regdomain;
     if (ap_type == ATMEL12350) {
@@ -508,10 +509,10 @@ void atmel_wireless()
 	    if (m_essid) {
-		c = strlen(domain);
+		c = ch = strlen(domain);
 		varbinds[i].oid = operESSIDLength;
 		varbinds[i].len_oid = sizeof(operESSIDLength);
-		varbinds[i].value = (char *)&c;
+		varbinds[i].value = (char *)&ch;
 		varbinds[i].len_val = 1;
 		varbinds[i].type = INT_VALUE;

More information about the ap-utils mailing list