From 0480a7a73fc74dffc47bf3e8124424fd4d420b24 Mon Sep 17 00:00:00 2001 From: tTh Date: Thu, 8 Aug 2024 16:05:30 +0200 Subject: [PATCH] add envp pointer from main code --- chap/debug.tex | 9 ++++++++- code/C/Makefile | 7 ++++++- code/C/use_envp.c | 16 ++++++++++++++++ 3 files changed, 30 insertions(+), 2 deletions(-) create mode 100644 code/C/use_envp.c diff --git a/chap/debug.tex b/chap/debug.tex index 963699e..7acdf6e 100644 --- a/chap/debug.tex +++ b/chap/debug.tex @@ -196,7 +196,14 @@ Tue Oct 17 08:55:01 CEST 2023 tth@redlady:~$ \end{verbatim} -Simple et efficace. +Simple et efficace. \textbf{Mais\dots} + +Mais ça ne marche pas à tous les coups comme vous le montre +clairement cet exemple. L'utilisation de la fonction +\texttt{getenv(3)} est très facilement contournable. + +\lstinputlisting[language=C]{code/C/use_envp.c} + % ============================================================== diff --git a/code/C/Makefile b/code/C/Makefile index 5f67beb..9892cdf 100644 --- a/code/C/Makefile +++ b/code/C/Makefile @@ -2,7 +2,7 @@ # exemples pour le chapitre sur le C # new Sat Feb 11 12:06:34 CET 2023 -all: no-op slowprint fgets-simple packtest +all: no-op slowprint fgets-simple packtest use_envp no-op: no-op.c Makefile gcc -Wall $< -o $@ @@ -19,3 +19,8 @@ demo-strtok: demo-strtok.c Makefile # added Wed Mar 27 10:01:41 UTC 2024 packtest: packtest.c gcc -Wall $< -o $@ + +# added Thu Aug 8 13:44:58 UTC 2024 +use_envp: use_envp.c Makefile + gcc -Wall $< -o $@ + diff --git a/code/C/use_envp.c b/code/C/use_envp.c new file mode 100644 index 0000000..bed0484 --- /dev/null +++ b/code/C/use_envp.c @@ -0,0 +1,16 @@ +/* using envp for fun and profit */ + +#include + +int main(int argc, char *argv[], char *envp[]) +{ +char *cptr; +int idx = 0; +cptr = envp[idx]; +while ( NULL != (cptr=envp[idx]) ) { + fprintf(stderr, "envp[%d] %p --> %s\n", + idx, cptr, cptr); + idx++; + } +return 0; +}