ThWboard Support-Forum (Archiv)

Ort: / Boardübersicht / Archiv / Admincenter / Gruppenrechte: Byte 31 fehlerhaft ?


Seite 1 von 1

Narodnaja schrieb am 06.02.2003 um 00:31 Uhr

Bin grade am hacken und habe dabei die Rechte-bytes 28 - 31 belegt. 28 - 30 klappt auch alles wunderbar, aber # 31 will nicht. Das liefert nämlich den Wert "-2147483648" statt das korrekte Ergebnis "2147483648".
Das wirkt sich auf zweierlei Arten aus: 1.) der Name des Bildes in der Gruppenrechtevergabe (macht aber nix) und 2.) ist das wohl der Grund, warum man die Rechte für Byte 31 nicht setzen kann ... geht immer wieder auf "no" zurück, ohne Speicherung.

Zum testen einfach mal die Zeilen für byte 31 in der groups.php einbauen und ausprobieren.

Jemand ne Idee ?

Superhausi schrieb am 06.02.2003 um 07:39 Uhr

Das Problem ist wohl, dass PHP keine unsigned Integers kennt... Deshalb sollte man nur die Bytes 1 bis 30 benützen.
Bugfix:
/* Note: Bits 1 to 27 are reserved for thwb, use 28 to 31 for hacks! */
ändern in
/* Note: Bits 1 to 27 are reserved for thwb, use 28 to 30 for hacks! */
:D

Narodnaja schrieb am 06.02.2003 um 12:51 Uhr

hmpf. ich brauche aber 4 bits.

werde dann wohl auf 27 - 30 zurückgreifen. Hilft ja nix.

Bluetooth schrieb am 06.02.2003 um 18:05 Uhr

Narodnaja, bei Bit 31 sollte es eigentlich noch funktionieren ... ist ein Problem in PHP beziehungsweise allgemeine Programm- und Speicherprozeduren (32-bit Systeme, 64-bit Systeme)
Wir überlegen uns eine Möglichkeit, mehr Bits für Rechte zu Verfügung zu stellen, wir wollen ja auch noch ein paar Rechte einbauen ;)

Bugreport: http://bugs.php.net/bug.php?id=11725

Narodnaja schrieb am 06.02.2003 um 19:05 Uhr

es sollte, ja - aber tuts nicht. Habs bei zwei Installationen getestet.

Versuchts mal jemand anderer ?

dp schrieb am 07.02.2003 um 00:23 Uhr

hm das ist normal, da bei php bit nummer 31 für das vorzeichen zuständig ist. aber du solltest damit ganz normal arbeiten können, ob das jetzt signed oder unsigned ist braucht dich ja nicht zu interessieren.

problematisch wird es erst mit der speicherung in der datenbank, da die bitmask leider unsigned ist und damit wird eine negative bitmask nicht gespeichert, sie wird positiv gespeichert. versuch also mal, den spaltentyp umzuändern, wenn es funktioniert, dann wird es im nächsten updatescript automatisiert.

bit 32 ist aber leider nicht zu gebrauchen, da hier der wert zu einem double gecastet wird und für bitoperationen unbrauchbar wird...

Narodnaja schrieb am 07.02.2003 um 10:24 Uhr

hab accessmask in _group und _groupboard von unsigned auf "nix" geändert, der Wert wird aber trotzdem nicht gespeichert.

Seite 1 von 1