fix connecting to WiFi: SSID is not 0-terminated, ATTR_MAC unwanted (#39)
Michael Stapelberg authored 2 years ago
GitHub committed 2 years ago
92 | 92 | netlink.Acknowledge, |
93 | 93 | ifi, |
94 | 94 | func(ae *netlink.AttributeEncoder) { |
95 | ae.String(unix.NL80211_ATTR_SSID, ssid) | |
95 | ae.Bytes(unix.NL80211_ATTR_SSID, []byte(ssid)) | |
96 | 96 | ae.Uint32(unix.NL80211_ATTR_AUTH_TYPE, unix.NL80211_AUTHTYPE_OPEN_SYSTEM) |
97 | 97 | }, |
98 | 98 | ) |
126 | 126 | akmSuites = 0xfac02 |
127 | 127 | ) |
128 | 128 | |
129 | ae.String(unix.NL80211_ATTR_SSID, ssid) | |
129 | ae.Bytes(unix.NL80211_ATTR_SSID, []byte(ssid)) | |
130 | 130 | ae.Uint32(unix.NL80211_ATTR_WPA_VERSIONS, unix.NL80211_WPA_VERSION_2) |
131 | 131 | ae.Uint32(unix.NL80211_ATTR_CIPHER_SUITE_GROUP, cipherSuites) |
132 | 132 | ae.Uint32(unix.NL80211_ATTR_CIPHER_SUITES_PAIRWISE, cipherSuites) |
152 | 152 | unix.NL80211_CMD_GET_SCAN, |
153 | 153 | netlink.Dump, |
154 | 154 | ifi, |
155 | nil, | |
155 | func(ae *netlink.AttributeEncoder) { | |
156 | if ifi.HardwareAddr != nil { | |
157 | ae.Bytes(unix.NL80211_ATTR_MAC, ifi.HardwareAddr) | |
158 | } | |
159 | }, | |
156 | 160 | ) |
157 | 161 | if err != nil { |
158 | 162 | return nil, err |
168 | 172 | unix.NL80211_CMD_GET_STATION, |
169 | 173 | netlink.Dump, |
170 | 174 | ifi, |
171 | nil, | |
175 | func(ae *netlink.AttributeEncoder) { | |
176 | if ifi.HardwareAddr != nil { | |
177 | ae.Bytes(unix.NL80211_ATTR_MAC, ifi.HardwareAddr) | |
178 | } | |
179 | }, | |
172 | 180 | ) |
173 | 181 | if err != nil { |
174 | 182 | return nil, err |
265 | 273 | |
266 | 274 | // Mandatory. |
267 | 275 | ae.Uint32(unix.NL80211_ATTR_IFINDEX, uint32(ifi.Index)) |
268 | ||
269 | // Optional parameters. | |
270 | if ifi.HardwareAddr != nil { | |
271 | ae.Bytes(unix.NL80211_ATTR_MAC, ifi.HardwareAddr) | |
272 | } | |
273 | 276 | } |
274 | 277 | |
275 | 278 | // idAttrs returns the netlink attributes required from an Interface to retrieve |