@@ -66,10 +66,10 @@ - (void)start {
6666 };
6767
6868 // NOTE: These should never return if successful
69- [self _startProcess: " /bootstrap /bin/bash " arguments: sh_args environment: env];
70- [self _startProcess: " /usr /bin/login" arguments: login_args environment: env];
71- [self _startProcess: " /bin/login " arguments: login_args environment: env];
72- [self _startProcess: " / bin/sh " arguments: sh_args environment: env];
69+ [self _startProcess: @" /usr /bin/login " arguments: login_args environment: env];
70+ [self _startProcess: @" /bin/login" arguments: login_args environment: env];
71+ [self _startProcess: @ " /bin/sh " arguments: sh_args environment: env];
72+ [self _startProcess: @" /bootstrap/ bin/bash " arguments: sh_args environment: env];
7373 } else {
7474 HBLogDebug (@" process forked: %d " , pid);
7575 _childPID = pid;
@@ -93,23 +93,24 @@ - (void)stop {
9393 _childPID = 0 ;
9494}
9595
96- - (int )_startProcess : (const char *)path arguments : (char *const [])args environment : (char *const [])env {
97- NSString *pathString = @(path);
96+ - (int )_startProcess : (NSString *)path arguments : (char *const [])args environment : (char *const [])env {
9897 NSFileManager *fileManager = [NSFileManager defaultManager ];
99- if (![fileManager fileExistsAtPath: pathString]) {
100- HBLogError ( @" %s : File does not exist " , path);
98+
99+ if (![fileManager fileExistsAtPath: path]) {
101100 return -1 ;
102101 }
102+
103103 // Notably, we don't test group or other bits so this still might not always
104104 // notice if the binary is not executable by us.
105- if (![fileManager isExecutableFileAtPath: pathString]) {
106- HBLogError (@" %s : File does not exist" , path);
105+ if (![fileManager isExecutableFileAtPath: path]) {
107106 return -1 ;
108107 }
109- if (execve (path, args, env) == -1 ) {
110- HBLogError (@" %s : exec failed: %s " , path, strerror (errno));
108+
109+ if (execve (path.UTF8String , args, env) == -1 ) {
110+ HBLogError (@" %@ : exec failed: %s " , path, strerror (errno));
111111 return -1 ;
112112 }
113+
113114 // execve never returns if successful
114115 return 0 ;
115116}
0 commit comments