Yes, I did !

Thank you.

On Mon, May 24, 2021 at 4:51 PM Omar Polo <o...@omarpolo.com> wrote:

>
> Kihaguru Gathura <pqscr...@gmail.com> writes:
>
> > While testing to determine command line arguments passed to a cgi file
> > using the *function 1*, I receive the  message *output 1.*
> > one argument is passed and that is the name of the file.
> >
> > However, testing with a bogus number 30 for argc in *function 2*,
> discloses
> > multiple arguments beyond the last null argument argv[1] see *output 2.*
> > There is also a null value at bogus argc number 29.
> >
> > Why are these additional argv values generated?
>
> haven't you gone out-of-bound and started printing the envp?
>
> >
> >
> >
> > *Function 1:*
> >
> >
> >
> > /**********************************************************************/
> >
> >         void TestCommandLineArguments(int argc, char *argv[])
> >         {
> >               unsigned short int i = 0;
> >
> >               if (argc == 1)  /* if one command line argument is passed
> */
> >               {
> >                   PrintPageUpper();
> >
> >                   while(i < argc)
> >                   {
> >                       printf("\t\t<p>(i = %2$d) argc: %1$d, \
> >                                argv[%2$d]: \"%3$s\"</p>\n", argc, \
> >                                i, argv[i]);
> >                       i++;
> >                   }
> >
> >                   PrintPageLower();
> >                   exit(EXIT_SUCCESS);
> >
> >                }
> >
> >             if (argc != 1)
> >             {
> >                 PrintPageUpper();
> >                 puts("\t\t<p>(Multiple Arguments)</p>");
> >                 PrintPageLower();
> >                 exit(EXIT_SUCCESS);
> >             }
> >         }
> >
> >
> > /**********************************************************************/
> >
> >
> > *Output 1:   *
> >
> > <p>(i = 0) argc: 1, argv[0]: "//xyz/xyz.html"</p>
> >
> >
> >
> >
> >
> >
> > *Function 2:*
> >
> >
> > /**********************************************************************/
> >
> >         void TestCommandLineArguments(int argc, char *argv[])
> >         {
> >               unsigned short int i = 0;
> >               #define BOGUS_ARGC 30
> >
> >               if (argc == 1)
> >               {
> >                   PrintPageUpper();
> >
> >                   while(i < BOGUS_ARGC)
> >                   {
> >                       printf("\t\t<p>(i = %2$d) argc: %1$d, \
> >                                argv[%2$d]: \"%3$s\"</p>\n", BOGUS_ARGC, \
> >                                i, argv[i]);
> >                       i++;
> >                   }
> >
> >                   PrintPageLower();
> >                   exit(EXIT_SUCCESS);
> >
> >                }
> >
> >             if (argc == 1)
> >             {
> >                 PrintPageUpper();
> >                 puts("\t\t<p>(Single Argument)</p>");
> >                 PrintPageLower();
> >                 exit(EXIT_SUCCESS);
> >             }
> >         }
> >
> >
> > /**********************************************************************/
> >
> > *Output 2:*
> >
> >               <p>(i = 0) argc: 30,
> argv[0]:
> > "//xyz/xyz.html"</p>
> >               <p>(i = 1) argc: 30,
> argv[1]: "(null)"</p>
> >               <p>(i = 2) argc: 30,
> argv[2]:
> > "SERVER_SOFTWARE=OpenBSD httpd"</p>
> >               <p>(i = 3) argc: 30,
> argv[3]:
> > "SERVER_PROTOCOL=HTTP/1.1"</p>
> >               <p>(i = 4) argc: 30,
> argv[4]:
> > "SERVER_NAME=xyz.com"</p>
> >               <p>(i = 5) argc: 30,
> argv[5]:
> > "SERVER_PORT=443"</p>
> >               <p>(i = 6) argc: 30,
> argv[6]:
> > "SERVER_ADDR=xyz.xyz.xy.xyz"</p>
> >               <p>(i = 7) argc: 30,
> argv[7]:
> > "REQUEST_URI=/xyz/xyz.html"</p>
> >               <p>(i = 8) argc: 30,
> argv[8]:
> > "REQUEST_METHOD=GET"</p>
> >               <p>(i = 9) argc: 30,
> argv[9]:
> > "REMOTE_PORT=36818"</p>
> >               <p>(i = 10) argc: 30,
> argv[10]:
> > "REMOTE_ADDR=xyz.xyz.xy.xyz"</p>
> >               <p>(i = 11) argc: 30,
> argv[11]: "HTTPS=on"</p>
> >               <p>(i = 12) argc: 30,
> argv[12]:
> > "HTTP_X_FORWARDED_FOR=xyz.xyz.xy.xyz"</p>
> >               <p>(i = 13) argc: 30,
> argv[13]:
> > "HTTP_X_FORWARDED_BY=xyz.xyz.xy.xyz:8443"</p>
> >               <p>(i = 14) argc: 30,
> argv[14]:
> > "HTTP_USER_AGENT=Mozilla/5.0 (X11; OpenBSD amd64; rv:62.0)
> > Gecko/20100101 Firefox/62.0"</p>
> >               <p>(i = 15) argc: 30,
> argv[15]:
> > "HTTP_UPGRADE_INSECURE_REQUESTS=1"</p>
> >               <p>(i = 16) argc: 30,
> argv[16]:
> > "HTTP_HOST=xyz.com"</p>
> >               <p>(i = 17) argc: 30,
> argv[17]:
> > "HTTP_CONNECTION=keep-alive"</p>
> >               <p>(i = 18) argc: 30,
> argv[18]:
> > "HTTP_CACHE_CONTROL=max-age=0"</p>
> >               <p>(i = 19) argc: 30,
> argv[19]:
> > "HTTP_ACCEPT_LANGUAGE=en-US,en;q=0.5"</p>
> >               <p>(i = 20) argc: 30,
> argv[20]:
> > "HTTP_ACCEPT_ENCODING=gzip, deflate, br"</p>
> >               <p>(i = 21) argc: 30,
> argv[21]:
> >
> "HTTP_ACCEPT=text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"</p>
> >               <p>(i = 22) argc: 30,
> argv[22]:
> > "GATEWAY_INTERFACE=CGI/1.1"</p>
> >               <p>(i = 23) argc: 30,
> argv[23]:
> > "DOCUMENT_URI=/xyz/xyz.html"</p>
> >               <p>(i = 24) argc: 30,
> argv[24]:
> > "DOCUMENT_ROOT=/"</p>
> >               <p>(i = 25) argc: 30,
> argv[25]:
> > "QUERY_STRING="</p>
> >               <p>(i = 26) argc: 30,
> argv[26]:
> > "SCRIPT_FILENAME=//xyz/xyz.html"</p>
> >               <p>(i = 27) argc: 30,
> argv[27]:
> > "SCRIPT_NAME=/xyz/xyz.html"</p>
> >               <p>(i = 28) argc: 30,
> argv[28]:
> > "PATH_INFO="</p>
> >               <p>(i = 29) argc: 30,
> argv[29]: "(null)"</p>
> >
> > Please note: the actual ip addresses and file names are hereby masked
>
>

Reply via email to