Source Mage GNU/Linux

Programmes Projet Speedtouch Projet Snoopy Projet eciadsl La recette du pain Source Mage BeOS Mon CV Mon blog Notes On nous prend pour des cons! Don
Programmes
Projet Speedtouch
Projet Snoopy
Projet eciadsl
La recette du pain
Source Mage
BeOS
Mon CV
Mon blog
Notes
On nous prend pour des cons!
Don
en fr

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.
Valid XHTML 1.0! CSS Valide !
Benoît Papillault