Des variables repoussées produisent-elles des failles ?
tatsuyad
Messages postés
75
Date d'inscription
Statut
Membre
Dernière intervention
-
lefilsdelaterre Messages postés 11 Date d'inscription Statut Membre Dernière intervention -
lefilsdelaterre Messages postés 11 Date d'inscription Statut Membre Dernière intervention -
Bonjour.
Novice en Perl,j'ai écrit un code comme tel:
Comme vous le voyez,le nombre des paramètres passés ne correspond pas à la fonction "Salut" de l'appel. En C,si on ne fait pas recours à "Valt" (Le nom,je ne m'en souvients plus,c'est une variable prédéfinie par le systéme qui permet d'avoir beaucoup de variables à passer à printf() ).
Perl ne grogne sur rien,même si j'inclus deux modules au top..
Pensez-vous que mon code est sain ?
Novice en Perl,j'ai écrit un code comme tel:
use strict; use warnings; sub Salut{ my ($x,$y) = @_; print "Salut".$x.$y; } Salut("jiji","jaja","juju");
Comme vous le voyez,le nombre des paramètres passés ne correspond pas à la fonction "Salut" de l'appel. En C,si on ne fait pas recours à "Valt" (Le nom,je ne m'en souvients plus,c'est une variable prédéfinie par le systéme qui permet d'avoir beaucoup de variables à passer à printf() ).
Perl ne grogne sur rien,même si j'inclus deux modules au top..
Pensez-vous que mon code est sain ?
EDIT : Ajout du LANGAGE dans les balises de code.
Explications disponibles ICI Merci d'y penser dans tes prochains messages. |
A voir également:
- Des variables repoussées produisent-elles des failles ?
- Failles web - Accueil - Piratage
- Afficher des variables dans un QLabel ✓ - Forum Programmation
- L'Europe veut protéger les consommateurs contre les failles des logiciels - Accueil - Protection
- Des failles de sécurité sur les PC portables Lenovo - Guide
- Les variables ✓ - Forum Python
1 réponse
Bonjour,
Perl n'a aucune raison de grogner. Les arguments envoyés à la fonction sont tous les trois stockés automatiquement dans le tableau @_, et rien n'oblige à tous les utiliser par la suite.
Dans ton code, tu choisis simplement de recopier les deux premiers arguments et de ne pas utiliser le troisième.
Perl n'a aucune raison de grogner. Les arguments envoyés à la fonction sont tous les trois stockés automatiquement dans le tableau @_, et rien n'oblige à tous les utiliser par la suite.
Dans ton code, tu choisis simplement de recopier les deux premiers arguments et de ne pas utiliser le troisième.
Moi,qui ne connaissait que C et Java,suis bien impressionné.Avec $_,Perl
a deux variables intarissables qui pourraient protéger notre petit mimi mémoire
de l'overflow misérable ?
Merci monsieur pour m'avoir aidé !
On peut très bien se mettre à la place d'un utilisateur qui envoie trois arguments en espérant qu'ils soient tous les trois traités, or la fonction n'en utilise que 2. Le programme ne montre aucun signe de cette lacune, et à débugger ça peut vite devenir un calvaire.
En C on devrait par exemple envoyer deux arguments : l'un pour le nombre de chaînes à traiter, et le deuxième un tableau de pointeurs, chacun correspondant à l'adresse d'une chaîne. L'affichage se ferait alors dans une boucle.
Cela donnerait quelque chose comme ça :