From 3239324141c4cab1de3c6bdd32900df7fb200af5 Mon Sep 17 00:00:00 2001
From: Moi <you@example.com>
Date: Fri, 21 Mar 2025 08:11:44 +0100
Subject: [PATCH] rename sous TD1

---
 TD1/.DS_Store                                | Bin 0 -> 6148 bytes
 TD1/Rapport.md                               |  84 +++++++++++++++++++
 {config => TD1/config}/cert_exp_33.c         |   0
 {config => TD1/config}/cert_exp_33_realloc.c |   0
 {config => TD1/config}/cwe20.c               |   0
 {config => TD1/config}/example1.c            |   0
 {config => TD1/config}/libstring.c           |   0
 {config => TD1/config}/libstring.h           |   0
 {config => TD1/config}/miniz.c               |   0
 {config => TD1/config}/miniz.h               |   0
 frama-c-gui.png => TD1/frama-c-gui.png       | Bin
 studia.png => TD1/studia.png                 | Bin
 tp.md => TD1/tp.md                           |   0
 13 files changed, 84 insertions(+)
 create mode 100644 TD1/.DS_Store
 create mode 100644 TD1/Rapport.md
 rename {config => TD1/config}/cert_exp_33.c (100%)
 rename {config => TD1/config}/cert_exp_33_realloc.c (100%)
 rename {config => TD1/config}/cwe20.c (100%)
 rename {config => TD1/config}/example1.c (100%)
 rename {config => TD1/config}/libstring.c (100%)
 rename {config => TD1/config}/libstring.h (100%)
 rename {config => TD1/config}/miniz.c (100%)
 rename {config => TD1/config}/miniz.h (100%)
 rename frama-c-gui.png => TD1/frama-c-gui.png (100%)
 rename studia.png => TD1/studia.png (100%)
 rename tp.md => TD1/tp.md (100%)

