# AUTHOR <EMAIL@ADDRESS>, YEAR.
# 
# Translators:
# Jérôme Fenal <jfenal@gmail.com>, 2013
msgid ""
msgstr ""
"Project-Id-Version: Defensive Coding Guide\n"
"POT-Creation-Date: 2013-03-12T03:19:44\n"
"PO-Revision-Date: 2013-04-16 21:32+0000\n"
"Last-Translator: Jérôme Fenal <jfenal@gmail.com>\n"
"Language-Team: French <trans-fr@lists.fedoraproject.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: fr\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"

#. Tag: title
#, no-c-format
msgid "The C standard library"
msgstr "La bibliothèque C standard"

#. Tag: para
#, no-c-format
msgid ""
"Parts of the C standard library (and the UNIX and GNU extensions) are "
"difficult to use, so you shoud avoid them."
msgstr "Certaines parties de la bibliothèque C standard (tant dans UNIX que les extensions GNU) sont difficile à utiliser correctement, il vaut mieux éviter de les utiliser."

#. Tag: para
#, no-c-format
msgid ""
"Please check the applicable documentation before using the recommended "
"replacements. Many of these functions allocate buffers using "
"<function>malloc</function> which your code must deallocate explicitly using"
" <function>free</function>."
msgstr "Merci aussi de vérifier dans la documentation afférente avant d'utiliser les fonction de remplacement recommandées ici. Plusieurs d'entre elles allouent des plages mémoire à l'aide de la fonction <function>malloc</function> que votre code devra ensuite libérer explicitement à l'aide de <function>free</function>."

#. Tag: title
#, no-c-format
msgid "Absolutely banned interfaces"
msgstr "Interfaces totalement interdites"

#. Tag: para
#, no-c-format
msgid ""
"The functions listed below must not be used because they are almost always "
"unsafe. Use the indicated replacements instead."
msgstr "Les fonctions énumérées ci-dessous ne doivent pas être utilisées car elles sont presque toujours dangeureuses. Utiliser les fonctions de remplacements suggérées en lieu et place."

#. Tag: para
#, no-c-format
msgid "<function>gets</function> ⟶ <function>fgets</function>"
msgstr "<function>gets</function> ⟶ <function>fgets</function>"

#. Tag: para
#, no-c-format
msgid ""
"<function>getwd</function> ⟶ <function>getcwd</function> or "
"<function>get_current_dir_name</function>"
msgstr "<function>getwd</function> ⟶ <function>getcwd</function> or <function>get_current_dir_name</function>"

#. Tag: para
#, no-c-format
msgid "<function>readdir_r</function> ⟶ <function>readdir</function>"
msgstr "<function>readdir_r</function> ⟶ <function>readdir</function>"

#. Tag: para
#, no-c-format
msgid ""
"<function>realpath</function> (with a non-NULL second parameter) ⟶ "
"<function>realpath</function> with NULL as the second parameter, or "
"<function>canonicalize_file_name</function>"
msgstr "<function>realpath</function> (avec un second paramètre non-NULL) ⟶ <function>realpath</function> avec NULL comme second paramètre, ou <function>canonicalize_file_name</function>"

#. Tag: para
#, no-c-format
msgid ""
"The constants listed below must not be used, either. Instead, code must "
"allocate memory dynamically and use interfaces with length checking."
msgstr "Les constantes énumérées ci-dessous ne doivent pas non plus être utilisées. Le code doit plutôt allouer la mémoire dynamiquement, puis utiliser les interfaces qui vérifient les tailles de tampons. "

#. Tag: para
#, no-c-format
msgid ""
"<literal>NAME_MAX</literal> (limit not actually enforced by the kernel)"
msgstr "<literal>NAME_MAX</literal> (limite dont le noyau n'assure pas le strict respect)"

#. Tag: para
#, no-c-format
msgid ""
"<literal>PATH_MAX</literal> (limit not actually enforced by the kernel)"
msgstr "<literal>PATH_MAX</literal> (limite dont le noyau n'assure pas le strict respect)"

#. Tag: para
#, no-c-format
msgid ""
"<literal>_PC_NAME_MAX</literal> (This limit, returned by the "
"<function>pathconf</function> function, is not enforced by the kernel.)"
msgstr "<literal>_PC_NAME_MAX</literal> (Le noyau n'assure pas le respect de cette limite, renvoyée par la fonction <function>pathconf</function>.)"

#. Tag: para
#, no-c-format
msgid ""
"<literal>_PC_PATH_MAX</literal> (This limit, returned by the "
"<function>pathconf</function> function, is not enforced by the kernel.)"
msgstr "<literal>_PC_PATH_MAX</literal> (Le noyau n'assure pas le respect de cette limite, renvoyée par la fonction <function>pathconf</function>.)"

#. Tag: para
#, no-c-format
msgid "The following structure members must not be used."
msgstr "Les membres de structures suivants ne doivent pas être utilisés."

