Lines Matching refs:di

14 In un mondo perfetto, sarebbe possibile prendere tutti gli usi di
16 possibile rimuovere la vecchia interfaccia in un singolo ciclo di sviluppo.
18 le tempistiche, non è sempre possibile fare questo tipo di conversione tutta
19 in una volta. Questo significa che nuove istanze di una vecchia interfaccia
20 potrebbero aggiungersi al kernel proprio quando si sta cercando di rimuoverle,
21 aumentando così il carico di lavoro. Al fine di istruire gli sviluppatori su
30 perché uno degli obiettivi del kernel è quello di compilare senza avvisi;
32 di `__deprecated` in un file d'intestazione sia opportuno per segnare una
45 sono stati ripristinati?). Molto spesso l'uso di BUG()
47 impossibile un'attività di debug o anche solo leggere un rapporto
54 Tenete presente che la famiglia di funzioni WARN() dovrebbe essere
56 volete avvisare gli utenti riguardo a qualcosa di possibile anche se
59 *panic_on_warn* per essere sicuri che il sistema smetta di funzionare
64 Calcoli codificati negli argomenti di un allocatore
67 dovrebbero essere fatto negli argomenti di funzioni di allocazione di memoria
68 (o simili) per via del rischio di overflow. Questo può portare a valori più
69 piccoli di quelli che il chiamante si aspettava. L'uso di questo modo di
70 allocare può portare ad un overflow della memoria di heap e altri
73 questi casi è preferibile riscrivere il codice come suggerito di seguito).
86 Se questo tipo di allocatore non è disponibile, allora dovrebbero essere usate
91 Un altro tipico caso da evitare è quello di calcolare la dimensione di una
92 struttura seguita da un vettore di altre strutture, come nel seguente caso::
102 in coda contiene un array di lunghezza zero o uno, allora siete
107 esempio, al posto di::
129 terminata con il carattere NUL o quello di nuova riga.
134 di destinazione. Questo può portare ad un overflow oltre i limiti del
135 buffer e generare svariati tipi di malfunzionamenti. Nonostante l'opzione
139 prestata attenzione a tutti quei casi dove viene usato il valore di
140 ritorno di strcpy(). La funzione strscpy() non ritorna un puntatore
146 L'utilizzo di strncpy() non fornisce alcuna garanzia sul fatto che
147 il buffer di destinazione verrà terminato con il carattere NUL. Questo
148 potrebbe portare a diversi overflow di lettura o altri malfunzionamenti
150 terminazione nel buffer di destinazione quando la stringa d'origine è più
154 viene usato il valore di ritorno di strncpy(). La funzione strscpy()
157 troncata). Tutti i casi che necessitano di estendere la
161 può continuare ad essere usata, ma i buffer di destinazione devono essere
167 La funzione strlcpy(), per prima cosa, legge interamente il buffer di
168 origine, magari leggendo più di quanto verrà effettivamente copiato. Questo
169 è inefficiente e può portare a overflow di lettura quando la stringa non è
171 va prestata attenzione a tutti quei casi dove viene usato il valore di
172 ritorno di strlcpy(), dato che strscpy() ritorna un valore di errno
175 Segnaposto %p nella stringa di formato
178 Tradizionalmente, l'uso del segnaposto "%p" nella stringa di formato
179 esponne un indirizzo di memoria in dmesg, proc, sysfs, eccetera. Per
181 tutto gli usi di "%p" nel kernel rappresentano l'hash dell'indirizzo,
182 rendendolo di fatto inutilizzabile. Nuovi usi di "%p" non dovrebbero
183 essere aggiunti al kernel. Per una rappresentazione testuale di un
189 di Linus:
191 - Se il valore hash di "%p" è inutile, chiediti se il puntatore stesso
194 perché alcuni stati del sistema o i livelli di privilegi di un
195 utente sono considerati "special"? Se pensi di poterlo giustificare
197 affrontare il giudizio di Linus, allora forse potrai usare "%px",
198 assicurandosi anche di averne il permesso.
200 Potete disabilitare temporaneamente l'hashing di "%p" nel caso in cui questa
201 funzionalità vi sia d'ostacolo durante una sessione di debug. Per farlo
202 aggiungete l'opzione di debug "`no_hash_pointers
204 riga di comando del kernel.
210 vettori a dimensione fissa. Questi `problemi di prestazioni <https://git.kernel.org/linus/02361bc77…
212 aggiunta sono anche un problema per la sicurezza. La crescita dinamica di un
216 `CONFIG_THREAD_INFO_IN_TASK=y`), o sovrascrivere un pezzo di memoria adiacente
222 Il linguaggio C permette ai casi di un'istruzione `switch` di saltare al
226 osservando il seguente pezzo di codice non è chiaro se lo stato
239 Dato che c'è stata una lunga lista di problemi `dovuti alla mancanza dell'istruzione
243 parola chiave 'fallthrough' che viene espansa nell'estensione di gcc
251 compilatori, analizzatori statici, e ambienti di sviluppo IDE,
263 Array di lunghezza zero o con un solo elemento
265 All'interno del kernel ricorre spesso la necessita di avere membri
266 di dimensione variabile all'interno di una struttura dati. In questi
269 tecnica degli array a lunghezza nulla o di un solo elemento non
272 Nel codice C più vecchio, la dichiarazione di un membro di dimensione
274 array di un solo elemento posizionato alla fine della struttura dati::
281 Questo ha portato ad un calcolo di sizeof() traballante (dovrebbe
286 permettesse la dichiarazione di array a lungezza zero::
295 l'impossibilità di riconoscere se un array di quel tipo viene usato
296 nel mezzo di una struttura dati e _non_ alla fine (potrebbe accadere
298 strutture di strutture).
309 elementi di lunghezza variabile in coda alle strutture dati. Permette
310 al compilatore di produrre errori quando gli array flessibili non si
311 trovano alla fine della struttura dati, il che permette di prevenire
312 alcuni tipi di bachi dovuti a `comportamenti inaspettati
314 Inoltre, permette al compilatore di analizzare correttamente le
317 grado di avvisarci che il seguente uso di sizeof() dia sempre come
333 Il valore di ``size`` nell'ultima riga sarà ``zero``, quando uno
336 ``items``. Qui un paio di esempi reali del problema: `collegamento 1
343 uso scorretto di questo operatore verrà identificato immediatamente
346 Per quanto riguarda gli array di un solo elemento, bisogna essere
347 consapevoli che `questi array occupano almeno quanto lo spazio di un
368 In questo esempio ci siamo dovuti ricordare di usare ``count - 1`` in
371 propenso agli errori è quello di usare i `flexible array member`, in
387 (da notare che la stessa macro è chiamata __DECLARE_FLEX_ARRAY() nei file di
388 intestazione UAPI). Uno è quando l'array flessibile è l'unico elemento di una
389 struttura, e l'altro quando è parte di un unione. Per motivi non tecnici, entrambi
401 La macro di supporto dev'essere usata::