Bug nel JavaScript di Firefox: dati sensibili a rischio
Secunia ha rivelato un pericoloso bug in Firefox, un'errata gestione delle stringhe JavaScript. Verrebbero esposti alcuni dati presenti in memoria
di Fabio Boneschi pubblicata il 07 Aprile 2005, alle 15:39 nel canale SicurezzaFirefoxMozilla









Recensione Google Pixel 11: non ha l'HiLight dei Pro, ma è il Pixel più equilibrato di sempre
Google Pixel 11 Pro XL: fotocamera al top, batteria indietro. Luci e ombre del nuovo flagship
Non sai programmare? Ecco cosa si può fare con un LLM e una GeForce RTX 5070 Ti
4 friggitrici ad aria a prezzo stracciato su Amazon: si parte da 39€, a 84,99€ c'è anche una COSORI
Sennheiser Momentum 5, i nuovi auricolari top di gamma hanno la batteria sostituibile
Serie A e Serie B al via: guida ai nuovi abbonamenti DAZN e TIMVISION (c'è anche il piano per una sola squadra)
CMF Buds Neo, il sub-brand di Nothing prova il rilancio con un paio di auricolari low cost
GTA 6 è già un successo: i preordini stanno andando molto bene
Una Visa scaduta può ancora pagare in negozio: bastano due telefoni
I migliori robot aspirapolvere in offerta su Amazon: 25.000 Pa a 379€, rullo lavapavimenti e modelli top fino a 42.000 Pa
The Duskbloods non cambia la direzione di FromSoftware: Miyazaki conferma che lo studio continuerà a puntare sui single-player
Un weekend di ribassi eccezionali su Amazon: c'è di tutto, dai PC alle e-bike, dagli smartphone ai robot, sembra un Black Friday
Cosa succede se l'IA diventa una persona?
Tutta la stagione NFL 2026/2027 è su DAZN, ecco i piani disponibili per il Game Pass
I 3 portatili in offerta migliori di tutta Amazon: quello con 32GB di RAM, 1TB SSD e Intel Core 5 a 604€ è imbattibile, ma...
iPhone 17 Pro e Pro Max ai minimi storici su Amazon: il risparmio reale va da 160€ a 190€
SK hynix, il boom dell'HBM finisce in busta paga: un decimo dell'utile ai dipendenti









167 Commenti
Gli autori dei commenti, e non la redazione, sono responsabili dei contenuti da loro inseriti - info"Every fool can write code that a machine can understand, only good programmers can write code that a human can understand"
Marin Fowler in "Refactoring: Improving the Design of Existing Code".
Fino a Windows 3.1 lo erano: poi no. IMHO, chiaramente
Per quel che ho capito da un vecchio (non troppo) articolo di Pc Professionale, il problema principale di Win 9x era la gestione "ibrida" dei processi per ottenere il multitasking, al fine di mantenere compatibilità con il dos: per quelli a 32 bit si realizzava un multitasking prelativo, efficiente, per quelli a 16 bit, compresi alcuni moduli del s.o. stesso, si effettuava un multitasking "cooperativo" (un po' come per il dos, che non era stato pensato per il multitasking), affidando ai processi stessi il compito di rilasciare le risorse a favore degli altri quando lo ritenessero opportuno, oppure (credo) approfittando di un i/o burst per fare uno swapping dei processi, senza un meccanismo di prelazione. Ne conseguiva che, se un processo (a 16 bit) andava in crash, trascinava con sé nel baratro tutti quelli (naturalmente solo quelli a 16 bit) che condividevano/contendevano le stesse risorse, compresi i moduli del kernel a 16 bit, da cui il problema della schermata blu. Con le varie versioni di NT questo problema è stato risolto "cacciando" fuori dal kernel tutto ciò che non è essenziale e i moduli necessari alla compatibilità con il dos e gli applicativi a 16 bit. Con xp di schermate blu ne ho viste ben poche, delle quali una per un paio di ca@@ate fatte da me e le altre per un banco di memoria che stava morendo e, diavolo a farlo apposta, mi dava problemi sempre con lo stesso driver e poche altre cose (dannata polvere
Mi è capitato di averci ancora a che fare due o tre anni fa, grazie a un mio amico (e coinquilino) al quale era stato praticamente regalato un piccolo cimelio, un portatile (o forse sarebbe meglio dire "trasportabile", data l'epoca della sua nascita) 286 con 2 mega (se non ricordo male) di ram. E' stato divertente smanettarci un po' e lanciarsi banane da un tetto all'altro...
Purtroppo ormai anche all'università si comincia a programmare in Java e, anzi, quasi sempre è l'unico linguaggio utilizzato e studiato per quanto riguarda la programmazione in generale, e a oggetti in particolare.
Per questo sono convinto che non farebbe male partire con un po' di programmazione strutturata, meglio se in Pascal, per la sua forte tipizzazione. Credo che basti qualche algoritmo di gestione delle liste con inserimenti e (soprattutto) cancellazioni per inquadrare il problema ed estendere poi il concetto senza troppi problemi agli oggetti.
A proposito di oggetti, la versione in Pascal non l'ho mai approfondita, ma non ho dubbi che sia fatta bene. Per quel che ne so, è un peccato che non abbia avuto altrettanto successo l'erede forse più diretto del Pascal standard, il Modula 2 (non vorrei dire castronerie, ma potrebbe essere stato opera di Wirth), che ne correggeva i difetti (tipo il mancato controllo sui bound di un intervallo) e introduceva la programmazione a oggetti. Probabilmente fu colpa del nome poco incisivo, chissa, lo avessero chiamato Perfect Pascal, Pascal Plus o Pascal 2...
Be', forse lo sono un po' anch'io
In sintesi sono totalmente a favore degli ambienti gestiti come Java e .NET. Credo sia solo una questione di strumenti ed usare gli strumenti adatti a risolvere un dato problema: devo scrivere il kernel di un sistema operativo, posso farlo in Java o C#? No, perche' non ho gli strumenti espressivi per esprimere determinati concetti. Devo scrivere un'architettura di streaming video peer to peer (
Perfettamente d'accordo, ed in fondo è proprio li che volevo andare a parare. Il livello di astrazione di cui stiamo parlando sostanzialmente demanda ciò che astrae al livello sottostante (framework/VM) e di conseguenza i linguaggi corrispondenti a tale livello non possono essere usati per sviluppare il software che deve girare ai livelli inferiori, mentre sono ottimi per tutto il resto. In ogni caso, insieme al controllo viene demandata anche la risoluzione di (alcuni di) quei problemi che potrebbero produrre dei bug, per cui potrebbe avere senso fare comunque (magari in circostanze particolari/opportune) un testing a 360 gradi con un occhio di riguardo al comportamento dello strato sottostante, magari per comunicare tempestivamente al team che sviluppa il framework un eventuale bug (esempio banale: l'utilizzo del valore "lenght" associato a ciascun array in un ciclo, insieme a un sistema opportuno di eccezioni per la verifica del rispetto dei confini, dovrebbe scongiurare il pericolo di un buffer overflow/underflow, però un piccolo test, di tanto in tanto, per verificare cosa succede a cavallo del valore limite, credo che male non faccia). Dico questo perchè, a mio modo di vedere, questo demandare il controllo a un livello sottostante da un lato localizza molte problematiche, rendendone probabilmente più facile la risoluzione da parte del team che si dedica allo sviluppo del framework (una volta e per tutte) - e semplificando la vita agli altri sviluppatori
Piu' che non far male, quel test dovrebbe essere obbligatorio. E i test quando e' possibile vanno scritti prima di scrivere il codice relativo.
Forse non ha fatto Dijkstra la dimostrazione vera e propria (ma ne sono quasi sicuro, boh..) ma ha scritto di certo quanto indicato da xeal.[/QUOTE]
Forse ho trovato il bandolo della matassa
"
OK, grazie.
Per questo preferisco Pascal e derivati al C...
Sono d'accordo (ed è, poi, ciò che ha detto fek...)
.NET?
Infatti è perché non ci sei abituato.
Le poche volte in cui mi cimento ancora con le classi in Delphi (Pascal), scrivo subito assieme costruttore/i e distruttore/i, codice che alloca e libera la memoria, codice che crea istanze di oggetti e che li distrugge, infarcendo il tutto con blocchi try/(except|finally).
E' anche una questione di mentalità, che si acquisce col tempo lavorando con un linguaggio, e imparando a usarlo e sfruttarne le caratteristiche per scrivere codice "migliore".
- alcune zone di memorie "critiche";
- la gestione degli interrupt;
- l'accesso alle porte di I/O.
Con tutte le conseguenze che un approccio di questo tipo può portare.
C'è da dire che, comunque, con Windows 98 e successori ho avuto ben pochi problemi legati a quest'approccio. Anzi, considerato in che modo ho "torturato" il sistema, direi che hanno svolto egregiamente il loro compito...
Non solo per quello (anche Java è fortemente tipizzato): da tempo, fortunatamente, il Pascal è diventato un linguaggio molto maturo, che mette a disposizione del programmatore tantissimi strumenti che permettono di scrivere codice adottando diverse metodologie / modelli di programmazione.
[QUOTE]Credo che basti qualche algoritmo di gestione delle liste con inserimenti e (soprattutto) cancellazioni per inquadrare il problema ed estendere poi il concetto senza troppi problemi agli oggetti.
Come per altri linguaggi, ormai i compilatori Pascal-like sono dotati di framework con una miriade di classi, che permettono di gestire anche liste di oggetti.
Però non è così comodo come con Python, ad esempio, dove liste, "dizionari", tuple e insiemi si possono utilizzare molto velocemente, con poco codice, e soprattutto in maniera molto leggibile e "intuitiva"...
Se l'overloading degli operatori fosse supportato come si deve, non sarebbe certo difficile scrivere qualche modulo e classi per implementare questi utili strumenti in maniera similare, ma attualmente non è così...
Beh, insomma... Il problema principale è che esistono tante, forse troppe estensioni del Pascal in questo senso.
L'estensione a oggetti del Pascal realizzata dall'ISO è molto elegante, come pure quella realizzata da Borland (ne ha fatte due: la prima è rimasta per compatibilità col passato, anche se ha delle interessanti caratteristiche).
Lo è, come lo sono il Modula, il Modula-3 e l'Oberon.
Questo è un controllo che, invece, era "di default" nelle specifiche del Pascal, come pure il controllo degli indici degli array. Purtroppo si tratta di controlli molto pesanti computazionalmente, per cui le implementazioni che sono arrivate fino a noi ne hanno fatto a meno, relegando a direttive di compilazione l'uso o meno di queste caratteristiche.
Se non erro è stata introdotta col Modula-3 (o forse con Oberon): Modula-2 ha introdotto, invece, il concetto di tipo "opaco" (simile al tipo "generic" di Ada). Se ricordo bene, comunque: è passato parecchio tempo da quando ho studiato questi linguaggi...
No, ti posso garantire che Modula-2 ha avuto un discreto successo fra i "pascaliani" e nella comunità scientifica, come pure Oberon. Purtroppo non hanno avuto il successo che meritavano...
Mauro, scrivo le coppie costruttore/distruttore da 15 anni ormai. Uso tutto cio' che mi e' umanamente possibile fare per evitare i double delete e i memory leak, arrivo a nascondere i costruttori/distruttori e costringere la gente a passare attraverso le mie factory class, cerco di recuperare personalmente gli oggetti che la gente si dimentica alla fine del livello eppure... i double delete sono sempre li' e passo ore e giornate a debuggarli. Si parla di un code base di un paio di milioni di righe di codice qui, quasi 30 programmatori, ci vuole il suo tempo a cercare un double delete o un buffer overrun
Molto semplicemente, nel 2005 mi sono stancato di dovere liberare la memoria esplicitamente.
[quote]
Non solo per quello (anche Java è fortemente tipizzato): da tempo, fortunatamente, il Pascal è diventato un linguaggio molto maturo, che mette a disposizione del programmatore tantissimi strumenti che permettono di scrivere codice adottando diverse metodologie / modelli di programmazione.
Domanda a bruciapelo: chi ha progettato il Pascal della Borland?
Cesare, ti prego.
Hai perfettamente ragione. Infatti non volevo mica fornire la ricetta per evitare i memory leak e i double delete: si cerca soltanto di limitarli con qualche attenzione...
Quindi cosa hai fatto?
Non me lo ricordo di preciso, purtroppo.
Un vago ricordo che affiora in questo momento mi suona come "Anderson", o giù di lì.
Non voglio andare su www.borland.com perché sarebbe sleale...
P.S. Per caso è la stessa persona che adesso lavora lavora per conto di MS, e che ha progettato .NET?
Circolano queste voci: magari ne sai qualcosa di più...
Devi effettuare il login per poter commentare
Se non sei ancora registrato, puoi farlo attraverso questo form.
Se sei già registrato e loggato nel sito, puoi inserire il tuo commento.
Si tenga presente quanto letto nel regolamento, nel rispetto del "quieto vivere".