diff --git a/TD1/.DS_Store b/TD1/.DS_Store
new file mode 100644
index 0000000000000000000000000000000000000000..d01b1532d58335ad9f4ee22eda1f8f91b7e85519
GIT binary patch
literal 6148
zcmZQzU|@7AO)+F(5MW?n;9!8zj35RBCIAV8Fop~hR0Kpbg3ZWeNKYy+E=bDBPlCz~
zb_(QnHil$|e1<%RGzL`n??@`h$t*50Fu2CZ#LU9V#?H>k&dnYhoRME1T#{H)TI`fq
z6b<5q<mcxk!PtpOVVSAr@d6^w`FSOYnR%&2ASJ<>DXB?`MKR%-c`5njPWh#IDaByD
zPzg>>4$gQ1iRx-2GgBP}BMZw~9ffL3BLf`;6JxX5T22m8Wqs?Q`0SkAy!<XmpfWN-
zXa-&=4Wqgl7#L9eR2E#6my@5D4vKe}qEUJ@1V%$(Gz3ONV8n(1wEp1W9<d=X>haMK
z7!3hjApj~L6rgQJ2PoYDp+Qm%j0_B*<}-+9ftdm62QYxdKw3dGNGpg2X=PvpvA|}4
zwK6a=K(sP~yCEQbpe_lB25V<vWB_YtU}OMmXMi<&86nyk7$MpjV4W96h;{}>h;{}>
zh<2FsM(NQI7!3hv2rxrv0Z{$#$^g$o5YbU`Gz3ONU_^ufBa2J0ixap~#_nHGT??vD
z6QI(d+8<IKgDPs&MgS9JKv4p!6ja@Vw1Q}GRm{i$smVth0<aJorAI@6{viMW>yAtg

literal 0
HcmV?d00001

diff --git a/TD1/Rapport.md b/TD1/Rapport.md
new file mode 100644
index 0000000..bc0ba37
--- /dev/null
+++ b/TD1/Rapport.md
@@ -0,0 +1,84 @@
+# Rapport
+
+## CERT C EXP33-C. Do not read uninitialized memory
+
+### Question 1
+
+Les messages émis sont 'normaux', sachant que sign vaut -1, 1 ou UNINITIALIZED et que la valeur de retour de la fonction est 0 ou 1 (booléen).
+Le problème du CERT est identifiable grâce à la possibilité d'avoir un sign UNINITIALIZED.
+
+### Question 2
+
+Il n'y a pas de Red Alarm.
+Pour le second 'if' de 'set_flag', la valeur de number est dans l'intervalle [-INT_MIN..0], ce qui correspond bien au faite qu'il est dans le 'else' de la condition de 'number > 0'.
+
+### Question 3
+
+Le Frama_C_show_each_set_flag affiche '[-INT_MIN..INT_MAX], {-1;1}'
+Le Frama_C_show_each_is_negative affiche '[-INT_MIN..INT_MAX], {-1;1}'
+On voit que le UNINITIALIZED n'est plus pris en compte dans les lignes suivantes, Eva considère que sign vaut 1 ou -1.
+
+### Question 4
+
+
+Avec '-eva-partition-history 2', Frama_C_show_each_set_flag affiche maintenant trois cas différents :
+Frama_C_show_each_set_flag : {0}, Bottom
+Frama_C_show_each_set_flag : [-INT_MIN..-1], {-1}
+Frama_C_show_each_set_flag : [1..INT_MAX], {1}
+
+On voit que Eva garde en mémoire plusieurs chemins d'exécution et 'relit' les valeurs de number et de sign en fonction des cas.
+
+### Question 5
+
+On voit avec l'option '-eva-interprocedural-history' que l'analyse lève une erreur : '1 access to uninitialized left-values'.
+En effet, dans le scope de la fonction 'set_flag', la valeur de sign peut être non initialisé et si on garde cette information en revenant de la fonction, on accède à cette variable non initialisé dans le return, ce qui déclance l'alarme rouge.
+
+### Question 6
+
+En mettant 'number >= 0' dans la première condition de 'set_flag', on va initialiser la valeur de 'sign' dans tous les cas.
+En effet, l'exécution d'Eva ne déclenche plus d'alarme après cette modification.
+
+## CERT C EXP33-C bis
+
+### Question 7
+
+Dans l'exécution du ficher 'cert_exp_33_realloc.c', Eva déclenche 2 erreur :
+
+- 1 access to uninitialized left-values
+- 1 escaping address
+
+Celle qui correspond à la lecture d'une location mémoire non-initialisée est la première : access to uninitialized left-values.
+
+### Question 8
+
+Avec une option de '-eva-slevel 3', nous n'avons plus qu'une erreur : 1 access to uninitialized left-values. En effet, les problèmes où resize_array rate et renvoie 0 sont attrapé apr le handle error.
+Eva se 'souvient' que l'array est alloué si et seulement si resize_array retourne quelque chose de non nul.
+Maintenant qu'Eva est sûr que les print du tableau tapent dans un emplacement alloué, la seule erreur qu'il reste est que cette emplacement n'est pas initialisé.
+
+### Question 9
+
+Avec la correction, il n'y a plus d'erreur détecté par Eva (le nouveau tableau a bien été initialisé)
+
+## CWE 20
+
+### Question 10
+
+Frama-C/Eva est plutôt critique du code... 8 alarmes sont déclenchées :
+
+- 5 integer overflows
+- 2 invalid memory accesses
+- 1 access to uninitialized left-values
+
+### Question 11
+
+Les modifications proposées ne permettent pas de supprimer toutes les erreurs. Elles suppriment les 5 erreurs integer overflows mais pas les accès invalid et la non-initialisation.
+
+### Question 12
+
+Grâce à la directive de split, on a plus les accès invalides à la mémoire
+
+## libstring
+
+### Question 13
+
+Il n'y a bien aucune erreur dans l'exécution avec la librairie libstring.
diff --git a/config/cert_exp_33.c b/TD1/config/cert_exp_33.c
similarity index 100%
rename from config/cert_exp_33.c
rename to TD1/config/cert_exp_33.c
diff --git a/config/cert_exp_33_realloc.c b/TD1/config/cert_exp_33_realloc.c
similarity index 100%
rename from config/cert_exp_33_realloc.c
rename to TD1/config/cert_exp_33_realloc.c
diff --git a/config/cwe20.c b/TD1/config/cwe20.c
similarity index 100%
rename from config/cwe20.c
rename to TD1/config/cwe20.c
diff --git a/config/example1.c b/TD1/config/example1.c
similarity index 100%
rename from config/example1.c
rename to TD1/config/example1.c
diff --git a/config/libstring.c b/TD1/config/libstring.c
similarity index 100%
rename from config/libstring.c
rename to TD1/config/libstring.c
diff --git a/config/libstring.h b/TD1/config/libstring.h
similarity index 100%
rename from config/libstring.h
rename to TD1/config/libstring.h
diff --git a/config/miniz.c b/TD1/config/miniz.c
similarity index 100%
rename from config/miniz.c
rename to TD1/config/miniz.c
diff --git a/config/miniz.h b/TD1/config/miniz.h
similarity index 100%
rename from config/miniz.h
rename to TD1/config/miniz.h
diff --git a/frama-c-gui.png b/TD1/frama-c-gui.png
similarity index 100%
rename from frama-c-gui.png
rename to TD1/frama-c-gui.png
diff --git a/studia.png b/TD1/studia.png
similarity index 100%
rename from studia.png
rename to TD1/studia.png
diff --git a/tp.md b/TD1/tp.md
similarity index 100%
rename from tp.md
rename to TD1/tp.md
-- 
GitLab