Bug 27747 - Speicherangabe wird nicht validiert
Speicherangabe wird nicht validiert
Status: CLOSED FIXED
Product: UCS
Classification: Unclassified
Component: UMC - Virtual machines (UVMM)
UCS 3.0
All Linux
: P5 minor (vote)
: UCS 3.0-2
Assigned To: Philipp Hahn
Lukas Walter
: interim-2
Depends on:
Blocks: 26645 27778
  Show dependency treegraph
 
Reported: 2012-06-26 17:00 CEST by Philipp Hahn
Modified: 2012-10-09 11:54 CEST (History)
1 user (show)

See Also:
What kind of report is it?: ---
What type of bug is this?: ---
Who will be affected by this bug?: ---
How will those affected feel about the bug?: ---
User Pain:
Enterprise Customer affected?:
School Customer affected?:
ISV affected?:
Waiting Support:
Flags outvoted (downgraded) after PO Review:
Ticket number:
Bug group (optional): Usability
Max CVSS v3 score:
hahn: Patch_Available+


Attachments
Validate memory size (1.86 KB, patch)
2012-06-27 08:42 CEST, Philipp Hahn
Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Philipp Hahn univentionstaff 2012-06-26 17:00:37 CEST
Gibt man bei der Hauptspeichergröße für eine VM etwas Falsches ein, hat die VM anschließend "-1024 B".
Hier sollte die Eingabe validiert werden, bevor der Benutzer eine Change hat, die Daten abzuspeichern.
Comment 1 Philipp Hahn univentionstaff 2012-06-27 08:42:26 CEST
Created attachment 4482 [details]
Validate memory size

