Source Mage GNU/Linux
Benoît Papillault, 10/11/2004
Présentation de l'outil installwatch
installwatch est un outil développé par Pancrazio `Ezio'
de Mauro en 1998 et maintenu depuis par Felipe Eduardo Sanchez Diaz
Duran sur son site web : http://asic-linux.com.mx/~izto/checkinstall/installwatch.html. Il
permet de garder une trace des fichiers créés ou modifiés lors de
l'installation d'un logiciel. C'est de cette façon qu'il est utilisé
par sorcery .
Bugs de la version 0.6.3
La version 0.6.3 est la dernière version disponible à l'heure où ce
document est écrit. Elle comporte des bugs subtiles qu'il n'est pas
aisé de reproduire. Voici la liste :
-
Bug 1: des dépassements de buffer provoque des plantages
lorsque l'on utilise des noms de fichiers trop long.
-
Bug 2: la fonction
lchown est implémentée avec la
fonction true_chown au lieu de true_lchown .
-
Bug 3: si
installwatch est utilisé lors de
l'installation d'installwatch lui-même (ce qui se passe
sur Source Mage GNU/Linux), alors la modification de
LD_PRELOAD faite lors du make install fait
que le fichier installwatch.so n'est pas tracé.
-
Bug 4: la compilation est faite sans utiliser les variables
standards $(CCC) et $(CFLAGS). Cela rend impossible d'ajouter des
options d'optimisation (comme cela est prévue dans Source Mage
GNU/Linux). De plus, la création de la bibliothéque n'est pas correcte
et ne fonctionne par sur l'architecture
x86_64 .
-
Bug 5: installwatch utilise
syslog en lui passant
directement un buffer. Cela peut provoquer des plantages.
Version originale d'installwatch: Téléchargez
installwatch 0.6.3
Reproduction des bugs
Afin de corriger un bug, il faut trouver un moyen de le reproduire
systématiquement. Comme il s'agit ici de bugs difficilement
reproductibles, j'ai écris un petit logiciel qui permet de les
vérifier : installwatch-check-1.0.tar.bz2.
La compilation est faite de manière classique:
tar jxvf installwatch-check-1.0.tar.bz2
cd installwatch-check-1.0
make
su
# arrétez syslog car syslog ne doit pas tourner pendant le test
make check
Vous obtiendrez alors quelques choses de comparable à ça:
Running check without installwatch
syslog test success
open test success
chown test success
lchown test success
MAXPATHLEN test success
syslog buffer test success
Running check with installwatch
open: No such file or directory
cmp: EOF on log-with.txt
installwatch check FAILED
Corrections apportées
Pour chacun des bugs énumérés ci dessus, voici les corrections
correspondantes:
Les corrections doivent être appliquées dans l'ordre suivant:
installwatch-ld-preload.diff
installwatch-errno.diff
installwatch-buffer.diff
installwatch-cflags.diff
installwatch-syslog.diff
Version modifiée d'installwatch:
Téléchargez installwatch 0.6.4
Vérification des corrections
L'outil installwatch-check présenté plus haut à été
utilisé pour vérifier les corrections apportées. Les tests se sont
déroulés avec succés (voir ci-dessous):
Running check without installwatch
syslog test success
open test success
chown test success
lchown test success
MAXPATHLEN test success
syslog buffer test success
Running check with installwatch
syslog test success
open test success
chown test success
lchown test success
MAXPATHLEN test success
syslog buffer test success
installwatch check SUCCESSFULL
Etat des corrections
Ces corrections ont été transmises par email au responsable
d'installwatch le 17 Novembre 2004. Il a répondu le 21
Novembre 2004 qu'il allait regardé ces corrections.
|