arreglar bug de login
#1

escuche unos rumores q en el gm actividad rp o zenon city, hay un bug en el login, que se pueden ingresar 24 caracteres o algo asi, y hace q se reinicie el server... alguno sabe cual es?? y como arreglarlo gracias
Reply
#2

No dejes que ingresen mas de 24 caracteres entonces...

if(strlen(inputtext) > 24) return // muestre el dialogo otra vez
Reply
#3

No te explicarй como funciona pero la mejor manera de evitarlo es esta:

pawn Код:
if(strlen(inputtext) > 24 || strlen(inputtext) < 200 )   return // muestre el dialogo otra vez
Te explicarнa el porque pero hay demasiado "hacker" y luego pasa lo que pasa.
Reply
#4

Quote:
Originally Posted by Tirael
Посмотреть сообщение
No te explicarй como funciona pero la mejor manera de evitarlo es esta:

pawn Код:
if(strlen(inputtext) > 24 || strlen(inputtext) < 200 )   return // muestre el dialogo otra vez
Te explicarнa el porque pero hay demasiado "hacker" y luego pasa lo que pasa.
Te aseguro que eso no funciona, "1 2 3 4 5 6 7 8 9 10 ..." son menores que 200, nadie podra ingresar y mucho menos registrar. Y tambien el input esta restringido a 128 caracteres, no tiene caso usar 200 como un numero limite.
Reply
#5

Como dije no voy a explicar como funciona pero se a ciencia cierta que funciona y dije la forma de evitarlo. Ahora bien, si quieren hacen caso y si no pues no lo hagan, es su criterio ( se que limita a 128 caracteres pero si lo puse es por algo ).
Reply
#6

Quote:
Originally Posted by Tirael
Посмотреть сообщение
Como dije no voy a explicar como funciona pero se a ciencia cierta que funciona y dije la forma de evitarlo. Ahora bien, si quieren hacen caso y si no pues no lo hagan, es su criterio ( se que limita a 128 caracteres pero si lo puse es por algo ).
if(strlen(inputtext) > 24 || strlen(inputtext) < 200 )

Eso significa que si lo que ingresa el usuario es mayor a 24 o menor a 200 muestre el dialogo otra vez, osea, no tiene sentido, porque en todo caso deberнa cumplir las 2 sentencias (&&) pero segъn ese cуdigo del 200 al menos infinito se cumple el if.

Cualquier nъmero menor a 200 ya lo cumple... No tiene sentido.
Reply
#7

Si se reinicia por ingresar mas de 24 carбcteres significa que lo ingresado en el diбlogo se guarda en una variable que tiene 24 celdas (en 0.3.7 es "MAX_PLAYER_NAME") por lo que ingresar una cadena de mayor longitud, la variable se "desborda" lo que provoca el "crash" del servidor.

Si se quiere condicionar que una cadena tenga una longitud entre X y X carбcteres, se debe hacer algo como:

pawn Код:
if((min <= strlen(cadena) <= max)) return SendClientMessage(0, -1, "Tiene entre 'min' y 'max' carбcteres");
O bien, la contra:

pawn Код:
if(!(min <= strlen(cadena) <= max)) return SendClientMessage(0, -1, "No tiene entre 'min' y 'max' carбcteres");
Reply
#8

me pueden explicar de nuevo.. jajaja q dialogo tengo q limitar a eso? los de contraseсa o los de nombre de usuario??
el chico dijo q con 24 y 200 se aregla.. es funcional asi? o estan mal puesto los < > o || ??
estoy re podrido q me tiren el server con eso jaja
Reply
#9

Los diбlogos estilos "DIALOG_STYLE_INPUT" y "DIALOG_STYLE_PASSWORD" tienen un lнmite de ingreso para 128 carбcteres. Limitar el ingreso hasta 200 no tiene ningъn sentido.

Que diбlogo debes limitar? Todos los que se puedan "desbordar". Ve cuales son los del "bug" y hazlo ahн.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)