[RE-Release]Serverdown + Fix

07/14/2013 16:47 Nick#46
Quote:
Originally Posted by sucopowa View Post
laber? erlich?
dachte das wen man auf den button pusht, das dieser command in internen console durchgefürt wird, und nicht per chat... so so... wieder was neuse dazu gelehrnt... (fehlt nur noch das du auch recht hast :p)
Stimmt so nicht, Logout, Charakterwechsel, Quit wie der Rest funktioniern weiterhin über das Escapemenü einbahnfrei.

Es geht nur darum, dass man nicht selbst /logout, /phase_select in die Chatbar eintippen und abschicken kann. Entsteht also kein Nachteil.
07/14/2013 16:54 DasKuchen#47
@Jayzon die Funktion ,die überprüft checkt nur bei der normaler Chateingabe allerdings kann man einfach direkt ein ChatPacket senden und es passiert keine Überprüfung.
07/14/2013 17:23 sucopowa#48
ja mein gott, aber um die leute die nichtmal wissen wie man ein client entpackt, und nur durch zufall an de /dice kak command gekommen sind, die würde es aufhaltten... (aber wen man wie vorhin schon jemand geposted hatt, einfach nur den /dice serverseitig einschrenkt, oder komplett weg macht, und es keine weitere funktzionen gibt die nerven... dan würd ich auch meinen das wir das python für nen anderen mal lassen xDD)

PS: heute habe ich schon 3 post´s und 1 pn gescrieben :$
07/15/2013 12:25 xworldx#49
is possible find in some log, who shutdowned server ? thx
07/15/2013 12:42 sucopowa#50
Quote:
Originally Posted by xworldx View Post
is possible find in some log, who shutdowned server ? thx
look in the db "log", and open the table "command_log" and search for "dice" or whatever, i don´t know if it will appears, but it´s lastly a command...
07/15/2013 12:47 xworldx#51
no, dice isnt here .. players commands arent in command_log (as set_w ....)
07/16/2013 09:31 Mi4uric3#52
Quote:
Originally Posted by .Deza View Post
Man kann jegliche Server auch mit anderen Befehlen downen, z.B:

PHP Code:
/BEFEHL -214***3648 214***3647 
Schwachsinn. Das Problem liegt in der number_ex()-Funktion, und die wird nicht einfach von jedem Chatcommand aufgerufen.

Quote:
Originally Posted by .Deza View Post
(Die Zahl wird generiert von - bis.. Aber wenn es über den INT-Wert geht kann das der Core nicht mehr verarbeiten & schmiert sozusagen ab)
Das Problem ist, dass "x % 0" gerechnet wird.

Quote:
Originally Posted by .Deza View Post
Schaltet komplett alle /-Befehle für User aus.
Schwachsinn. Wie soll man sich dann ausloggen, PVP starten, etc.?
Der Client sendet auch nur die "/logout" etc. Chatbefehle.
07/17/2013 01:57 Emily17#53
Quote:
Originally Posted by Mi4urice
Das Problem ist, dass "x % 0" gerechnet wird.
Nicht ganz hihi^^ Die Konvertierung macht mehr Probleme. Du kannst den Server schließlich auch mit /dice -10 100 erledigen, obwohl da nie und nimmer die Aussage "x%0" entstehen könnte. Es liegt an der Konvertierung von signed int zu unsigned int, welche ohne Weiteres nicht möglich ist :) (danke hier an xCPx, der mich zur Vernunft gebracht hat hehe^^)
07/17/2013 04:14 .Alpha.#54
Quote:
Originally Posted by .Remix. View Post
Blockiert mal alle /-Befehle.
Macht den Server on und freut euch auf die ersten Beschwerden, dass man nicht auf's Pferd kann.

"gibt mehr befehle kann die aber nicht sagen müsst nur alle user befehle sperren" :facepalm:

Richtig unnötiger Thread.

Btw kannst bei dice soviel zensieren, wie du willst.
Bei /dice -1 7 sollte der Core schon abstürzen :rolleyes:
Logisches Denken ftw
Nein, dabei stürzt der Core nicht ab ...

Schön zu sehen wie panisch ihr alle werdet ... und was ihr eine Ahnung von Technik habt einfach unbeschreiblich :D

"obwohl da nie und nimmer die Aussage "x%0" entstehen könnte."


(x + 1 - y)
x = -2147483648
y = 2147483647
-2147483648 + 1 - 2147483647 = 0
____________________________
-MAX_INT + 1 = MAX_INT
MAX_INT - MAX_INT = 0

Integer overflow

% = Modulo Operator = Rest einer Teilung

2147483647 + random() % 0

Teilung durch 0 = Division through Zero exception
und jetzt kommt mir nicht mit unsigned int gerechnet wird immer noch mit signed int
07/17/2013 13:49 Emily17#55
Kein Grund so böse zu werden ^^

Du vergisst die Überprüfungen:

2147483647 > -2147483648
Darum werden die beiden Variabeln vertauscht:
v2 = argument2
v3 = argument1

Da -2147483648 unter 0 liegt, wird es ersetzt. v2 wird demnach durch 0 ersetzt.

Nun sehen die beiden Variabeln so aus für die Rechnung:
v2 = 0
v3 = 2147483647

Nun schauen wir uns noch einmal die Rechnung an:
v2 + thecore_random() % (unsigned int)(v3 + 1 - v2);

Demnach:
0 + random() % (2147483647+1-0)
Damit kommt er direkt an max_int und somit nicht zu 0.

Ich hoffe die Erklärung macht deutlich, dass dadurch der Core nicht down gehen kann :)


Aber vielen Dank für den Beitrag, ich habe eine andere Lücke bei mir gefunden und bin gerade daran, diese zu beheben :)
07/17/2013 13:51 ´LaLu`#56
hat jetzt jemand eine diff wie man es richtig fix ?
07/17/2013 14:35 Emily17#57
Wenn meine Dif komplett fertig ist, kannst du sie benutzen, damit fixt du dann das Problem 100% (du kannst den dice-Befehl dann ruhig wieder aktivieren :))
07/17/2013 15:07 ´LaLu`#58
wann wird deine dif fertig sein
07/17/2013 15:14 Emily17#59
Naja im Moment bin ich gerade Mitten in der Arbeit^^

Code:
unsigned int __cdecl number_ex(int a1, int a2)
{
  int v2; // ebx@1
  int v3; // esi@1
  int v4; // ebx@8
  unsigned int result; // eax@9
  unsigned int v6; // ST2C_4@9

  v2 = a1;
  v3 = a2;
  if ( a1 > a2 )
  {
    v3 = a1;
    v2 = a2;
  }
  if ( a1 == a2 )
    goto LABEL_13;
  if ( v2 < 0 )
    v2 = 0;
  if ( v3 < 0 )
    v3 = 1;
  v4 = v2 + 1;
  if ( v3 != v4 )
    result = v4 - 1 + thecore_random() % (unsigned int)(v3 + 1 - (v4 - 1));
  else
LABEL_13:
    result = v6;
  return result;
}
Mein bisheriges Ergebnis, wobei ich mittlerweile denke, dass ich damit die Funktion etwas zerschossen hab, da der Server damit nich startet. Muss mal logisch nochmal alles durch den Kopf gehen und nachschauen, ob ich da nich doch ne falsche Variable genommen habe o. ä.^^
Vermutlich habe ich da einen kleinen Fehler gemacht, der letztendlich doch eine negative Zahl in die Divison mit aufnimmt und das zieht den Core wieder weg. Ich muss mal schauen^^