From: Simone Piccardi Date: Mon, 27 Aug 2018 21:44:51 +0000 (+0200) Subject: Correzioni e introdotte mkstemps e mkostemps. X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=commitdiff_plain;h=4a4daf2bc462824b46a4a589c2568118f645b852 Correzioni e introdotte mkstemps e mkostemps. --- diff --git a/filedir.tex b/filedir.tex index 776ff47..0b958c2 100644 --- a/filedir.tex +++ b/filedir.tex @@ -2992,7 +2992,7 @@ verso un file diverso, ottenendo, se il programma sotto attacco ne ha la capacità, un accesso privilegiato.\footnote{dal kernel 3.6 sono state introdotte delle contromisure, illustrate in sez.~\ref{sec:procadv_security_misc}, che rendono impraticabili questo tipo - di attacchi ma questa non è una buona scusa per ignorare il problema.} + di attacchi, ma questa non è una buona scusa per ignorare il problema.} \itindend{symlink~attack} @@ -3144,7 +3144,6 @@ prototipo è: \end{errlist}} \end{funcproto} - Come per \func{mktemp} anche in questo caso \param{template} non può essere una stringa costante. La funzione apre un file in lettura/scrittura con la funzione \func{open}, usando l'opzione \const{O\_EXCL} (si veda @@ -3170,14 +3169,40 @@ specificamente dalla \acr{glibc},\footnote{la funzione è stata introdotta \func{mkstemp}.} \end{funcproto} \noindent la cui sola differenza è la presenza dell'ulteriore argomento -\var{flags} che consente di specificare i flag da passare ad \func{open} -nell'apertura del file. +\var{flags} che consente di specificare alcuni ulteriori flag +(\const{O\_APPEND}, \const{O\_CLOEXEC}, \const{O\_SYNC}, il cui significato +vedremo in sez.~\ref{sec:file_open_close}) da passare ad \func{open} +nell'apertura del file. + +Di queste due funzioni sono state poi introdotte a partire dalla \acr{glibc} +2.11 due varianti, \funcd{mkstemps} e \funcd{mkostemps} che consentono di +indicare anche un suffisso, i loro prototipo sono: + +\begin{funcproto}{ +\fhead{stlib.h} +\fdecl{int mkstemps(char *template, int suffixlen)} +\fdesc{Apre un file temporaneo.} +\fdecl{int mkostemps(char *template, int suffixlen, int flags)} +\fdesc{Apre un file temporaneo.} +} + +{Le funzioni hanno gli stessi valori di ritorno e gli stessi errori di + \func{mkstemp} con lo stesso significato tranne \errval{EINVAL} che viene + restituito se \param{template} non è di lunghezza pari ad almeno + $6+$\param{suffixlen} ed i 6 caratteri prima del suffisso non sono + \code{XXXXXX}.} +\end{funcproto} +Le due funzioni, estensione non standard delle \acr{glibc}, sono identiche a +\funcd{mkstemp} e \funcd{mkostemp}, ma consentono di avere un nome del file +nella forma \texttt{prefissoXXXXXXsuffisso} dove la lunghezza del suffisso +deve essere indicata con \param{suffixlen}. -In OpenBSD è stata introdotta un'altra funzione simile alle precedenti, -\funcd{mkdtemp}, che crea invece una directory temporanea;\footnote{la - funzione è stata introdotta nella \acr{glibc} a partire dalla versione - 2.1.91 ed inserita nello standard POSIX.1-2008.} il suo prototipo è: +Infine con OpenBSD è stata introdotta un'altra funzione simile alle +precedenti, \funcd{mkdtemp}, che crea invece una directory +temporanea;\footnote{la funzione è stata introdotta nella \acr{glibc} a + partire dalla versione 2.1.91 ed inserita nello standard POSIX.1-2008.} il +suo prototipo è: \begin{funcproto}{ \fhead{stlib.h} @@ -3196,7 +3221,7 @@ In OpenBSD è stata introdotta un'altra funzione simile alle precedenti, La funzione crea una directory temporanea il cui nome è ottenuto sostituendo le \code{XXXXXX} finali di \param{template} con permessi \code{0700} (si veda sez.~\ref{sec:file_perm_overview} per i dettagli). Dato che la creazione della -directory è sempre esclusiva i precedenti problemi di \textit{race condition} +directory è sempre atomica i precedenti problemi di \textit{race condition} non si pongono. diff --git a/gapil.tex b/gapil.tex index 9ac34e8..807db6e 100644 --- a/gapil.tex +++ b/gapil.tex @@ -23,11 +23,17 @@ vmargin=1.9cm,inner=1.9cm,outer=1.9cm,bindingoffset=0.89cm]{geometry} + + % encodings \usepackage[T1]{fontenc} \usepackage[utf8]{inputenc} \usepackage{ae,aecompl} +% more fonts +\usepackage{inconsolata} + + % % New header style % @@ -47,9 +53,6 @@ vmargin=1.9cm,inner=1.9cm,outer=1.9cm,bindingoffset=0.89cm]{geometry} \ #1}{}} -% more fonts -\usepackage{inconsolata} - % fancy verbatim \usepackage{fancyvrb} \DefineVerbatimEnvironment{Example}{Verbatim} diff --git a/signal.tex b/signal.tex index 8af17a6..951d723 100644 --- a/signal.tex +++ b/signal.tex @@ -322,7 +322,7 @@ Linux anche a seconda della architettura hardware e della versione del kernel. Quelli che invece sono stati, almeno a grandi linee, standardizzati, sono i nomi dei segnali e le costanti di preprocessore che li identificano, che sono -tutte nella forma \texttt{SIG\textsl{NOME}}, e sono queste che devono essere +tutte nella forma \texttt{SIG\textsl{nome}}, e sono queste che devono essere usate nei programmi. Come tutti gli altri nomi e le funzioni che concernono i segnali, esse sono definite nell'header di sistema \headfile{signal.h}.