Laden...

Bug im Framework

Erstellt von Quest vor 18 Jahren Letzter Beitrag vor 18 Jahren 2.937 Views
Q
Quest Themenstarter:in
108 Beiträge seit 2004
vor 18 Jahren
Bug im Framework

Hallo zusammen,

habe das folgende Problem:

System.Net.IPAddress.Parse("192.169.20.018");

erklärt mir die IP für ungültig...

System.Net.IPAddress.Parse("192.169.20.18");

funktioniert...

wohingegen

System.Net.IPAddress.Parse("192.169.20.017");

und

System.Net.IPAddress.Parse("192.169.20.17");

beide funktionieren...

Das seltsame Verhalten hab ich noch bei einigen mehr festgestellt, die führenden Nullen mag er manchmal nicht...

Meinungen, Ideen, Anregungen? Mit google bin ich nicht fündig geworden, wo könnte ich noch gucken?

49.485 Beiträge seit 2005
vor 18 Jahren

Hallo Quest,

bei mir werden alle vier IPs als gültig erkannt (=Parse liefert keine Exception). Egal, ob unter 1.1 oder 2.0 beta 2.

herbivore

Q
Quest Themenstarter:in
108 Beiträge seit 2004
vor 18 Jahren

Sehr dubios, was soll ich denn jetzt machen? das ist ja mal seltsam...

Habs jetzt auf 3 PCs getestet und 2x die Fehler bekommen und 1x funktionierts, hab aber noch keine Gemeinsamkeiten bzw Unterschiede finden können - überall Framework 1.1 mit letzten Bugfix drauf...

B
189 Beiträge seit 2004
vor 18 Jahren

Bei mir funktionieren auch alle vier (Fx 1.1) ohne Fehler.

Allerdings passiert etwas merkwürdiges bei den führenden Nullen: Der String "192.169.20.018" bspw. wird in die IP-Adresse 192.169.20.16 umgewandelt.

Bei führenden Nullen und Merkwürdigkeiten denke ich immer sofort an das Oktalsystem, vor allem, wenn die Merkwürdigkeiten nahe 7 und 8 auftreten. Das stimmt auch, sofern es korrekte Oktalzahlen sind. Beispiel: Aus "192.169.20.017" wird 192.169.20.15.

Merkwürdig wird's aber wirklich bei ungültigen Oktalzahlen wie dem 018 aus dem ersten Beispiel oben. Das müsste eigentlich zu einem Fehler führen; stattdessen bekommen wir die gänzlich unpassende Adresse 192.169.20.16 für "192.169.20.018".

Dann habe ich mal kurz ins Netz geschaut und zumindest folgendes gefunden: Neil Cowburn - IPAddress.Parse() Gotcha

137 Beiträge seit 2005
vor 18 Jahren

Mit welche Versionen von Windows/Service Packs hast Du denn getestet? Vielleicht kann es ja noch jemand auf gleichen Versionen reproduzieren.

Q
Quest Themenstarter:in
108 Beiträge seit 2004
vor 18 Jahren

Hmm, das ganze geht noch weiter, wenn ich "192.169.020.010" Parse krieg ich "192.169.16.8" raus - irgendwie verstümmelt der jedes mal bei führenden Nullen...
In dem Link von bitsream gehts ja um genau dasselbe...

Zusammenfassend macht er nur Mist mit den führenden Nullen und bei mir am PC (nur bei mir, bei nem weiteren Kollegen funktionierts auch) wirft er mit einigen Werten die führende Nullen beinhalten - 018, 019 - mit Exceptions um sich - sehr strange, aber ich bin noch keinen Milimeter weitergekommen, im Netz findet man dazu ja so gut wie nix...

B
189 Beiträge seit 2004
vor 18 Jahren

Original von Quest
Hmm, das ganze geht noch weiter, wenn ich "192.169.020.010" Parse krieg ich "192.169.16.8" raus - irgendwie verstümmelt der jedes mal bei führenden Nullen...

Vorausgesetzt die Teile mit führenden Nullen werden als Oktalzahl gewertet, wäre das ja auch korrekt: 010 oct = 8 dez. Merkwürdig wird es eigentlich nur, wenn bei Voranstellen einer 0 eine ungültige Oktalzahl wie 019 notiert wird. Da würde ich einen Fehler erwarten.

In dem Link von bitsream gehts ja um genau dasselbe...

Den habe ich mir selber nochmal angeschaut. Dort geht es zwar um das Compact Framework, aber wenigstens habe ich überhaupt etwas dazu gefunden... 😉

Q
Quest Themenstarter:in
108 Beiträge seit 2004
vor 18 Jahren

Berkeley Unix notation for an Internet address, consisting of one to four numbers (a "dotted quad") in hexadecimal (leading 0x), octal (leading 0), or (usually) decimal. It represents a 32-bit address. Each leading number represents eight bits of the address (high byte first) and the last number represents the rest. E.g. address 0x25.32.0xab represents 0x252000ab. By far the most common form is four decimal numbers, e.g. 146.169.22.42.

ich denke genau so agiert das framework hier bei mir und schmeisst bei allem mit 8 und 9 mit invalid IP um sich, nur warum er bei euch allen dann die 018 und 019 nimmt bleibt mir ein rätsel...