diff --git a/bin/init/main.c b/bin/init/main.c index 2875596..3376193 100644 --- a/bin/init/main.c +++ b/bin/init/main.c @@ -34,8 +34,8 @@ #include #include -static char *argv_shell[2] = { "shell", NULL, }; -static char *envp_shell[6] = { "HOME=/", "PWD=/", "PATH=/bin:/sbin:/usr/bin:/usr/sbin", "USER=root", "GROUP=admin", NULL, }; +static char *argv_login[2] = { "login", NULL, }; +static char *envp_login[6] = { "HOME=/", "PWD=/", "PATH=/bin:/sbin:/usr/bin:/usr/sbin", "USER=root", "GROUP=admin", NULL, }; int main(int argc,char **argv, char **envp) { int i=0x0; @@ -93,7 +93,8 @@ if (0 == i) { printf("Starting Login Daemon.\n"); - execve("sys:/bin/login", argv_shell, envp_shell); + printf("ARGV[0] %s - 0x%X\n", argv_login[0], &argv_login[0]); + execve("sys:/bin/login", argv_login, envp_login); printf("Error Starting System\n"); exit(0x0); } diff --git a/sys/i386/i386_exec.c b/sys/i386/i386_exec.c index d3faf34..ba18605 100644 --- a/sys/i386/i386_exec.c +++ b/sys/i386/i386_exec.c @@ -368,7 +368,7 @@ for (i = 1; i <= argc; i++) { tmp[i] = STACK_ADDR - ARGV_PAGE + sp; - strcpy(tmp[i], argv[i - 1]); + strcpy((char *)tmp[i], argv[i - 1]); sp += strlen(argv[i - 1]) + 1; } tmp[i++] = 0x0; @@ -376,7 +376,7 @@ sp = 0; for (int x = 0; x < envc; x++) { tmp[x + i] = STACK_ADDR - ARGV_PAGE - ENVP_PAGE + sp; - strcpy(tmp[x + i], envp[x]); + strcpy((char *)tmp[x + i], envp[x]); sp += strlen(envp[x]) + 1; } tmp[i + x] = 0x0; @@ -622,7 +622,6 @@ //! Adjust iframe // iFrame = (struct i386_frame *) (_current->tss.esp0 - sizeof(struct i386_frame)); //kprintf( "EBP-1(%i): EBP: [0x%X], EIP: [0x%X], ESP: [0x%X]\n", _current->id, iFrame->ebp, iFrame->eip, iFrame->user_esp ); - argc = 1; iFrame->ebp = 0x0; //STACK_ADDR; iFrame->eip = binaryHeader->e_entry; @@ -636,13 +635,17 @@ memset((char *) tmp, 0x0, ARGV_PAGE + ENVP_PAGE + ELF_AUX + (argc + 1) + (envc + 1) + STACK_PAD); + kprintf("ARGC: [%i]", argc); + kprintf("ARGV[0] %s - 0x%X", argv[0], &argv[0]); + while(1); + tmp[0] = argc; uint32_t sp = 0x0; for (i = 1; i <= argc; i++) { tmp[i] = STACK_ADDR - ARGV_PAGE + sp; - strcpy(tmp[i], argv[i - 1]); + strcpy((char *)tmp[i], argv[i - 1]); sp += strlen(argv[i - 1]) + 1; } tmp[i++] = 0x0; @@ -650,7 +653,7 @@ sp = 0; for (int x = 0; x < envc; x++) { tmp[x + i] = STACK_ADDR - ARGV_PAGE - ENVP_PAGE + sp; - strcpy(tmp[x + i], envp[x]); + strcpy((char *)tmp[x + i], envp[x]); sp += strlen(envp[x]) + 1; } tmp[i + x] = 0x0;