#. Tag: para
#, no-c-format
msgid ""
"<literal>f_namemax</literal> in <literal>struct statvfs</literal> (limit not"
" actually enforced by the kernel, see <literal>_PC_NAME_MAX</literal> above)"
msgstr "<literal>f_namemax</literal> dans <literal>struct statvfs</literal> (Le noyau n'assure pas le respect de cette limite, cf.  <literal>_PC_NAME_MAX</literal> ci-dessus)"

#. Tag: title
#, no-c-format
msgid "Functions to avoid"
msgstr "Fonctions à éviter"

#. Tag: para
#, no-c-format
msgid ""
"The following string manipulation functions can be used securely in "
"principle, but their use should be avoided because they are difficult to use"
" correctly. Calls to these functions can be replaced with "
"<function>asprintf</function> or <function>vasprintf</function>. (For non-"
"GNU targets, these functions are available from Gnulib.) In some cases, the "
"<function>snprintf</function> function might be a suitable replacement, see "
"<xref linkend=\"sect-Defensive_Coding-C-String-Functions-Length\" />."
msgstr "Les fonctions suivantes de manipulation de chaînes peuvent être en principe utilisée de manière sécurisée, mais leur utilisation doit être évitée parce qu'elles sont difficiles à utiliser correctement. Les appels à ces fonctions peuvent être remplacés par <function>asprintf</function> ou <function>vasprintf</function>. (Pour les systèmes cibles non-GNU, ces fonctions sont disponibles dans Gnulib.) Dans certains cas, la fonction <function>snprintf</function> peut aussi être une solution de remplacement adéquate, cf. <xref linkend=\"sect-Defensive_Coding-C-String-Functions-Length\" />."

#. Tag: para
#, no-c-format
msgid "<function>sprintf</function>"
msgstr "<function>sprintf</function>"

#. Tag: para
#, no-c-format
msgid "<function>strcat</function>"
msgstr "<function>strcat</function>"

#. Tag: para
#, no-c-format
msgid "<function>strcpy</function>"
msgstr "<function>strcpy</function>"

#. Tag: para
#, no-c-format
msgid "<function>vsprintf</function>"
msgstr "<function>vsprintf</function>"

#. Tag: para
#, no-c-format
msgid "Use the indicated replacements for the functions below."
msgstr "Utiliser les alternatives indiquées pour les fonctions ci-dessous."

#. Tag: para
#, no-c-format
msgid ""
"<function>alloca</function> ⟶ <function>malloc</function> and "
"<function>free</function> (see <xref linkend=\"sect-Defensive_Coding-C"
"-Allocators-alloca\" />)"
msgstr "<function>alloca</function> ⟶ <function>malloc</function> et <function>free</function> (cf. <xref linkend=\"sect-Defensive_Coding-C-Allocators-alloca\" />)"

#. Tag: para
#, no-c-format
msgid ""
"<function>putenv</function> ⟶ explicit <varname>envp</varname> argument in "
"process creation (see <xref linkend=\"sect-Defensive_Coding-Tasks-Processes-"
"environ\" />)"
msgstr "<function>putenv</function> ⟶ argument explicite <varname>envp</varname> dans la création de processus (cf. <xref linkend=\"sect-Defensive_Coding-Tasks-Processes-environ\" />)"

#. Tag: para
#, no-c-format
msgid ""
"<function>setenv</function> ⟶ explicit <varname>envp</varname> argument in "
"process creation (see <xref linkend=\"sect-Defensive_Coding-Tasks-Processes-"
"environ\" />)"
msgstr "<function>setenv</function> ⟶ argument explicite <varname>envp</varname> dans la création de processus (cf. <xref linkend=\"sect-Defensive_Coding-Tasks-Processes-environ\" />)"

#. Tag: para
#, no-c-format
msgid ""
"<function>strdupa</function> ⟶ <function>strdup</function> and "
"<function>free</function> (see <xref linkend=\"sect-Defensive_Coding-C"
"-Allocators-alloca\" />)"
msgstr "<function>strdupa</function> ⟶ <function>strdup</function> et <function>free</function> (cf. <xref linkend=\"sect-Defensive_Coding-C-Allocators-alloca\" />)"

#. Tag: para
#, no-c-format
msgid ""
"<function>strndupa</function> ⟶ <function>strndup</function> and "
"<function>free</function> (see <xref linkend=\"sect-Defensive_Coding-C"
"-Allocators-alloca\" />)"
msgstr "<function>strndupa</function> ⟶ <function>strndup</function> et <function>free</function> (cf. <xref linkend=\"sect-Defensive_Coding-C-Allocators-alloca\" />)"

#. Tag: para
#, no-c-format
msgid ""
"<function>system</function> ⟶ <function>posix_spawn</function> or "
"<function>fork</function>/<function>execve</function>/ (see <xref linkend"
"=\"sect-Defensive_Coding-Tasks-Processes-execve\" />)"
msgstr "<function>system</function> ⟶ <function>posix_spawn</function> ou <function>fork</function>/<function>execve</function>/ (cf. <xref linkend=\"sect-Defensive_Coding-Tasks-Processes-execve\" />)"

