Yop, amis coders !
Combien sommes nous à utiliser une autre bibliothèque C que celle
standard ? Suis-je le seul à me rendre compte que tous les bugs
sont dus exclusivement, à la mauvaise utilisation des fonctions de
la libc. (toute plateforme confondue)
Que dès qu'un programme se veut secure, la première chose qu'il
implémente soit une bibliothèque ? Pourquoi ne sont elle jamais
réutilisées ?
Ne jamais réinventer la roue c'est ce qui se dit, mais je vois
surtout que c'est quelque-chose de très fréquent dès qu'il s'agit
d'un programme ''secure''. Pour s'en convaincre il suffit de voir
le nombre d'implémentations différentes dans la gestion de buffers
disponibles dans le monde des LL.
Suis-je réellement le seul malade à ne plus utiliser stdio.h et
string.h ?
J'utilise actuellement et essentiellement
http://www.fefe.de/libowfat/.(...) Et vous qu'utilisez vous ? ( ca fait
slogan pourri, mais j'aime bien !)
# glib
Posté par Colin Leroy (site web personnel) . Évalué à 4.
[^] # Re: glib
Posté par Nicolas Boulay (site web personnel) . Évalué à 2.
"La première sécurité est la liberté"
[^] # Re: glib
Posté par M . Évalué à 3.
[^] # Re: glib
Posté par ckyl . Évalué à 2.
[^] # Re: glib
Posté par Guillaume Knispel . Évalué à 2.
[^] # Re: glib
Posté par ckyl . Évalué à 3.
Pour les fonctions de plus haut niveau il est clair que dans la majorité des cas il va plus vite de les réécrire; la majorité c'est des exercices de première année de C.
Si tu veux des trucs plus net, il utilise au moins : printf, malloc, realloc avec trois grep au hasard. Il ne fourni pas d'allocateur mémoire à ma connaissance. Il n'a donc pas vocation à ne pas utiliser la libc mais simplement rajouter une couche dessus.
Bref la glib utilise la libc, libowfat utilise la libc c'etait juste ou je voulais en venir.
[^] # Re: glib
Posté par forc3 . Évalué à 1.
Le propos de ce journal c'est plus sur l'idee que chaque gros
développement a choisi de refaire des choses que l'on trouve
dans la libC de base.
Je veux juste mettre l'accent sur le fait qu'il n'y ai pas vraiment de raison
pour lesquelles l'argument de réinventer la roue ne s'applique
pas ici...
_ Programme pourri, utilise libc et fonctions de string pourries
_ Programme 'secure', recode un lib de base...
Pourquoi ne pas avoir fait dans la libc un lib 'secure' ?
Dans enormément de cas c'est l'API qu'il faut remettre en cause,
pourquoi ne pas diriger les jeunes developpeurs vers des apis
mieux faites ?
(parce que si t'es jeune tu penses que le java c'est ultime ...)
[^] # Re: glib
Posté par ckyl . Évalué à 1.
Raisons historiques. J'etais pas la mais il me semble quand même qu'au moment de normaliser c'était déjà trop tard y'avait des implémentations pourries. Et le C c'est ultra conservateur à chaque fois qu'on risque de peter quelque chose on rajoute une tartine dans le norme pour rien casser. K&R & co n'avait pas prévu que leur langage sortirait de leur labo apparement :-)
> Dans enormément de cas c'est l'API qu'il faut remettre en cause
l'API de la libc est une sous merde. Je connais pas win32 mais je pense pas qu'il y ait plus utilisé et aussi mauvais que la libc; même dans les extensions sont attroces. Quand tu vois les socket par exemple...
Comme ca evolue pas, on se retrouve avec des extensions partout; et les uns ne veulent surtout pas des extensions des autres, c'est beaucoup plus pratique comme ca !
> pourquoi ne pas diriger les jeunes developpeurs vers des apis
mieux faites ?
Par ce que la plupart des profs de C sont completement a côté de la plaque et ne savent même pas utiliser strncpy(3) ou qu'il n'y a pas forcement de '\0'. Ca fait maintenant 3 ans que je fais du C en milieu scolaire j'ai jamais entendu prononcé une fois "buffer overflow" ou sécurité... Tu peux avoir 17 en programmant un shell qui repose sur des longjmp() dans un sighandler sans se proteger... La sécurité ca doit exister dans un monde parallèle mais pas ici.
Il est clair qu'une bonne alternative à la libc serait interessante. Je n'ai jamais mis la main sur un lib suffisament complète et documentée pour le moment par contre. Le mot de la fin, le C c'est le conservatisme à l'état pur, pour le meilleur comme pour le pire !
[^] # Re: glib
Posté par fredix . Évalué à 1.
Tu peux utiliser le lib Gnet qui utilise la glib :
http://www.gnetlibrary.org/(...)
Maintenant si tu veux un truc tout intégré utilise python ou ruby ...
[^] # Re: glib
Posté par Franck . Évalué à 2.
malloc => g_malloc
free => g_free
allocation + sprintf => g_strdup_printf
malloc sur structure => g_new
l'infâme strtok => g_strsplit
Etc...
[^] # Re: glib
Posté par Nicolas Boulay (site web personnel) . Évalué à -2.
"La première sécurité est la liberté"
[^] # Re: glib
Posté par Matthieu Moy (site web personnel) . Évalué à 6.
[^] # Re: glib
Posté par forc3 . Évalué à 2.
le problème de cette lib, c'est qu'elle utilise trop d'assert,
qu'elle est bloated, et que surtout elle ne segfault pas quand
elle devrait...
C'est pas un hasard si enormement d'appli GTK sorte des warning
sur ton terminal... Trop d'appli ne sont pas corrigée parceque justement ce ne sont pas des erreurs bloquantes.
Un strlen sur un string NULL _doit_ segfaulter...
Trop de flexibilité rends les programmeurs trop lazy ...
C'est mon point de vue. On peut ne pas etre d'accord. Mais mon
experience me conforte dans cette idée.
[^] # Re: glib
Posté par Franck . Évalué à 3.
De quelle fonction parles-tu ? Je ne vois nulle g_strlen ou approchant là-dessous :
http://developer.gnome.org/doc/API/2.0/glib/glib-String-Utility-Fun(...)
De plus Gnome lui-même utilise des strlen. Cherche sur koders.com par exemple.
[^] # Re: glib
Posté par forc3 . Évalué à 1.
ce que je veux dire c'est que cette lib rends le developpement
un peu trop permissif a mon gout, Et que des bugs ne sont
jamais corriges car non bloquant.
Maintenant Glib fournit des g_string, qui sont beaucoup mieux
que de simple char *.
[^] # Re: glib
Posté par Pinaraf . Évalué à 3.
Sorti aujourd'hui !
# Plus simple
Posté par Ramso . Évalué à 2.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.