が、動きません。
サンプル(HttpBasicAuth)のコンパイルは通るけど、認証を通した段階でException(2)でスタック吐いて止まる。
色んな意味で期待を裏切りません。
※2.3.0で修正された模様。
と言うわけで中身を調査。
ライブラリ本体はイカの場所に。
C:\Users\%USERNAME%\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.1.0\libraries\ESP8266WebServer\src\ESP8266WebServer.cpp
bool ESP8266WebServer::authenticate(const char * username, const char * password)
コケ方がどうにも不可解で、107行目の
を通ると必ずコケる。sprintf(toencode, "%s:%s", username, password);
どう考えても怪しいのはtoencode。
初期化はこうなっていた。
toencodeLenがなんでcharなのかっていうツッコミはおいといて…char toencodeLen = strlen(username)+strlen(password)+1;
char *toencode = new char[toencodeLen];
username="hoge"、password="fuga"だとして、sprintfで出力されるのは"hoge:fuga"で9バイト。
toencodeLenも9になる。
あれ?sprintfって最後に\0が入るよな…って事は1バイト足らんじゃないの。
と言うわけで、96行目のtoencodeの初期化を1バイト増やす。
動いた動いた。char *toencode = new char[toencodeLen+1];
スポンサーサイト





カテゴリ:電子工作