Utilité, dangers et problèmes de putnow/putdccraw
#1
Vous savez surement que la version 1.6.20 d'eggdrop implémente désormais putnow. Cette commande permet d'envoyer un message au serveur directement sans passer par le système de queues.
L'autre truc par contre, c'est que la commande putdccraw est devenue obsolète et ne fonctionne plus.
Pour des raisons de compatibilité on peut ajouter ce genre de procédure:
Code :
proc putdccraw {idx length string} { if {$idx} { putdcc $idx  [string range [string trimright $string \n] 0 $length-1] } else { putnow [string range [string trimright $string \n] 0 $length-1] } }
Elle devrait permettre d'éxecuter les scripts habituels sans problème.



J'en profite pour dire que putnow peut faire apparaitre des failles de sécurité dans certains cas.
Les commandes putquick/puthelp/putserv ont une particularité, qui est de s'arreter au premier \n, donc de ne transmettre qu'une ligne à la fois au serveur. Ce n'est pas le cas de putnow.

Autrement dit, il est possible de faire afficher n'importe quoi au bot après la commande envoyée par le script en injectant un \n (retour à la ligne) !
Dans la plus part des cas, il n'est pas nécessaire de s'en préoccuper, puisque la nature même de l'information d'entrée fait qu'il est impossible d'y insérer un retour à la ligne (par exemple sur IRC, le \n marquera la fin du message, on a tendance à lire les fichiers ligne par ligne, etc etc.)
Par contre il y a un cas précis pour lequel il faut faire extrémement attention : la conversion de base. Par exemple vous voyez l'HyperConverter de MenzAgitat ? On peut injecter des retours à la ligne ! Il suffit de transformer un nombre en octal par exemple (en l'occurence 012), et il sera transformé en \n à la conversion en string.
En l'occurence, ca ne fera que couper la sortie, vu que le script utilise putquick. Mais gardez bien ça en tête en utilisant putnow: si ce que vous envoyez au serveur avec contient des trucs venant de l'utilisateur, et vous faites des transformations dessus, faites bien attention à ne prendre que la première ligne (tout ce qu'il y a avant le \n). Sinon c'est bien simple, on peut faire envoyer n'importe quoi au bot.
  Répondre   Avertir


Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)