[archimedes] Re: Wie <Obey$Dir>-Variable von C-Quellcode aus nutzen?

  • From: Alexander Ausserstorfer <bavariasound@xxxxxxxxxxxxxxx>
  • To: archimedes@xxxxxxxxxxxxx
  • Date: Sat, 24 May 2014 07:05:50 +0200

In message <1a726b0c54.cms@xxxxxxxxxxxxxxx>
          Carlos Michael Santillan <ml-archimedes@xxxxxxxxxx> wrote:

>> der E-Mail als erste Zeile voranstellen. Die Größe wird mit führenden
>> Nullen aufgefüllt. Ich vermute, dass dies ein Platzhalter ist, da
>> _zuerst_ die E-Mail gezählt und geschrieben und anschließend
>> _nachträglich_ die Größe der E-Mail geschrieben wird. Anders geht das
>> auch gar nicht. Leider geht aber die Größe der E-Mail voraus. Das macht
>> die Sache auch nicht gerade schön.
>
> Naja, das geht schon anders. Was aber die beste Lösung ist, kann ich aus
> dem Stehgreif nicht sagen. Da muss man sicher auch ein paar Dinge
> ausprobieren und messen. Du kennst OS_GBPB? Damit kannst Du den
> Transport zwischen Speicher und Festplatte im Gegensatz zu den
> C-Funktionen _deutlich_ beschleunigen.

Nein, kannte ich noch nicht. Ich sehe es mir 'mal an.

>> Was passiert denn dann eigentlich, wenn die Größe der E-Mail den
>> Platzhalter überschreitet? Da gibt's doch ein Problem, oder?
>
> Wenn das zuviel in den Speicher geht, nennt man das Pufferüberlauf und
> kann unter Umständen Kode einschleusen, einen schönen Absturz
> produzieren oder auch nichts machen. Es gibt nebenbei in C ein paar
> "neue" Funktionen, die versuchen das zu verhinden. Da muss man die Größe
> in der Funktion mitangeben. Bei manchen Projekten sind die alten
> Funktionen verboten, da man gerne Mal eine Prüfung vergisst oder einen
> Fehler ("<" vs. "<=") einbaut.
> http://de.wikipedia.org/wiki/Puffer%C3%BCberlauf

Die Frage war, wenn !POPStar 7 Nullen für die Größenangabe der
E-Mail in der Zeile "#! rmail 00..." verwendet (0000000), aber eine
E-Mail größer ist (z. B. 10 MB bis 100 MB), dann ist kein Platz mehr, um
in der Zeile "#! rmail 00..." die Größe noch komplett anzugeben. Was
passiert dann?

Mit Pufferüberlauf hat das meiner Auffassung nach nichts zu tun.

Man müsste wirklich mal ausprobieren, was !POPStar in solch einer
Situation macht, und ob solch eine E-Mail vom E-Mail-Clienten noch
richtig verarbeitet wird. (!Hermes verwendet bereits neun Nullen).

> Die Frage ist, was macht man wenn das Problem auftaucht? Verwirft man
> die Mail? Auf alle Fälle muss man das den Benutzer melden. Die Angabe
> von LIST und der tatschächlichen Größe darf sich nicht unterscheiden.
> Wenn das passiert, dann stimmt da etwas nicht und der (gekaperte?) POP3
> Server versucht eventuell einen Mist unterzuschieben.
>
> Das habe ich nie gemacht, aber man kann doch den Dateizeiger verschieben
> und dann sollte man die Angabe der Dateigröße nachträglich verändern
> können. Dann darf das natürlich, mit Multitaskingmeldung, länger dauern.
> In der Regel wird das auch nicht auftretten, aber man sollte dafür
> vorbereitet sein. Das nachzuvollziehen mit einen fremden POP3 Server
> kann schwer werden.

Den Dateizeiger verschieben, genau darauf arbeite ich gerade hin. Zuerst
werden 12 Nullen in der Zeile "#! rmail 000000000000" geschrieben, und,
_nachdem_ die E-Mail geschrieben und gezählt worden ist, der Dateizeiger
verschoben und _nachträglich_ die gezählte Größe eingetragen. Erst
_danach_ geht es mit der nächsten E-Mail weiter.

A.

-- 
http://home.chiemgau-net.de/ausserstorfer/
Sent wirelessly from RISC OS per LTE


Other related posts: