[Eisfair] Telegram CLI deamon FAIL

Marcus Roeckrath marcus.roeckrath at gmx.de
Mo Jun 11 14:44:07 CEST 2018


Hallo,

Marcus Roeckrath wrote:

>>> und schick mir /tmp/telegramtrace per PM zu.
>> 
>> mache ich
> 
> Angekommen, wirklich schlauer bin ich da noch nicht.

Nachdem mir auch Jürgen einen Trace gechickt hat, kann ich den Knackpunkt
nicht wirklich erkennen.

Ich habe mir allerdings auch mal die C-Source angesehen und vielleicht gibt
es hier ja C-Kundige Leute:

static unsigned long long BN2ull (TGLC_bn *b) {
  if (sizeof (unsigned long) == 8) {
    return TGLC_bn_get_word (b);
  } else if (sizeof (unsigned long long) == 8) {

Hier geht er bei Friedhold rein!

    assert (0); // As long as nobody ever uses this code, assume it is
broken.
    unsigned long long tmp;
    /* Here be dragons, but it should be okay due to be64toh */
    TGLC_bn_bn2bin (b, (unsigned char *) &tmp);
    return be64toh (tmp);
  } else {
    assert (0);
  }
}

Wenn mich meine rudimentären C-Kenntnisse nicht vollkommen im Stich lassen,
führt der assert (0) zum sofortigen Abbruch, ohne den weiteren Code des
"else if"-Zweiges auszuführen.

Dies legt auch der Kommentar nahe, da der Code nicht getestet sei.

Ist das soweit richtig analysiert?

Stellt sich dann natürlich die Frage, warum er bei Friedhold in den "else
if" rennt, im Normalfall jedoch nicht. Da muss ich wohl die Traces nochmal
Zeile für zeile vergleichen.

-- 
Gruss Marcus


Mehr Informationen über die Mailingliste Eisfair