[SOS] Une ânerie pour bien commencer

Thomas Petazzoni thomas.petazzoni at enix.org
Sat Jun 19 14:59:37 CEST 2004


Bonjour,

On Fri, 18 Jun 2004 15:20:15 +0200
Brice Arnould <98111 at free.fr> wrote:

> Tout d'abord, bonjour et surtout merci à vous autres auteurs de cette
> série d'articles qui s'annonce formidable ^_^.

Merci beaucoup, et merci également pour tes commentaires.

> Pourquoi avoir réservé un seul octet au lieu de quatre pour retval ?
> ça risque pas de faire en fait un strlen modulo 255 et des bugs pour
> les programmes utilisateurs ?

Un unsigned int est utilisé. Sur architecture x86, un unsigned int est
codé sur 32 bits, ce qui nous laisse quand même pas mal de marge.

Autre détail : le fichier klibc.c contient des fonctions ala libc, mais
strictement réservées au noyau. La fonction strlen() dont tu parles ne
peut et ne sera utilisé que par le noyau.

La fonction strlen() utilisée par les programmes utilisateur sera dans
la vraie libc (sous GNU/Linux, glibc, ou plus rarement uclibc).

> -Je crois que "dst[len-1] = '\0'; " est superflu dans strzcpy (ça
> risque même de rajouter un problème si len == 0).

Non, le dst[len-1] n'est pas superflu. Il permet de s'assurer que même
si len est une taille plus petite que celle de src, dst sera bien
terminée par un'\0'(c'est un problème que pose la fonction strncpy
classique).

A mon avis, un

 if(len == 0)
 {
   return 0;
 }

En début de fonction me paraîtrait adapté.

> -Toujours dans strzcpy, pourquoi ne pas utiliser 32 bits pour stocker
> len ?

32 bits sont utilisés ;)

> -Dans strzcat, est-ce que "char *res = dest;" ne risque pas de donner 
> "*res==dest" (pointage prioritaire sur l'assignation) alors que le but
> serait "res==dest" ?

Non, char *res = dest créé bien un pointeur vers char appellé res, qui
initialement pointe sur la même chose que dest.

> Enfin bon... j'arrête là parce que je pense que je dois vraiment vous
> casser les ******* -_^. Si par miracle, certains des trucs que j'ai
> cru trouver sont réellement des bugs mais que vous avez pas de temps à
> perdre, je me ferais une joie de chercher les bugs à votre place (dans
> klibc que j'arrive à comprendre et peut être ailleurs plus tard) et
> essayer de les corriger.

On va corriger l'erreur du len == 0, merci encore pour tes remarques, et
n'hésite pas à poser d'autres questions.

Thomas
-- 
PETAZZONI Thomas - thomas.petazzoni at enix.org 
http://thomas.enix.org - Jabber: kos_tom at sourcecode.de
KOS: http://kos.enix.org/ - Lolut: http://lolut.utbm.info
Fingerprint : 0BE1 4CF3 CEA4 AC9D CC6E  1624 F653 CB30 98D3 F7A7
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
Url : http://the-doors.enix.org/pipermail/sos/attachments/20040619/75533a74/attachment.pgp


More information about the Sos mailing list