IRC Logs for #lost


2021-02-23

07:57:27 kevin joined the channel
08:11:40 XanClic joined the channel
08:56:33 tufel joined the channel
11:21:24 tufel: Huhu
11:33:07 xq: heya
11:34:16 tufel: Was ist eigentlich die größtmögliche Zahl, die man mit %i einlesen kann?
11:38:18 tufel: Probiere gerade die Tests von tyndur aus. In den libc-Tests gibts zwei Tests die Fehlschlagen.
11:39:11 tufel: Offenbar nehmen die beiden Tests an, dass bei %i kein Overflow geben darf.
11:39:47 kevin: Moin
11:40:29 kevin: Ich bin mir relativ sicher, dass die Tests richtig sind, auch wenn ich mich nicht mehr genau erinnern kann, was im Fehlerfall laut Spec passieren muss
11:42:27 kevin: Vermutlich ein Matching Failure und ein entsprechener Rückgabewert, der nur die Felder davor abdeckt
11:43:20 tufel: Der Test der fehlschlägt: https://git.tyndur.org/lowlevel/tyndur/-/blob/master/tests/libc/stdio.c#L1607
11:44:20 tufel: Ich programmier glaub mal ein kleines Testprogramm und schau mal was die glibc macht
11:44:30 kevin: Ah, das sind die Tests von der pdclib
11:44:36 kevin: Ich hatte an die anderen gedacht
11:45:22 kevin: glibc liegt teilweise bei scanf() auch falsch, aber vergleichen schadet nicht
11:48:55 tufel: Joar die glibc verhält sich fehlerhaft: https://pastebin.com/BPgmdKDQ
11:53:45 kevin: Du meinst, der Test schlägt mit glibc fehl
11:53:56 kevin: Ob der Test oder die glibc recht hat, müsstest du erst noch schauen
11:54:33 kevin: Wobei der Kommentar schon darauf hindeutet, dass er das absichtlich so getestet hat
11:58:05 tufel: Mh
11:58:09 kevin: Für das strtol() würde ich laut Spec erwarten LONG_MAX als Ergebnis (nicht LONG_MIN wie du bekommen hast) und errno = ERANGE (das hast du nicht geprüft)
11:59:46 tufel: Mh vielleicht war auch mein schneller Test falsch. Immerhin hab ich das ganze auf einem 64bit System kompiliert.
11:59:57 kevin: Äh, du gibst strtol() auch zwei Parameter zu wenig
12:00:37 tufel: Öhm hoppla
12:02:16 kevin: Aber ich bekomme auch -2147483648, errno Success, end ''
12:03:10 tufel: Mh
12:04:28 kevin: Ach so, logisch
12:04:37 kevin: Der Rückgabewert ist ein long, kein int
12:04:43 kevin: Und long sind 64 Bit
12:04:49 kevin: Also auf x86_64 jedenfalls
12:05:51 tufel: Joar, ich glaub das ist das Problem
12:06:27 tufel: Ich bin kurz afk
12:08:19 kevin: Bin mir aber nicht sicher, was das für scanf() heißt
13:16:51 tufel: Sodele, hab jetzt mal ein wenig herumprobiert: https://pastebin.com/S4VMGTkH
13:18:06 tufel: Scheinbar war meine Schlussfolgerung von vorhin falsch. Zumindest beim Scanf werden Überläufe verhindert.
15:16:38 tufel: Hab jetzt mal für das Problem einen kleinen Patch programmiert
15:17:21 tufel: Irgendwie wirkt aber die libc an einigen Stellen etwas unstrukturiert.
17:31:46 tufel joined the channel
18:03:17 tufel joined the channel
18:52:10 xq joined the channel
22:26:53 Paddy joined the channel
23:51:39 Biolunar joined the channel