@@ -373,6 +373,8 @@ int inject(int argc, char** argv)
373373{
374374 DWORD target_pid = 0 ;
375375 int i ;
376+ int ret = 1 ;
377+ int is_autorun = 0 ;
376378 shared_mem_t * shared_mem ;
377379 inject_args_t inject_args = { 0 };
378380
@@ -384,6 +386,7 @@ int inject(int argc, char** argv)
384386 { "nohostcheck" , no_argument , NULL , 'n' },
385387 { "ansi" , no_argument , NULL , 'a' },
386388 { "nolog" , no_argument , NULL , 'l' },
389+ { "autorun" , no_argument , NULL , '_' },
387390 { "help" , no_argument , NULL , 'h' },
388391 { NULL , 0 , NULL , 0 }
389392 };
@@ -426,20 +429,21 @@ int inject(int argc, char** argv)
426429 case 'a' : inject_args .ansi_mode = 1 ; break ;
427430 case 'q' : inject_args .quiet = 1 ; break ;
428431 case 'd' : target_pid = atoi (optarg ); break ;
432+ case '_' : is_autorun = 1 ; break ;
429433
430434 case 'l' :
431435 inject_args .no_log = 1 ;
432436 disable_log ();
433437 break ;
434438
435439 case '?' :
436- return 1 ;
440+ goto end ;
437441
438442 case 'h' :
439443 default :
440444 puts (g_clink_header );
441445 puts_help (help , sizeof_array (help ));
442- return 1 ;
446+ goto end ;
443447 }
444448 }
445449
@@ -451,23 +455,24 @@ int inject(int argc, char** argv)
451455 if (target_pid == -1 )
452456 {
453457 LOG_ERROR ("Failed to find parent process ID." );
454- return 1 ;
458+ goto end ;
455459 }
456460 }
457461
458462 // Check to see if clink is already installed.
459463 if (is_clink_present (target_pid ))
460464 {
461- return 1 ;
465+ goto end ;
462466 }
463467
464468 // Write args to shared memory, inject, and clean up.
465469 shared_mem = create_shared_mem (1 , "clink" , target_pid );
466470 memcpy (shared_mem -> ptr , & inject_args , sizeof (inject_args ));
467- i = !do_inject (target_pid );
471+ ret = !do_inject (target_pid );
468472 close_shared_mem (shared_mem );
469473
470- return i ;
474+ end :
475+ return is_autorun ? 0 : ret ;
471476}
472477
473478// vim: expandtab
0 commit comments