Use the same regexp as in the DomainWizard to validate the entered memory size.
Comment 2 Philipp Hahn univentionstaff 2012-06-27 08:47:34 CEST
Der Patch ist erstmal eine Zwischenlösung. Langfristig sollte das Textfeld in UMC für die Eingabe der RAM- und Festplattengröße durch ein eigenes Widget ersetzt werden, was die komfortable Eingabe von KiB-TiB-Werten erlaubt, die entsprechenden Limits für RAM (>= 4 MiB, derzeit <x GiB, Schrittweite 1 MiB) und Festplatte (eher >= 1 GiB, <X TiB, Schrittweite 1 GiB). Zudem sollte zwischen UMC-Frontend und UMC-Backend kein String der Form "X.Y [KMGT]B" ausgetauscht werden, sondern wie zwischen UMC-Backend und UVMMd direkt die Größe in Bytes, was die Validierung (u.a. für Bug #26645) vereinfacht.
Comment 3 Philipp Hahn univentionstaff 2012-06-27 11:16:16 CEST
Noch ein Nachtrag: Die minimale RAM-Größe ist 4 MiB, was derzeit nur im Wizard, aber nicht auf der DomainPage erzwungen wird.
KiB macht von daher hier auch keinen Sinn und sollte erst gar nicht angeboten und akzeptiert werden.
Comment 4 Philipp Hahn univentionstaff 2012-06-27 14:02:02 CEST
Die RegExp wurde nun auch in die DomainPage übernommen.
Dort alsauch im DomainWizard wurde Kilobyte entfernt.

Der Bug lasse ich offen, weil die Überprüfung auf 4 MiB noch fehlt und das ganze nochmal überarbeitet werden muß.

svn33828, univention-virtual-machine-manager-daemon_1.0.111-1.378.201206271323

ChangeLog: svn13657
\item A validation constraint was added to the memory size of domains (\ucsBug{27747}).
Comment 5 Philipp Hahn univentionstaff 2012-06-29 16:11:43 CEST
Die Überprüfung von 4 MiB wurde nun auch noch im Frontend integriert.
Die Ersetzung des Textfeldes durch ein eigenes Widget aus comment #2 wird in einem eigenen Bug #27778 weiterverfolgt.
Akzeptiert werden jetzt folgende Werte:
     1
     2 B
     3 K
     4 MB
     5 GiB
Nur im DomainWizard wird bei ersterem die Standard-Einheit MB ergänzt.
Angaben unter 4 MiB werden nicht akzeptiert.

svn33912, univention-virtual-machine-manager-daemon_1.0.111-2.379.201206291604

ChangeLog: ±0
Comment 6 Lukas Walter univentionstaff 2012-07-04 12:16:28 CEST
Akzeptiert werden grundsätzlich die Einheiten:
B/KB/KIB/MB/MIB/GB/GIB (in allen Kombinationen von upper/lower case)

Darüber hinaus gibt es eine Fehlermeldung wenn der angebgene Speicher 4 194 304 Byte unterschreitet.


Changelogeintrag ist in Ordnung,
Verified.
Comment 7 Philipp Hahn univentionstaff 2012-07-12 16:24:01 CEST
Die Werte wurde zwar im JavaScipt frontend akzeptiert, allerdings konnte das Python-Backend damit nicht umgehen und hat so z.B. "512 M" zu "-1" umgewandelt.

Der Python-Code wurde angeglichen und die fehlenden Unit-Doc-Tests für in MemorySize.num2str() ergänzt.
Das ganze ist per "python umc/python/uvmm/tools.py" nachprüfbar: Für die bisher akzeptierten Werte hat sich nichts geändert, neu hinzugekommen sind '512 B', '512 MiB' und eine verbesserte Fehlerbehandlung für ungültige Einheiten wie "2 XB".

svn34178, univention-virtual-machine-manager-daemon_1.0.111-3 TBB
ChangeLog: ±0
Comment 8 Lukas Walter univentionstaff 2012-07-13 12:26:23 CEST
MemorySize().str2num('512 B') liefert "-1" zurück.
Comment 9 Philipp Hahn univentionstaff 2012-07-13 12:57:11 CEST
Die Funktion MemorySize.str2num() akzeptiert die Einheit sowohl im String
alsauch als Standardvorgabe als extra Parameter. Dabei wurde noch übersehen,
daß dort auch noch [Ii] und [Bb] vorkommen, was dann zu einer erfolglosen
Umwandlung des Faktors geführt hat.

Der Unit-(doc-)Test läuft jetzt auch wieder durch:
python umc/python/uvmm/tools.py # → ø

svn34197, svn34198, univention-virtual-machine-manager-daemon_1.0.111-5.384.201207131254
ChangeLog: ±0
Comment 10 Lukas Walter univentionstaff 2012-07-13 15:39:24 CEST
(In reply to comment #9)
> Die Funktion MemorySize.str2num() akzeptiert die Einheit sowohl im String
> alsauch als Standardvorgabe als extra Parameter. Dabei wurde noch übersehen,
> daß dort auch noch [Ii] und [Bb] vorkommen, was dann zu einer erfolglosen
> Umwandlung des Faktors geführt hat.
> 
> Der Unit-(doc-)Test läuft jetzt auch wieder durch:
> python umc/python/uvmm/tools.py # → ø
> 
> svn34197, svn34198,
> univention-virtual-machine-manager-daemon_1.0.111-5.384.201207131254
> ChangeLog: ±0

>>> ms.str2num('512')
512L
>>> ms.str2num('512 B')
512L
>>> ms.str2num('512 B', unit='MB')
536870912L
>>> ms.str2num('512', unit='MB')
536870912L
>>> ms.str2num('512', unit='MiB')
536870912L
>>> ms.str2num('512', unit='MiBas')
-1


Jetzt sieht's gut aus.
Verified.
Comment 11 Stefan Gohmann univentionstaff 2012-07-20 15:24:19 CEST
UCS 3.0-2 has been released: 
  http://forum.univention.de/viewtopic.php?f=54&t=1905

If this error occurs again, please use "Clone This Bug".