<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=utf-8"><meta name=Generator content="Microsoft Word 15 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
span.gmail-word
        {mso-style-name:gmail-word;}
.MsoChpDefault
        {mso-style-type:export-only;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style></head><body lang=EN-US link=blue vlink="#954F72"><div class=WordSection1><p class=MsoNormal><span lang=RO>Din nou, MAP_ANONYMOUS îți face memset(0) direct în kernel pentru că nu ești pe Arduino sau altă platformă pe care să fie dezactivată această funcție de securitate. Deci primești din prima cu 0, așa că nu înțeleg întrebarea.<o:p></o:p></span></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Sent from <a href="https://go.microsoft.com/fwlink/?LinkId=550986">Mail</a> for Windows 10</p><p class=MsoNormal><o:p> </o:p></p><div style='mso-element:para-border-div;border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in'><p class=MsoNormal style='border:none;padding:0in'><b>From: </b><a href="mailto:so@cursuri.cs.pub.ro">Dorin Geman via so</a><br><b>Sent: </b>Friday, April 3, 2020 9:37 PM<br><b>To: </b><a href="mailto:dariusmihaim@gmail.com">Darius Mihai</a>; <a href="mailto:so@cursuri.cs.pub.ro">Sisteme de Operare</a><br><b>Subject: </b>Re: [so] [Tema3][General] Protectie pagina ce trebuie zeroizata</p></div><p class=MsoNormal><o:p> </o:p></p><div><div><p class=MsoNormal><o:p> </o:p></p></div><div><div><p class=MsoNormal>On Fri, Apr 3, 2020 at 9:05 PM Darius Mihai <<a href="mailto:dariusmihaim@gmail.com">dariusmihaim@gmail.com</a>> wrote:</p></div><blockquote style='border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-right:0in'><p class=MsoNormal>On Fri, Apr 3, 2020 at 8:50 PM Dorin Geman via so <<a href="mailto:so@cursuri.cs.pub.ro" target="_blank">so@cursuri.cs.pub.ro</a>> wrote:<br>><br>> Salutare,<br>><br>> Am o curiozitate(prioritate scăzută) - mi se pare că testele nu verifică un anumit caz, probabil pentru că este greu de simulat, dar cel puțin conceptual, vă întreb:<br>><br>> Corect este că dacă trebuie să zeroiezez o zonă de memorie, mai întăi să mapez pagina cu WRITE pentru a putea zeroiza și apoi să îi schimb permisiunile în cele corespunzătoare segmentului din care face parte, de acord?<br>> Cu toate acestea, dacă mapez de la început cu permisiunile segmentului, totul este în regulă, trec testele, pentru că se testează doar pentru zona de bss.<br>> Exemplul care ar face cea din urmă implementare să "pice" ar fi ca în executabilul pe care vreau să îl încarc să am un mmap cu READ și ANONYMOUS? Alte idei de scenarii?<br>><br>> Pentru asistenții indicați pe ocw[0] , puteți vedea codul pt GitLab[1] - liniile 65-85.<br>> Dacă mapez din prima cu segment.perm și scot mprotect, all good, dar nu mi se pare tocmai corect.<br>><br>> Numai bine,<br>> Dorin Geman, 331CA<br>><br>> [0] <a href="https://ocw.cs.pub.ro/courses/so/teme/folosire-gitlab#creare_proiect_nou" target="_blank">https://ocw.cs.pub.ro/courses/so/teme/folosire-gitlab#creare_proiect_nou</a><br>> [1] <a href="https://gitlab.cs.pub.ro/dorin_andrei.geman/l3-so-assignments/blob/master/3-loader/skel-lin/loader/loader.c" target="_blank">https://gitlab.cs.pub.ro/dorin_andrei.geman/l3-so-assignments/blob/master/3-loader/skel-lin/loader/loader.c</a><br><br>Salut, Dorin,<br><br>Din motive de securitate (nu vrei ca un proces să poată accesa datele<br>din memoria fizică pe care un alt proces a eliberat-o), maparea<br>zonelor de memorie în mod anonim va zeroiza pagina înainte ca tu poți<br>să o accesezi. Vezi și în pagina de manual [3], la secțiunea<br>MAP_ANONYMOUS. Acest comportament ar putea, în teorie, să nu fie<br>activ pe unele sisteme vechi sau embedded (din motive de performanță),<br>dar este aproape sigur prezent pe sistemele uzual folosite de acum.<br><br>[3]: <a href="https://linux.die.net/man/2/mmap" target="_blank">https://linux.die.net/man/2/mmap</a><br><br>O seară frumoasă,<br>Darius</p></blockquote><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>Salut, Darius!</p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>Corect, am înțeles.</p></div><div><p class=MsoNormal>Atunci cum pot simula un scenariu în care sa pice codul meu de loader dacă nu dau PROT_WRITE explicit înainte de zeroizare?</p></div><div><p class=MsoNormal>Mai concret, dacă trebuie să mapez o pagină read-only si trebuie să îi ofer și drept de scriere <span class=gmail-word>până</span> termin zeroizarea, dar nu i-l ofer.</p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal><span class=gmail-word>Seară</span> <span class=gmail-word>faină</span>,</p></div></div></div><p class=MsoNormal>Dorin</p><p class=MsoNormal><o:p> </o:p></p></div></body></html>