Hello:
I bumped into a curious problem with the argv variables changing, when a
certain file named "1" is added into the local directory of the executable.
Here is the test file, a simple program named test.c
#include <stdio.h>
#include <string.h>
int main(int argc, char **argv) {
int i=1;
//int STDIN = 1;
char INCURV[1024] = {'\0'};
while(i<argc) {
if (!strcmp(argv[i],"-curve")) {
printf("we are here \n");
//strcpy(INCURV,argv[i+1]); STDIN=0; i+=2;
}
i+=1;
}
return 0;
}
I compile this file as
% gcc -o wack test.c -ggdb
(it is too easy to wipe out the source file if the object name almost
matches)
gcc is gcc version 7.5.0 (SUSE Linux)
I have the gdb debugger stop on line 13 "printf("we are here\n");"
Using input to the command:
% wack -arderivs -curve [0,0,0,-1156,0]
when no file named "1" exists in the directory then argv looks okay
argv[0] = "/../../wack"
argv[1] = "-arderivs"
argv[2] = "-curve"
argv[3] = "[0,0,0,-1156,0]"
argv[4] = 0x0
which is all fine and well.
I used the touch command to create file "1" in the local directory
% touch 1
and restart the gdb debugger.
argc count = 4 as expected
but argv[3] = "1"
Is this a bug in c?
Why is argv[3] changed?
Randall