diff options
| author | Paul Sokolovsky | 2017-12-04 00:13:10 +0200 |
|---|---|---|
| committer | Paul Sokolovsky | 2017-12-04 00:13:10 +0200 |
| commit | 3a431fba50c96cc47d8273a6934e200993197b14 (patch) | |
| tree | 661a7fd96cb9ea82c989d3f0efc69f111f8dd64f /ports/esp8266 | |
| parent | 8175f1608eddc61c495c9163aebcc3c90549b9c4 (diff) | |
esp8266/modnetwork: Make sure to intern string passed to .config("param").
This is the proper fix for
https://github.com/micropython/micropython/issues/3442.
Diffstat (limited to 'ports/esp8266')
| -rw-r--r-- | ports/esp8266/modnetwork.c | 17 |
1 files changed, 8 insertions, 9 deletions
diff --git a/ports/esp8266/modnetwork.c b/ports/esp8266/modnetwork.c index 4066c969c..f7da5b751 100644 --- a/ports/esp8266/modnetwork.c +++ b/ports/esp8266/modnetwork.c @@ -402,30 +402,30 @@ STATIC mp_obj_t esp_config(size_t n_args, const mp_obj_t *args, mp_map_t *kwargs mp_obj_t val; - #define QS(x) (uintptr_t)MP_OBJ_NEW_QSTR(x) - switch ((uintptr_t)args[1]) { - case QS(MP_QSTR_mac): { + qstr key = mp_obj_str_get_qstr(args[1]); + switch (key) { + case MP_QSTR_mac: { uint8_t mac[6]; wifi_get_macaddr(self->if_id, mac); return mp_obj_new_bytes(mac, sizeof(mac)); } - case QS(MP_QSTR_essid): + case MP_QSTR_essid: req_if = SOFTAP_IF; val = mp_obj_new_str((char*)cfg.ap.ssid, cfg.ap.ssid_len); break; - case QS(MP_QSTR_hidden): + case MP_QSTR_hidden: req_if = SOFTAP_IF; val = mp_obj_new_bool(cfg.ap.ssid_hidden); break; - case QS(MP_QSTR_authmode): + case MP_QSTR_authmode: req_if = SOFTAP_IF; val = MP_OBJ_NEW_SMALL_INT(cfg.ap.authmode); break; - case QS(MP_QSTR_channel): + case MP_QSTR_channel: req_if = SOFTAP_IF; val = MP_OBJ_NEW_SMALL_INT(cfg.ap.channel); break; - case QS(MP_QSTR_dhcp_hostname): { + case MP_QSTR_dhcp_hostname: { req_if = STATION_IF; char* s = wifi_station_get_hostname(); val = mp_obj_new_str(s, strlen(s)); @@ -434,7 +434,6 @@ STATIC mp_obj_t esp_config(size_t n_args, const mp_obj_t *args, mp_map_t *kwargs default: goto unknown; } - #undef QS // We post-check interface requirements to save on code size if (req_if >= 0) { |
