Aggiornate le date nelle note di copyright
[gapil.git] / filestd.tex
index 8a8ed6fd9583e37a91f50c3de1ba9e6aedf96602..db18e5d454230071849b1a7776ca788747c48d57 100644 (file)
@@ -1,6 +1,6 @@
 %% filestd.tex
 %%
-%% Copyright (C) 2000-2004 Simone Piccardi.  Permission is granted to
+%% Copyright (C) 2000-2005 Simone Piccardi.  Permission is granted to
 %% copy, distribute and/or modify this document under the terms of the GNU Free
 %% Documentation License, Version 1.1 or any later version published by the
 %% Free Software Foundation; with the Invariant Sections being "Un preambolo",
@@ -747,9 +747,10 @@ viene restituito un \val{NULL}, ed il buffer \param{buf} non viene toccato.
 L'uso di \func{gets} è deprecato e deve essere assolutamente evitato; la
 funzione infatti non controlla il numero di byte letti, per cui nel caso la
 stringa letta superi le dimensioni del buffer, si avrà un \textit{buffer
-  overflow}\index{buffer overflow}, con sovrascrittura della memoria del
-processo adiacente al buffer.\footnote{questa tecnica è spiegata in dettaglio
-  e con molta efficacia nell'ormai famoso articolo di Aleph1 \cite{StS}.}
+  overflow}\index{\textit{buffer~overflow}}, con sovrascrittura della memoria
+del processo adiacente al buffer.\footnote{questa tecnica è spiegata in
+  dettaglio e con molta efficacia nell'ormai famoso articolo di Aleph1
+  \cite{StS}.}
 
 Questa è una delle vulnerabilità più sfruttate per guadagnare accessi
 non autorizzati al sistema (i cosiddetti \textit{exploit}), basta
@@ -870,14 +871,14 @@ come per entrambi i parametri si siano usati dei
 dei puntatori anziché i valori delle variabili, secondo la tecnica spiegata in
 sez.~\ref{sec:proc_var_passing}).
 
-Se si passa alla funzione l'indirizzo di un puntatore impostato a \val{NULL}
-\var{*n} è zero, la funzione provvede da sola all'allocazione della memoria
+Se si passa alla funzione l'indirizzo di un puntatore impostato a \val{NULL} e
+\var{*n} è zero, la funzione provvede da sola all'allocazione della memoria
 necessaria a contenere la linea. In tutti i casi si ottiene dalla funzione un
 puntatore all'inizio del testo della linea letta. Un esempio di codice può
-essere il seguente:
-\includecodesnip{listati/getline.c}
-e per evitare memory leak\index{memory leak} occorre ricordarsi di liberare
-\var{ptr} con una \func{free}.
+essere il seguente: 
+\includecodesnip{listati/getline.c} 
+e per evitare memory leak\index{\textit{memory~leak}} occorre ricordarsi di
+liberare \var{ptr} con una \func{free}.
 
 Il valore di ritorno della funzione indica il numero di caratteri letti
 dallo stream (quindi compreso il newline, ma non lo zero di
@@ -926,13 +927,14 @@ L'output formattato viene eseguito con una delle 13 funzioni della famiglia
 
   \bodydesc{Le funzioni ritornano il numero di caratteri stampati.}
 \end{functions}
-\noindent le prime due servono per stampare su file (lo standard output
-quello specificato) la terza permette di stampare su una stringa, in genere
+\noindent le prime due servono per stampare su file (lo standard output o
+quello specificato) la terza permette di stampare su una stringa, in genere
 l'uso di \func{sprintf} è sconsigliato in quanto è possibile, se non si ha la
 sicurezza assoluta sulle dimensioni del risultato della stampa, eccedere le
 dimensioni di \param{str}, con conseguente sovrascrittura di altre variabili e
-possibili \textit{buffer overflow}\index{buffer overflow}; per questo motivo
-si consiglia l'uso dell'alternativa \funcd{snprintf}, il cui prototipo è:
+possibili \textit{buffer overflow}\index{\textit{buffer~overflow}}; per questo
+motivo si consiglia l'uso dell'alternativa \funcd{snprintf}, il cui prototipo
+è:
 \begin{prototype}{stdio.h}
 {snprintf(char *str, size\_t size, const char *format, ...)} 
   Identica a \func{sprintf}, ma non scrive su \param{str} più di
@@ -1116,7 +1118,8 @@ scritti sulla stringa di destinazione:
   Identica a \func{vsprintf}, ma non scrive su \param{str} più di
   \param{size} caratteri.
 \end{prototype}
-\noindent in modo da evitare possibili buffer overflow\index{buffer overflow}.
+\noindent in modo da evitare possibili buffer
+overflow\index{\textit{buffer~overflow}}.
 
 
 Per eliminare alla radice questi problemi, le \acr{glibc} supportano una
@@ -1145,7 +1148,7 @@ proposito dei \index{\textit{value~result~argument}}\textit{value result
   argument}) l'indirizzo della stringa allocata automaticamente dalle
 funzioni. Occorre inoltre ricordarsi di invocare \func{free} per liberare
 detto puntatore quando la stringa non serve più, onde evitare memory
-leak\index{memory leak}.
+leak\index{\textit{memory~leak}}.
 
 Infine una ulteriore estensione GNU definisce le due funzioni \func{dprintf} e
 \func{vdprintf}, che prendono un file descriptor al posto dello stream. Altre
@@ -1228,7 +1231,7 @@ punto prestabilito; sempre che l'operazione di riposizionamento sia supportata
 dal file sottostante lo stream, quando cioè si ha a che fare con quello che
 viene detto un file ad \textsl{accesso casuale}.\footnote{dato che in un
   sistema Unix esistono vari tipi di file, come le fifo ed i file di
-  dispositivo\index{file!di dispositivo}, non è scontato che questo sia sempre
+  dispositivo\index{file!di~dispositivo}, non è scontato che questo sia sempre
   vero.}
 
 In GNU/Linux ed in generale in ogni sistema unix-like la posizione nel file è