Bonjour,
J'aimerai savoir si la fonction memmove_s est utilisée par l'un d'entre vous et si c'est le cas en utilisant quel compilateur?? (j'ai regardé dans gcc il n'y est pas)
Merci
Bonjour,
J'aimerai savoir si la fonction memmove_s est utilisée par l'un d'entre vous et si c'est le cas en utilisant quel compilateur?? (j'ai regardé dans gcc il n'y est pas)
Merci
Ces fonctions (strcpy_s, sprintf_s) sont des extensions Microsoft à la librairie standard du C. Ce sont des améliorations, en termes de sécurité au niveau du code, des fonctions standards strcpy, sprintf, ... qui ne permettent pas par exemple de spécifier la taille du buffer qui va recevoir les données. Personnellement, j'utilise ces fonctions mais pas dans des programmes Open Source .
Les fonctions de la librairie standard permettent d'écrire des programmes solides, si on sait bien se servir d'elles. Par exemple, utiliser _snprintf (C99) au lieu de sprintf, strncpy au lieu de strcpy, etc. Au pire, implémenter ses propres fonctions.
Oui je suis bien d'accord avec toi, par contre il existe desfonctions pour lesquels il existe toujours une problématique , la fonction que je recherche par exemple, memmove( ) comment tu veux la sécuriser sans réécrire le code source de memmove_s?? l'accès à la mémoire sous C est toujours problématique...
"The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
"If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow
FAQ-Python FAQ-C FAQ-C++
+
"Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".
Consultant indépendant.
Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
C, Fortran, XWindow/Motif, Java
Je ne réponds pas aux MP techniques
je parlais de memmove..
standard etc...
En quoi elle te pose problème au niveau sécurité ??
"Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".
Consultant indépendant.
Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
C, Fortran, XWindow/Motif, Java
Je ne réponds pas aux MP techniques
c'est ça.Envoyé par Thierry Chappuis
Parce qu'elle n'offre aucun moyen de spécifier la taille du buffer de destination.Envoyé par souviron34
Les fonctions utilisant la mémoire sous C ont toutes été déprécies en faveur des fonctions xxx_s pour empêcher les buffer overflow. Un buffer Overflow permet à un malatentioné de prendre le contrôle de la machine en passant par des droits root..et il y a beaucoup d'exemples sur le net qui expliquent ce genre d'attaque
Tout d'abord, il n'y a pas d'implémentation de fonction dans un fichier .h. Un fichier d'en-tête ne contient que des déclarations de fonctions, des définitions de types, de macros, etc. L'implémentation c'est dans les fichiers .c. Ensuite, comme je l'ai déja dit plus haut ces fonctions sont des extensions de Microsoft à la librairie du C, elles ne sont pas tenues à être connues de tous les compilateurs. Et enfin, si tu veux des fonctions "sécurisées" tu n'as qu'à implémenter les tiennes. Mais jusqu'où va cette sécurité en fait? Si le programme est bien écrit, il n'y a pas vraiment de différence à utiliser memcpy ou memcpy_s ...
Parle-t-on de la même fonction?
Il est clair que si on lui balance n'importe quoi comme paramètres, on aura des petits soucis.#include <string.h>
void *memmove (void *dest, const void *src, size_t n);
DESCRIPTION
La fonction memmove() copie n octets de la zone de mémoire src vers la zone dest. Les deux zones peuvent se chevaucher.
Bien le bonjour chez vous
Jowo
et quand tu fais un strcpy , strcat, ou n'importe quelle fonction ???
En C en général il faut savoir ce qu'on fait...
Comme dirait Emmanuel, c'est pas pour les frileux...
Si tu fais une copie ou un mouvement mémoire sans savoir dans quoi tu le places, too bad...
Les fonctions de la bibliothèque sont génériques, utilisées partout..
Libre à toi de refaire ce que tu veux, mais je trouve particulièrement ... de vouloir remplacer des fonctions standards.. plutôt que de bien les utiliser..
"Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".
Consultant indépendant.
Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
C, Fortran, XWindow/Motif, Java
Je ne réponds pas aux MP techniques
mdrrrr
j'aimerais bien :
- Primo que tu me montres un lien disant que ces fonctions sont "dépréciées"
- Secondo - à part pour M$, et c'est dû à son système de sécurité lâche, et non à l'utilisation de telle ou telle fonction de bibliothèques standards de langages standards - un exemple de prise de contrôle d'une machine par un memmove
"Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".
Consultant indépendant.
Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
C, Fortran, XWindow/Motif, Java
Je ne réponds pas aux MP techniques
Pas de Wi-Fi à la maison : CPL
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager