john pfeiffer
  • Home
  • Categories
  • Tags
  • Archives

pass program safe parameters

/*

john pfeiffer 19sep07 Using command line arguments/parameters in C 
04jan09     updated to try to prevent buffer overflow

*/

#include <stdio.h>

#define NUMBER_OF_PARAMETERS 2  /* =1 b/c the 1st parameter is the program name */
#define MAX_PARAMETER_SIZE 512     /* the max size of a given parameter */

void program_usage_help( char safe_argv[NUMBER_OF_PARAMETERS][MAX_PARAMETER_SIZE] )
{   printf("%s filename.txt",safe_argv[0]); 
}/* end program_usage_help */

void safe_parameters_array( int argc, char* argv[], char safe_argv[NUMBER_OF_PARAMETERS][MAX_PARAMETER_SIZE] )
{
    int i=0, k=0;

    for(i=0; i<argc; i++)
    {                                 /* params are null terminated strings */
        while( (k < MAX_PARAMETER_SIZE) && (argv[i][k] != '\0') )  
        {                                   
            safe_argv[i][k] = argv[i][k];
            k++;
        }
        safe_argv[i][k] = '\0';       /* we must always null terminate a string! */
        k=0;
        printf("\nsafe_argv[%d]=%s\n",i,safe_argv[i]);  
     }

}/* end safe_parameters_array function */

int main(int argc, char* argv[])
{
    char safe_argv[NUMBER_OF_PARAMETERS][MAX_PARAMETER_SIZE];

    if( (argc > NUMBER_OF_PARAMETERS) || (argc < NUMBER_OF_PARAMETERS) )
    {   printf("Wrong number of parameters, should be %d parameters",NUMBER_OF_PARAMETERS);
        exit(1);                    /* quit program with error */
    }

    safe_parameters_array( argc, argv, safe_argv );

    return 0;
}/* end main */

  • « file pointers in C
  • gcc winsock »

Published

Sep 19, 2007

Category

c

~126 words

Tags

  • c 95
  • parameters 15
  • pass 3
  • program 1
  • safe 4