Python versus LinuxIsNotUniX — Les-mathematiques.net The most powerful custom community solution in the world

Python versus LinuxIsNotUniX

Soit ce code
def suivant(u):
    if u%2==0:
        u=u//2
    else:
        u=3*u+1
    return u
def syr(u):
    f1=open("/home/emmanuel/articles/toto.txt","a",encoding='utf8')
    while u>1:
        f1.write(str(u)+"\n")
        u=suivant(u)
    f1.write(str(u)+"\n")
    f1.close()  
def toutes_les_suites(dernier):
    i = 1
    while i<dernier+1:
        u=i
        syr(u)
        i+=1
        
dernier = 50000000
toutes_les_suites(dernier)
print("Terminé!\n")

Si la valeur de dernier est remplacée par une "très grande valeur" Python peut-il écrire dans les zones systèmes protégées en écriture ?

Réponses

  • Tu ouvres un fichier en écriture, et ensuite Python va envoyer bit par bit les données à écrire. Je ne vois pas pourquoi le système l'autoriserais à aller trop loin.

    Les attaques de ce type (Buffer overflow) fonctionne dans un cadre mal sécurisé, mais sauf faille particulière de ton OS, l'écriture de fichier doit être parmi les trucs les plus sécurisés.
  • dpdp
    Modifié (April 2023)
    Je ne suis pas certain de comprendre la question.
    En bref et sans entrer dans le détail : si tu en arrives à ne plus avoir d'espace disque, Python produira une exception (IOError si mes souvenirs sont bons) et tuera ton programme. En revanche, ce qui pourrait arriver c'est plutôt que si tu es en admin, et qu'un autre programme essaie d'écrire des données dans un fichier système, les systèmes récents étant multi-threadés, cela risque fort de coincer et t’amener à plein de soucis; mais clairement ça ne viendra alors pas de python en lui-même. Dans tous les cas, c'est toujours bon de jeter un œil sur son espace disque pour éviter ça. La dernière fois que ça m'est arrivé dans des tests, mon système avait coupé le jus tout seul.
  • @dp Donc, si j'ai compris, tu es en train de me dire que contrairement au C python sait contrôler un système d'exploitation qui lui-même ne contrôle pas les dépassements des mémoires de stockage?
  • Python est un langage de haut niveau, donc non ce n'est pas l'utilisateur qui gère la mémoire.
    Et même C ne peut pas faire n'importe quoi non plus hein.
  • dpdp
    Modifié (April 2023)
    Si tu veux découvrir comment c'est géré tu peux trouver l'implémentation en C de la fonction python write que tu utilises ici puis aller ici pour voir comment est implémenter _Py_write qui est la fonction qui nous intéresse réellement et ainsi de suite pour remonter de fil en aiguille. :)
Connectez-vous ou Inscrivez-vous pour répondre.
Success message!