<<< Date Index >>>     <<< Thread Index >>>

Re: [FYI] Bin?res XML -



On Wed, 1 Oct 2003, Kristian Koehntopp wrote:

> Array
> 12 Byte <- hier 10 oder 14 Byte angeben
>  Integer
>  4 Byte
>  3
>
>  Integer
>  4 Byte
>  0
>
>  Integer
>  4 Byte
>  2
>
>
> Stimmt die Längenangabe im Array nicht, könnte ein Reader, der
> den Array-Typ nicht erkennt ("unwissender Reader", der ohne DTD
> auf wohlgeformten ASN.1 arbeitet), auf der Längenangabe oder dem
> Inhalt des letzten Integer wiederaufsetzen, während ein Reader,
> der den Array-Typ kennt, die Integer einzeln parsed.

Angenommen, da stehen 10 oder 14 Byte, alloziiere ich sie, und stelle beim
Fuellen fest, dass da etwas nicht stimmt - bei 10 wird der dritte
nicht mehr in das Array gesteckt und bei 14 darf ich mir Gedankn drueber
machen, ob ich das als kritisch ansehe oder nur eine Warnung auswerfe.

Ich weiss gerade nicht wo, aber ich habe auch schon mit Strings zu tun
gehabt, die nullterminiert waren und wo im Header davor die Laenge stand.

Ich wuerde bestimmt nicht strcpy verwenden, um das nach
Headerlaengenangabe allozierte char-Array zu fuellen, sondern strncpy, und
dann auch noch das letzte Byte "nullen".

Alles andere waere Leichtsinn des Programmiers. Das Gleiche wuerde ich bei
dem Vertrauen auf die Laengenangabe bei ASN.1 auch sagen.

Wenn ich dagegen den Typ nicht kenne und ueberspringe, bleibt mir gar
nichts weiter uebrig, als nach 10 oder 14 Byte weiterzulesen - und dann
interpretiere ich z.B. die letzten zwei Bytes des letzten Integer
(Beispiel 14 Bytes) Und wenn das sinnvoll erscheint, parse ich da weiter
und fuelle Strukturen, die natuerlich unsinnige Inhalte bekommen, oder
ueberspringe wieder (weil ich den Datentyp wieder nicht kenne).

Naja, nicht schoen, aber "dumme" Werte kann ich auch ohne das uebertragen,
das verbietet auch XML nicht. Den Test, auf "Sinnlosigkeit" kann mir die
syntaktische Pruefung nicht abnehmen.

So ein bisschen ist das wie "aus dem Takt geraten", weil Dein XML
irgendwo ein schliessendes Tag vergass. Da kann auch ganz schoenes
Kuddelmuddel rauskommen.

Beides sind halt kaputte Datenstroeme und wir sind immer noch bei "Mach,
was ich sage" statt bei "Mach, was ich dir sagen will"-Maschinen;-)

Kleiner Spass am Rande: Ein Freund hat die Ansteuerung fuer eine Videowand
aus etlichen Monitoren (ich glaube, 24) programmiert und sich ueber ein
paar dunkle Flecke bei 10000x10000 gewundert. Da hatte der Programmierer
des Windowmanagers ein paar Parameter "verborgen" abgelegt - sieht man eh
nie, dachte der.

Gruss
Peter

--
To unsubscribe, e-mail: debate-unsubscribe@xxxxxxxxxxxxxx
For additional commands, e-mail: debate-help@xxxxxxxxxxxxxx