Un po di tempo fa mi son posto un quesito :
Avendo un puntatore ad una variabile allocata sullo stack (non l’heap, quindi memoria statica), è possibile determinare quanti byte ci posso scrivere al massimo prima di andare in overflow ?
Naturalmente, nel caso di una stringa con la corretta terminazione nulla, basterebbe una semplice chiamata a strlen ed il gioco è fatto … ma avendo un puntatore “generico”, del quale non si sa niente, ne il tipo di dati ai quali punta, ne se è terminato, o altro ?
Voi potreste dire “e a che scopo fare una cosa del genere ?”
Beh, immaginate di dover scrivere una libreria .so o .a e, in una delle varie funzioni che volete esportare, di ricevere come parametro un puntatore del quale non conoscete la natura e nel quale dovete scrivere delle informazioni … non sarebbe utile (più che altro doveroso XD) accertarsi quanto potete scrivere prima di fottere tutto ?!
Inizialmente pensai ad una soluzione drastica, un piccolo modulo kernel che si interfacciava al gestore della memoria per darci le info necessarie sul puntatore in questione, ma oltre che ad estremamente complicata come soluzione, ho scoperto che era anche inutile!
Ebbene si, dopo tante ricerche e ore di studio, ho scoperto finalmente il modo
More…
Popularity: 17% [?]