Comportement de pointeurs étrange.

classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

Comportement de pointeurs étrange.

hyjial
Bonjour !

 Etant en train de lire le code d'installboot(8/i386), j'ai voulu essayer les fonctions utilisées dans son code avec ces quelques lignes :
http://hyjial.free.fr/dotclear/public/disk.c

 Il en sort :
http://hyjial.free.fr/dotclear/public/disk.out

 En d'autres termes *dev est NULL lors de la deuxième comparaison. Je ne comprends pas pourquoi. Des idées ?

 Merci d'avance.

    hyjial





________________________________
French OpenBSD mailing list
[hidden email]
http://www.openbsd-france.org/ml

Reply | Threaded
Open this post in threaded view
|

Re: Comportement de pointeurs étrange.

Pierre Riteau-3
On 1 mars 09, at 17:14, hyjial wrote:

> Bonjour !
>
> Etant en train de lire le code d'installboot(8/i386), j'ai voulu  
> essayer les fonctions utilisées dans son code avec ces quelques  
> lignes :
> http://hyjial.free.fr/dotclear/public/disk.c
>
> Il en sort :
> http://hyjial.free.fr/dotclear/public/disk.out
>
> En d'autres termes *dev est NULL lors de la deuxième comparaison. Je  
> ne comprends pas pourquoi. Des idées ?
>
> Merci d'avance.
>
>    hyjial

C'est à cause d'une erreur de débutant en C ;)
Tu déclares la variable char **dev sans l'initialiser. Donc quand tu  
dis à opendev de modifier *dev pour le faire pointer vers le nom  
complet du device, la valeur *dev qui est changée est à un endroit  
aléatoire de la mémoire (correspondant à ce qu'il y a sur la pile à  
l'endroit où dev est stocké).
dev doit probablement pointer sur un endroit de la pile également, et  
est écrasée par l'appel à ioctl, ce qui expliquerait le changement de  
valeur de *dev après l'appel à ioctl.

Regarde les sources originales de installboot, ce n'est bien entendu  
pas comme ça que c'est codé.

Pierre Riteau
________________________________
French OpenBSD mailing list
[hidden email]
http://www.openbsd-france.org/ml

Reply | Threaded
Open this post in threaded view
|

Re: Comportement de pointeurs étrange.

Azwaw OUSADOU
In reply to this post by hyjial
On Sunday 01 March 2009 17:14:24 hyjial wrote:

> Bonjour !
>
>  Etant en train de lire le code d'installboot(8/i386), j'ai voulu essayer
> les fonctions utilisées dans son code avec ces quelques lignes :
> http://hyjial.free.fr/dotclear/public/disk.c
>
>  Il en sort :
> http://hyjial.free.fr/dotclear/public/disk.out
>
>  En d'autres termes *dev est NULL lors de la deuxième comparaison. Je ne
> comprends pas pourquoi. Des idées ?
>
>  Merci d'avance.
>
>     hyjial
>
>
>
>
>
> ________________________________
> French OpenBSD mailing list
> [hidden email]
> http://www.openbsd-france.org/ml

Il Me semble que le périphérique pour faire de opérations sur les disques
c'est plutot /dev/rsd0. Que veux tu faires exactement ?

BSDManiak

________________________________
French OpenBSD mailing list
[hidden email]
http://www.openbsd-france.org/ml

Reply | Threaded
Open this post in threaded view
|

Re: Comportement de pointeurs étrange.

Pierre Riteau-3
On 1 mars 09, at 20:59, Azwaw OUSADOU wrote:

> On Sunday 01 March 2009 17:14:24 hyjial wrote:
>> Bonjour !
>>
>> Etant en train de lire le code d'installboot(8/i386), j'ai voulu  
>> essayer
>> les fonctions utilisées dans son code avec ces quelques lignes :
>> http://hyjial.free.fr/dotclear/public/disk.c
>>
>> Il en sort :
>> http://hyjial.free.fr/dotclear/public/disk.out
>>
>> En d'autres termes *dev est NULL lors de la deuxième comparaison.  
>> Je ne
>> comprends pas pourquoi. Des idées ?
>>
>> Merci d'avance.
>>
>>    hyjial
>>
>>
>>
>>
>>
>> ________________________________
>> French OpenBSD mailing list
>> [hidden email]
>> http://www.openbsd-france.org/ml
>
> Il Me semble que le périphérique pour faire de opérations sur les  
> disques
> c'est plutot /dev/rsd0. Que veux tu faires exactement ?
>
> BSDManiak

http://www.openbsd.org/cgi-bin/man.cgi?query=opendev&apropos=0&sektion=0&manpath=OpenBSD+Current&arch=i386&format=html
________________________________
French OpenBSD mailing list
[hidden email]
http://www.openbsd-france.org/ml