#. Tag: para
#, no-c-format
msgid ""
"<function>unsetenv</function> ⟶ explicit <varname>envp</varname> argument in"
" process creation (see <xref linkend=\"sect-Defensive_Coding-Tasks-"
"Processes-environ\" />)"
msgstr "<function>unsetenv</function> ⟶ argument explicite <varname>envp</varname> dans la création de processus (cf. <xref linkend=\"sect-Defensive_Coding-Tasks-Processes-environ\" />)"

#. Tag: title
#, no-c-format
msgid "String Functions With Explicit Length Arguments"
msgstr "Fonctions sur chaînes avec arguments de longueur explicites"

#. Tag: para
#, no-c-format
msgid ""
"The <function>snprintf</function> function provides a way to construct a "
"string in a statically-sized buffer. (If the buffer size is dynamic, use "
"<function>asprintf</function> instead.)"
msgstr "La fonction <function>snprintf</function> fournit un moyen de construire une chaîne dans un tampon de taille statique. (Si la taille du tampon est dynamique, utiliser <function>asprintf</function> à la place.)"

#. Tag: para
#, no-c-format
msgid ""
"The second argument to the <function>snprintf</function> should always be "
"the size of the buffer in the first argument (which should be a character "
"array). Complex pointer and length arithmetic can introduce errors and "
"nullify the security benefits of <function>snprintf</function>. If you need "
"to construct a string iteratively, by repeatedly appending fragments, "
"consider constructing the string on the heap, increasing the buffer with "
"<function>realloc</function> as needed. (<function>snprintf</function> does "
"not support overlapping the result buffer with argument strings.)"
msgstr "Le deuxième argument de <function>snprintf</function> doit toujours être la taille du tampon indiqué comme premier argument (qui devrait être un tableau de caractères). L'arithmétique complexe sur les pointeurs et la taille peuvent introduire des erreurs et rendre nuls les bénéfices pour  la sécurité de l'utilisation <function>snprintf</function>. Si vous avez besoin de construire une chaîne de manière itérative, en ajoutant des fragments de façon répétée, envisagez de construire la chaîne sur le tas, en en augmentant la taille avec <function>realloc</function> lorsque nécessaire. (<function>snprintf</function> n'autorise pas de chevauchement entre le tampon résultat et ceux indiqués en arguments.)"

#. Tag: para
#, no-c-format
msgid ""
"If you use <function>vsnprintf</function> (or <function>snprintf</function>)"
" with a format string which is not a constant, but a function argument, it "
"is important to annotate the function with a <literal>format</literal> "
"function attribute, so that GCC can warn about misuse of your function (see "
"<xref linkend=\"ex-Defensive_Coding-C-String-Functions-format-Attribute\" "
"/>)."
msgstr "Si vous utilisez <function>vsnprintf</function> (ou <function>snprintf</function>) avec une chaîne de format qui n'est pas une constante mais un argument de fonction, il est important d'annoter la fonction avec l'attribut de fonction <literal>format</literal>, de façon à ce que GCC puisse avertir de la mauvaise utilisation éventuelle de votre fonction (see <xref linkend=\"ex-Defensive_Coding-C-String-Functions-format-Attribute\" />)."

#. Tag: title
#, no-c-format
msgid "The <literal>format</literal> function attribute"
msgstr "L'attribut de <literal>format</literal> des fonctions"

#. Tag: para
#, no-c-format
msgid ""
"There are other functions which operator on NUL-terminated strings and take "
"a length argument which affects the number of bytes written to the "
"destination: <function>strncpy</function>, <function>strncat</function>, and"
" <function>stpncpy</function>. These functions do not ensure that the result"
" string is NUL-terminated. For <function>strncpy</function>, NUL termination"
" can be added this way:"
msgstr "Il existe d'autres fonction qui opèrent sur les chaînes terminées par NUL et qui prennent un argument de longueur affectant le nombre d'octets écrit vers la destination : <function>strncpy</function>, <function>strncat</function>, et <function>stpncpy</function>. Ces fonctions n'assurent en aucun cas que le résultat est bien terminé par NUL. Pour <function>strncpy</function>, la terminaison NUL peut être ajoutée ainsi :"

#. Tag: para
#, no-c-format
msgid ""
"Some systems support <function>strlcpy</function> and "
"<function>strlcat</function> functions which behave this way, but these "
"functions are not part of GNU libc. Using <function>snprintf</function> with"
" a suitable format string is a simple (albeit slightly slower) replacement."
msgstr "Certains systèmes apportent la prise en charge des fonctions <function>strlcpy</function> et <function>strlcat</function> qui se comportent ainsi, mais ces fonctions ne font pas partie de la libc GNU. L'utilisation de <function>snprintf</function> avec une chaîne de format est une solution simple (quoique que légèrement plus lente) de remplacement."
