MLD Bug - MLD
View Issue Details
0000025MLD[All Projects] VDRpublic2014-01-09 20:102014-01-15 19:50
P3f 
P3f 
normalblockalways
closedfixed 
 
 
 
Fritzbox 1.5.3
0000025: MLD 3.0.3
Hallo,

das Addon lässt sich compilieren und läuft auch ohne Segfault in der MLD 3.0.3 (mit VDR 2.1.3). Aber es wird keine Verbindung zur Fritzbox aufgebaut. Scheinbar ein conversions-Fehler, zumindest steht im /var/log/messages

Jan 9 20:05:08 (MLD) user.err vdr: [4268] [fritzbox - FritzClient.cpp:314] Exception in connection to fritz.box - Unsupported conversion from UTF-16LE to
Jan 9 20:05:08 (MLD) user.err vdr: [4268] [fritzbox - FritzClient.cpp:314] waiting 30 seconds before retrying

Nachdem bei der vorherigen Revision immer noch ein Patch für das Makefile nötig war, frage ich mich ob hier wirklich alle Libs bzw. obj korrekt übersetzt werden.

Ich hatte das Problem auch mal an den Plugin-Entwickler geschickt, allerdings noch kein Feedback erhalten.

Kann man sich das mal anschauen, gegen den "bisherigen" Patch?

Danke,

Pit
No tags attached.
Issue History
2014-01-09 20:10P3fNew Issue
2014-01-09 20:10P3fStatusnew => assigned
2014-01-09 20:10P3fAssigned To => Christian
2014-01-14 14:23ChristianNote Added: 0000019
2014-01-14 14:26ChristianNote Edited: 0000019bug_revision_view_page.php?bugnote_id=19#r6
2014-01-14 14:41ChristianNote Edited: 0000019bug_revision_view_page.php?bugnote_id=19#r7
2014-01-14 15:08ChristianNote Added: 0000020
2014-01-14 17:22P3fNote Added: 0000021
2014-01-14 17:49ChristianNote Added: 0000022
2014-01-15 11:10ChristianNote Added: 0000024
2014-01-15 11:22ChristianNote Edited: 0000024bug_revision_view_page.php?bugnote_id=24#r9
2014-01-15 19:49P3fNote Added: 0000026
2014-01-15 19:49P3fNote Added: 0000027
2014-01-15 19:49P3fStatusassigned => resolved
2014-01-15 19:49P3fFixed in Version => Rev 10
2014-01-15 19:49P3fResolutionopen => fixed
2014-01-15 19:49P3fAssigned ToChristian => P3f
2014-01-15 19:50P3fNote Added: 0000028
2014-01-15 19:50P3fStatusresolved => closed

Notes
(0000019)
Christian   
2014-01-14 14:23   
(edited on: 2014-01-14 14:41)
HI,

da klappt ein convert von einem character set nicht.

QUELLCODE:
///////////
 std::string FritzClient::calculateLoginResponse(std::string challenge) {
    std::string challengePwd = challenge + '-' + gConfig->getPassword();
    // the box needs an md5 sum of the string "challenge-password"
    // to make things worse, it needs this in UTF-16LE character set
    // last but not least, for "compatibility" reasons (*LOL*) we have to replace
    // every char > "0xFF 0x00" with "0x2e 0x00"
    convert::CharsetConverter conv("", "UTF-16LE");
    char challengePwdConv[challengePwd.length()*2];
    memcpy(challengePwdConv, conv.convert(challengePwd).c_str(), challengePwd.length()*2);
    for (size_t pos=1; pos < challengePwd.length()*2; pos+= 2)
        if (challengePwdConv[pos] != 0x00) {
            challengePwdConv[pos] = 0x00;
            challengePwdConv[pos-1] = 0x2e;
        }
    unsigned char hash[16];
    gcry_md_hash_buffer(GCRY_MD_MD5, hash, (const char*)challengePwdConv, challengePwd.length()*2);
    std::stringstream response;
    response << challenge << '-';
    for (size_t pos=0; pos < 16; pos++)
        response << std::hex << std::setfill('0') << std::setw(2) << (unsigned int)hash[pos];
    return response.str();
}
\\\\\\\\\\\\\

bedeutet für mich er kann das PW nicht in UTF16LE convertieren über iconv.


Am mittwoch kann ich wieder intensiver schauen

(0000020)
Christian   
2014-01-14 15:08   
so hier liegt der Hund begraben:

////////////
std::string CharsetConverter::getDefaultCharset() {
    if (setlocale(LC_CTYPE, ""))
        return nl_langinfo(CODESET);
    char *langPtr = getenv("LANG");
    if (langPtr) {
        std::string lang(langPtr);
        size_t pos = lang.find('.');
        if (pos == std::string::npos)
            return lang;
        return lang.substr(pos+1);
    }
    return "UTF-8";
}
//////////

was haben wir in den variablen?

LC_CTYPE=?
LANG=?
(0000021)
P3f   
2014-01-14 17:22   
Hallo Christian,

ich habe mal auf der MLD-Konsole die gewünschte Eingabe gemacht:

MLD> locale -m
locale: cannot read character map directory `/usr/share/i18n/charmaps': No such file or directory
MLD>

Sollte die charmaps in dem Verzeichnis liegen?
(0000022)
Christian   
2014-01-14 17:49   
Mach mal "env" und schau nach den Variablen
(0000024)
Christian   
2014-01-15 11:10   
(edited on: 2014-01-15 11:22)
ein ls von /usr/lib/i386-linux-gnu/gconv/ bitte

und

bitte das binary aus der Develumgebung (iconv) mit auf die MLD kopieren und dies testen:

       The values permitted for --from-code and --to-code can be listed by the
       iconv --list command, and all combinations of the listed values are
       supported.

iconv --list

iconv muss hier etwas ausspucken wie UTF16 .... wenn die Datei UTF16.so hier /usr/lib/i386-linux-gnu/gconv/ fehlt könnten wir den übeltäter haben

(0000026)
P3f   
2014-01-15 19:49   
Hi,
nachdem ich die UTF-16.so Datei mit von der Devel auf die MLD kopiert habe, funktioniert es.....

Super, werde nun das Addon anpassen. Dann sind wir wieder aktuell mit der AVM-Fritzbox bzw. der fritzbox Plugin.

Gut das Du es gefunden hast....

Pit
(0000027)
P3f   
2014-01-15 19:49   
Christian, hat das Problem gefunden. Addon wird aktualisiert.
(0000028)
P3f   
2014-01-15 19:50   
Funktionstest auf 2 MLD 3.0.3 ist erfolgreich....